Vim autocmd(保存文件、运行代码格式化程序、重新加载文件)
我希望将源代码格式化程序与Vim集成。以下两个选项中的任何一个都足够了Vim autocmd(保存文件、运行代码格式化程序、重新加载文件),vim,uncrustify,Vim,Uncrustify,我希望将源代码格式化程序与Vim集成。以下两个选项中的任何一个都足够了 格式化我当前正在编辑的代码(即当按下gq时) 在保存文件时格式化代码,然后将格式化文件重新加载到当前Vim窗口中 备选方案1更可取。我试过了 set formatprg=uncrustify\ -c ~/misc/uncrustify.cfg --no-backup i、 我用命令行选项调用Uncrustify。 这是行不通的。Vi给出了E518:未知选项:~/misc/uncrustify.cfg错误 对于选项2,我在v
gq
时)set formatprg=uncrustify\ -c ~/misc/uncrustify.cfg --no-backup
i、 我用命令行选项调用Uncrustify。
这是行不通的。Vi给出了E518:未知选项:~/misc/uncrustify.cfg
错误
对于选项2,我在vimrc文件中尝试了以下内容
autocmd bufwritepost *.cpp ! ~/bin/uncrustify -c ~/misc/uncrustify.cfg --no-backup <afile>
autocmd bufwritepost*.cpp~/bin/uncrustify-c~/misc/uncrustify.cfg--无备份
文件在保存后格式化,但我必须手动将文件重新加载到Vim中。您是否尝试过转义空白:
:set formatprg=uncrustify \-c\~/misc/uncrustify.cfg \--无备份
更新
uncrustify
将“解析:170字节…”消息打印到stderr,因此我们需要将其重定向到/dev/null
:
:set formatprg=uncrustify \-c\~/misc/uncrustify.cfg \-l\CPP \-无备份\2>/dev/null
gq
对行进行操作,因此您可以在可视模式下选择必要的行并执行gq
。例如,如果要重新格式化整个文件,请执行ggVGgq
更多信息请访问
:帮助gq
,以删除VI错误。我还必须添加-l选项以将语言指定为CPP,因为uncrustify的输入来自stdin。但是,在vi中按gq不会格式化文件。如果我再次按下它,那么只有当前行被格式化,下面的行被添加到正在编辑的文件中——“解析:来自stdin的57个字节(57个字符)作为语言CPP”。我想我缺少的是如何配置formatprg命令来读取整个文件,然后防止将上述行输出到正在编辑的文件中。