加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

使用vim检测C标准头文件的文件类型

发布时间:2020-12-15 22:00:25 所属栏目:安全 来源:网络整理
导读:C的标准头文件通常安装在/usr/include / c /4.x(在 Linux中)中.由于大多数标头没有任何扩展名(.h,.hpp等),因此vim无法将这些文件的格式识别为C. 我在SO中已经看到了其他question,但是那里发布的解决方案并没有解决我的问题.其中一种解决方案涉及使用模式,但
C的标准头文件通常安装在/usr/include / c /4.x(在 Linux中)中.由于大多数标头没有任何扩展名(.h,.hpp等),因此vim无法将这些文件的格式识别为C.

我在SO中已经看到了其他question,但是那里发布的解决方案并没有解决我的问题.其中一种解决方案涉及使用模式,但标准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

但它不起作用(即,未检测到文件类型).

是否可以使用该方法检测文件类型?它是否存在任何插件或任何其他方式来解决这个问题?

解决方法

n.m的答案可以解决问题,但这更好:

au BufRead * if search('M-*- C++ -*-','n',1) | setlocal ft=cpp | endif

搜索的额外参数是停止线,并确保此规则仅应用于第1行中具有模式的文件.

这很重要,因为如果没有停止行,任何包含该模式的文件(包括您的vimrc)都将满足匹配,并可能使用错误的语法规则突出显示.

此外,使用停止线w标志是不必要的.

请看:帮助搜索更多信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读