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

6
我有一个大约1000行长的文本,我有一堆vim命令需要应用到它上面。很多正则表达式查找和替换。例如:
  • :%s/^[^\$\$]/def
  • :%s/\$\$/
  • %s/='/ = ['
我可以逐个复制粘贴这些命令,但每次收到此文件的新版本时,我都必须再次执行。我想知道是否有一种方法可以保存一长串的命令,然后应用于该文件?谢谢!
2个回答

6

寄存器

你可以将所有命令放入一个 寄存器 中,通过在 scratch 缓冲区中输入这些命令并使用 y 命令复制到寄存器中,或者通过显式赋值来实现:

:let @a = "%s///\n%s///"

然后,通过:@a执行。

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

脚本

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

:source /path/to/script.vim

自定义命令

如果你经常需要一组命令,可以给它们起一个名称并将它们转换成自定义命令

:command! MyCommands %s/// | %s///

把这段代码放到你的~/.vimrc中,或者(如果是特定文件类型),将其制作为:help ftplugin

1
通常情况下,您可以使用以下命令从shell中运行vim命令: vim -c 您的命令
其中,您需要将“您的命令”替换为您要执行的vim命令。

你的意思是我可以编写一个Bash脚本,按顺序执行vim命令来编辑文件? - nathan.hunt
是的,你可以在bash脚本中调用vim命令。 不要犹豫,查看vim手册,它有很好的解释。 - LLenain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接