我正在尝试编写如下命令:
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"