如何在文本文件上执行 vim 命令列表?

nat*_*unt 5 vim

我有一个大约 1000 行长的文本,我有一堆想要应用到它的 vim 命令。许多正则表达式查找和替换的东西。例如:

  • :%s/^[^\$\$]/def
  • :%s/\$\$/
  • %s/='/ = ['

我可以一个一个地复制和粘贴这些命令,但这是我每次收到此文件的新版本时都必须再次执行的工作。我想知道是否有办法保存一长串命令,然后我可以将其应用于文件?谢谢!

Ing*_*kat 5

寄存器

您可以将它们全部放入register,方法是在暂存缓冲区中键入这些命令,然后将它们放入y寄存器中,或者通过显式赋值:

:let @a = "%s///\n%s///"
Run Code Online (Sandbox Code Playgroud)

然后,通过执行 :@a

根据您的 Vim 配置,寄存器内容可能会跨会话 (cp. :help viminfo)保持不变,但您必须小心不要覆盖它们。

脚本

一个更持久和更具可扩展性的解决方案是将命令放入单独的脚本文件中,最好带有.vim扩展名。您可以将它们放在任何地方(除了~/.vim/plugin,除非您希望它们自动执行),然后通过

:source /path/to/script.vim
Run Code Online (Sandbox Code Playgroud)

自定义命令

如果你经常需要一组命令,你可以给它们一个名字并将它们变成一个自定义命令:

:command! MyCommands %s/// | %s///
Run Code Online (Sandbox Code Playgroud)

将其放入您~/.vimrc的:help ftplugin.


LLe*_*ain 1

通常,您可以使用以下命令从 shell 运行 vim 命令

vim -c YourCommandHere