Это содержание cmd.txt
:
:w 2.txt
:q
В командной строке я делаю
D:\>vim 1.txt<cmd.txt
Я ожидаю cmd.txt в качестве входного потока (а не моей клавиатуры), и vim сохранит 1.txt как 2.txt, а затем завершит работу.
Однако это не работает. Vim говорит, что ввод не с терминала, и зависает.
Я хочу отправлять команды из внешнего файла. Как это сделать?
Обновлять:
Я хочу заменить много шаблонов. У меня есть файл, в котором говорится об истории НБА, где название команды ссылается на город, и я хочу изменить его на «фамилию».
Я каким-то образом сгенерировал команды подстановки (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
Однако комментарий Теуна Винка все еще актуален. Что вы на самом деле пытаетесь сделать? Это звучит как классикаПроблема X->Y.
решение2
Я знаю, что этот пост старый, но то, о чем просит @Gqqnbig, возможно.
Просто сохраните список команд, которые вы хотите часто выполнять, в файл. В идеале дайте ему расширение .vim, например nbaEdits.vim
В файле данных, над которым вы хотите выполнить команды, просто введите эту команду из командной строки VIM (я пробовал это только через Windows):
:source c:\myVimCommands\nbaEdits.vim
**Выше предполагается, что ваш командный файл находится в папке c:\myVimCommands