如何在VIM编辑器中强制关键字自动大写?

6
有人知道如何编辑VIM的语法文件,以便自动将关键字大写吗?我需要这样做来保持我的编码风格与团队中其他开发人员的一致性。
我正在使用VIm 7.2版本(实际上是gVIM),我使用的语法文件是Progress.vim文件(在Syntax目录下自动安装)。我对文件进行了一些微调,因为我不喜欢某些事情的处理方式,但它基本上是相同的。
谢谢。
2个回答

11

尝试:

:help abbreviations
例如:
:iab begin BEGIN

现在无论何时您输入"begin",它都将被替换为"BEGING"。


我需要为每个关键字都这样做吗?还是有一种方法可以对任何被分类为ProgressReserved的东西进行操作(即syn关键字ProgressReserved,它将是Progress语言的保留关键字列表)? - Jason Down
你应该能在$VIMRUNTIME/syntax/progress.vim的语法文件中找到关键字列表,这样你就可以从那里复制粘贴。 - rampion
你们觉得使用字典文件并使用CTRL-P(刚刚了解到这可以实现)是个怎么样的想法? - Jason Down
2
这会产生一个不良的副作用,即关键字在注释中出现时也会被大写。我在一个Fortran项目中尝试了这个方法,现在我编写的文档字符串看起来像这样:INCLUDE extra element and USE L'Hôpital's rule IF x=0 - sigvaldm
如果您尝试同时展开缩写并移动到新行,单词“THEN”在行末会发生一些奇怪的事情。老实说,我认为使用代码检查工具可能是更好的选择。 - William Dawn
显示剩余2条评论

1
这是一个老问题,但我想补充一下。被接受的答案很好,但它没有说明如何将其限制为仅sql文件。@sigvaldm在下面的评论中表明,有些人可能不知道如何做到这一点。
要在vim中完成它,您需要设置一个自动命令:
 augroup sqlite
     autocmd!
     au BufNewFile,BufRead *.sql iab abort ABORT
     au BufNewFile,BufRead *.sql iab autoincrement AUTOINCREMENT
 augroup END

这段代码的作用是,每当您打开以.sql结尾的任何文件时,它都会进行缩写。我在网上找到了一个sqlite关键字的保留字列表,这是我使用的链接,但可能已经失效了,所以请自行搜索:https://github.com/AnanthaRajuC/Reserved-Key-Words-list-of-various-programming-languages/blob/master/language-files/SQLite%20Reserved%20Keywords.md

然后我将其复制粘贴到缓冲区,并设置了一个宏来为所有关键字编写缩写。它运行得非常好。如果您想了解更多有关自动命令的信息:

:help autocmd


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接