在VI中运行一组正则表达式

时间:2011-06-05 16:42:18

标签: vim

我有一个正常的表达式列表,我想在我的C代码文件上运行。它们是简单的格式化内容,在我的代码被审核时可以省去麻烦。

他们在这里

这会在一个空白行中删除2个或更多空行

:%s/\n\{3,}/\r\r/e

这会在评论的末尾添加缺少的空格,例如/ * blah blah * / to / * blah blah * /

:%s/\([^ *]\)\*\//\1 \*\//gc

这会在评论开头添加缺少的空格,例如/ blah blah / to / * blah blah * /请注意,它会忽略/ **

:%s/\/\*\([^  *]\)/\/\* \1/gc

在打开大括号{

后删除空白行
:%s/{\s*$\n\{2,}/{\r/gc

在关闭大括号之前删除空行}

:%s/\n\{2,}\(\s*\)}/\r\1}/gc
注释中的

如果缺少TODO则会在逗号后面添加一个空格,如果没有模式匹配,则会在错误E16中添加

:g/\/\*/ ,/\*\// s/,\([^ ]\)/, \1/gc

我已将这些保存在名为fix.txt的文件中。有没有办法可以一个接一个地从VI中运行它们?

之类的东西
:run fix.txt ?

2 个答案:

答案 0 :(得分:6)

你必须执行:

:source fix.txt

请参阅:help :source

答案 1 :(得分:0)

" put this function in your vimrc file and call them with <leader>f 
" to more information read :help leader
" also read :help keepjumps
fun! FixSourceCode()
  :%s/\n\{3,}/\r\r/e
  :%s/\([^ *]\)\*\//\1 \*\//gc
  :%s/\/\*\([^  *]\)/\/\* \1/gc
  :%s/{\s*$\n\{2,}/{\r/gc
  :%s/\n\{2,}\(\s*\)}/\r\1}/gc
  :g/\/\*/ ,/\*\// s/,\([^ ]\)/, \1/gc
Endfun
nmap <silent> <leader>f :keepjumps call FixSourceCode()<cr>