如何在vim中编写一个命令来运行多个命令?

如何在vim中编写一个命令来运行多个命令?

我通过将以下内容放入我的.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

相关内容