如何從檔案發送命令到VIM?

如何從檔案發送命令到VIM?

這是以下內容cmd.txt

:w 2.txt
:q

在命令列中,我這樣做

D:\>vim 1.txt<cmd.txt

我希望 cmd.txt 作為輸入流(而不是我的鍵盤),vim 會將 1.txt 儲存為 2.txt,然後退出。

然而它不起作用。 Vim 說輸入不是來自終端並凍結。

我想從外部文件發送命令。這個怎麼做?

更新:

我想做的就是替換很多模式。我有一個關於 NBA 歷史的文件,其中球隊的名稱指的是城市,我想將其更改為“姓氏”。

我以某種方式產生了替換命令(30 條規則/行):

:%s/\v<Boston>/Celtics/g
:%s/\v<Brooklyn>/Nets/g
:%s/\v<New York>/Knicks/g
:%s/\v<Philadelphia>/76ers/g
:%s/\v<Toronto>/Raptors/g
:%s/\v<Golden St>/Warriors/g
:%s/\v<LA Clippers>/Clippers/g
:%s/\v<LA Lakers>/Lakers/g
:%s/\v<Phoenix>/Suns/g
:%s/\v<Sacramento>/Kings/g
:%s/\v<Chicago>/Bulls/g
:%s/\v<Cleveland>/Cavaliers/g
:%s/\v<Detroit>/Pistons/g
:%s/\v<Indiana>/Pacers/g
:%s/\v<Milwaukee>/Bucks/g
.....

我想將檔案輸入到vim來執行這些命令。我不想手動輸入這些命令。

我可以用另一種方​​式產生規則並將其輸入到其他程序,甚至編寫一個簡單的程序來進行替換。但如果可以在 Vim、Powershell 或我最近學習的 Total Commanders 中完成,我將不勝感激。

答案1

您可以使用-s命令列選項來執行此操作:

vim -s cmd.txt 1.txt

然而,Teun Vink 的評論仍然有效。你到底想做什麼?這聽起來很經典X->Y 問題

答案2

我知道這篇文章是舊文章,但 @Gqqnbig 所要求的是可能的。

只需將您想要經常執行的命令清單儲存到檔案中即可。理想情況下給它一個 .vim 副檔名,例如 nbaEdits.vim

在資料檔案中,您想要執行的命令只需從 VIM 命令列發出此命令(我只透過 Windows 嘗試過此操作):

:source c:\myVimCommands\nbaEdits.vim

**以上假設您的命令檔位於 c:\myVimCommands 的資料夾中

相關內容