C++ 的标准头文件通常安装在 /usr/include/c++/4.x(在 Linux 中)。由于大多数头文件没有任何扩展名(.h、.hpp 等),vim 无法将这些文件的格式识别为 C++。
我在 SO 中看到了另一个问题,但是那里发布的解决方案并不能解决我的问题。一种解决方案涉及使用modeline
但标准 C++ 标头不包含 vim 友好的签名。相反,它们在第一行中包含以下内容:
// <algorithm> -*- C++ -*-
我想我可以搜索该模式 ( -*- C++ -*-
) 以检测文件类型。前面提到的 SO 问题中发布的另一个解决方案实际上是朝着这个方向发展的。答案建议使用:
au BufRead * if search('MagicPattern', 'nw') | setlocal ft=cpp | endif
所以我试图做:
au BufRead * if search('-*- C++ -*-', 'nw') | setlocal ft=cpp | endif
但它不起作用(即未检测到文件类型)。
是否可以使用该方法检测文件类型?它是否存在任何插件或任何其他方式来解决这个问题?