我正在运行一些用 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