bet*_*ido 5 c++ linux vim file-type
C ++的标准标头通常安装在/usr/include/c++/4.x中(在Linux中)。由于大多数头文件没有任何扩展名(.h,.hpp等),因此vim无法将这些文件的格式识别为C ++。
我在SO中看到了另一个问题,但是在那里发布的解决方案无法解决我的问题。那里的一种解决方案涉及使用,modeline但是标准的C ++头文件不包含vim友好的签名。相反,它们在第一行中包含以下内容:
// <algorithm> -*- C++ -*-
Run Code Online (Sandbox Code Playgroud)
我想我可以搜索该模式(-*- C++ -*-)以检测文件类型。前面提到的SO问题中发布的另一个解决方案实际上就是朝这个方向发展的。答案建议使用:
au BufRead * if search('MagicPattern', 'nw') | setlocal ft=cpp | endif
Run Code Online (Sandbox Code Playgroud)
所以我尝试做:
au BufRead * if search('-*- C++ -*-', 'nw') | setlocal ft=cpp | endif
Run Code Online (Sandbox Code Playgroud)
但它不起作用(即未检测到文件类型)。
使用这种方法是否可以检测文件类型?是否存在任何插件或其他解决方案?
nm 的答案确实有效,但这更好:
au BufRead * if search('\M-*- C++ -*-', 'n', 1) | setlocal ft=cpp | endif
Run Code Online (Sandbox Code Playgroud)
的额外参数search是stopline,并确保此规则仅应用于具有第 1行模式的文件。
这很重要,因为如果没有停止线,任何包含该模式的文件(包括 vimrc)都将满足匹配要求,并且可能会使用错误的语法规则突出显示。
此外,使用停止线w标志是不必要的。
查看:help search更多信息。
| 归档时间: |
|
| 查看次数: |
1819 次 |
| 最近记录: |