如何将命令从文件发送到 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 文件夹中

相关内容