如何在命令行上使用 vim 将文本添加到文件中间?

如何在命令行上使用 vim 将文本添加到文件中间?

我正在尝试编写如下命令:

vim -c "XXXXXX" myFile

我想向 vim 提供一些命令,而不是“XXXXX”,以将一些文本添加到文件中的任意点,既可以通过指定确切的行号,也可以在不同的情况下通过搜索特定行,然后插入上面的线。

我想做的是一种巧妙的“附加”,我可以将行附加到脚本内的代码块或函数。最终我的目标是有一个安装脚本,它将改变大约十几个系统文件。

理想情况下,它只涉及一个 -c 标志,并且理想情况下,任何可以理解正常模式命令的人都可以阅读 - 在我的脑海中,我最初的想法是"ggjjjiInsertingOnLine4:wq"一旦我可以将其进入正常模式。

答案1

命令行范围可用于选择需要编辑的特定行。然后可以使用替代模式来执行编辑(追加)。

例如,要在第 3 行的开头附加文本“hi”:

vim -c "3 s/^/hi/" -c "wq" file.txt

要在第 3 行末尾添加文本“hi”:

vim -c "3 s/$/hi/" -c "wq" file.txt

要查找更多选项和解释:

vim -c "help cmdline-range"

更多例子

要查找搜索字符串“hi”并在第 3 行附加字符串“everyone”:

vim -c "3 s/\(hi\)/\1 everyone/" -c "wq" file.txt

要查找搜索字符串“hi”并在第 3 行添加字符串“say”:

vim -c "3 s/\(hi\)/say \1/" -c "wq" file.txt

如果行号未知,要在每一行上附加第一次出现的字符串“hi”,并添加“all”:

vim -c "1,$ s/\(hi\)/\1 all/" -c "wq" file.txt

要在每一行中附加所有出现的字符串“hi”,请使用“all”:

vim -c "1,$ s/\(hi\)/\1 all/g" -c "wq" file.txt

有关替换的更多信息:

vim -c "help substitute"

相关内容