![如何在vim中编写一个命令来运行多个命令?](https://linux22.com/image/39871/%E5%A6%82%E4%BD%95%E5%9C%A8vim%E4%B8%AD%E7%BC%96%E5%86%99%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E6%9D%A5%E8%BF%90%E8%A1%8C%E5%A4%9A%E4%B8%AA%E5%91%BD%E4%BB%A4%EF%BC%9F.png)
我通过将以下内容放入我的.vimrc
文件中编写了一些执行常见功能的命令:
command! FixWhitespace %s/ \+$//g
command! FixCommas %s/,\S\@=/, /g
现在我想创建一个运行这两个命令的第三个命令,但以下命令不起作用:
command! Fix FixWhitespace|FixCommas
当我:Fix
从内部运行时vim
,我收到以下消息:
E488:尾随字符:FixWhitespace|FixCommas
我不确定这个错误消息与我所做的事情有何关系,但我显然没有做正确的事情!
我使用的是 Vim 7.4。
答案1
你需要告诉 vim 使用command! -bar
一个命令后面可以跟另一个带有管道符号的命令|
:
command! -bar FixWhitespace %s/\s\+$//e
command! FixCommas %s/,\S\@=/, /ge
现在就可以了:
command! Fix FixWhitespace|FixCommas
但这不是:
command! Fix FixCommas|FixWhitespace
请参阅:h command-bar
此处了解更多详情。
错误消息E488: Trailing characters: FixWhitespace|FixCommas
是 vim 告诉你它不期望FixWhitespace
命令后面有任何内容的方式。看:h E488
。
顺便说一句,您的FixWhitespace
命令不需要该g
标志,因为该模式在每行上最多可以匹配一次。我还设置了e
标志来抑制恼人的错误消息。看:h s_flags
。