如何自动执行我经常使用的一组 VIM 命令?

如何自动执行我经常使用的一组 VIM 命令?

我正在运行一些用 Markdown 编写的文本文件潘多克获取 html,但它以奇怪的方式呈现标签,标签中有奇怪的换行符和空格,所以我一直在 VIM 中运行一些 sed 命令。

我应该查看 Vimscript 还是宏?或者 shellscript(如果我想将 VIM 命令与 shell Pandoc 命令结合起来)?

我在 Windows 7 上运行 gVIM,并通过常规 Windows cmd shell 运行 Pandoc,尽管我通常从 VIM 内部执行此操作。

答案1

我认为这取决于大多数文件处理和决策的执行位置以及 Vim 之外可用的脚本功能。由于您执行的大多数处理似乎都在运行一系列程序(可能在管道中),因此我倾向于将所有这些放入 shell 脚本或批处理文件中,然后从 Vim 启动。(您写道您使用 sed。您也可以访问 Unix shell 吗?)如果您无法访问 Unix shell,并且发现自己受到批处理文件命令集的限制,那么您可以将所有命令放入 Vim 函数中。将命令放入 Vim 函数比尝试为 Vim 命令或映射引用所有内容更灵活,编程也更简单。

你可以很容易地将 shell 命令放入函数中,就像这样

function Foo()
    !echo "hello"
endfunction

或这个:

function Bar()
    call system('echo "hello"')
endfunction

:help usr_41.txt

尤其是

:help 41.6
:help 41.7

:help system()

了解详细信息。有关命令和映射的详细信息,请参阅

:help usr_40.txt

您可以编写一个命令来调用您的函数,如下所示:

:command Foo call Foo()

这样您就可以执行您的函数

:Foo

答案2

ed编写脚本非常容易。

printf "%s\n" "%s/$/...end/" "g/delete.this.line/d" w q | ed filename

相关内容