【发布时间】:2012-08-25 22:54:20
【问题描述】:
当我保存在 vim 中时,我希望能够运行“astyle sourceCodeThatImCurrentlyIn.cpp”。那么 :w 和 :!astyle source.c 的组合?这可能吗?
谢谢, 伊杰
【问题讨论】:
当我保存在 vim 中时,我希望能够运行“astyle sourceCodeThatImCurrentlyIn.cpp”。那么 :w 和 :!astyle source.c 的组合?这可能吗?
谢谢, 伊杰
【问题讨论】:
看看 Vim auto-commands:
:autocmd BufWritePost *.c execute '!astyle' shellescape(expand('%'), 1)
% 替换为当前文件的路径。 BufWritePost 在文件保存后调用。还有BufWritePre在文件保存前做事。
如果您想永久使用它,请将其放入您的 .vimrc 配置文件中。
【讨论】:
%。使用 execute '!astyle' shellescape(expand('%'), 1): in !astyle % in % 特殊字符不会被转义(甚至空格也是特殊的),因此在您想要共享的任何代码中它完全无用。
:auto BufWritePost *.c *.cpp execute '!astyle %'
.c 结尾的文件上。您可以指定由, 分隔的模式:autocmd BufWritePost *.c,*.cpp,*.cc …,或者,更好的是,执行autocmd BufWritePost * if empty(&bt) && index(['cpp', 'c'], &ft)!=-1 | execute '!astyle' shellescape(@%, 1) | endif:这将对任何标识为 C/C++ 源代码文件的文件执行 astyle(包括 *.cc 和您手动执行的文件 @ 987654337@),但不包括非文件缓冲区(这是empty(&bt) 的用途)。