如何在命令列上使用 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"

相關內容