Як відправити команди з файлу в VIM?


1

Це зміст 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, Powershell, або Total Commanders я навчаюся останнім часом.


2
Vim - це інтерактивний редактор, тому те, що ви намагаєтеся зробити, не працюватиме. Це дуже схоже на те, що ви використовуєте неправильний інструмент, щоб отримати щось зроблене. Що саме ви намагаєтеся досягти?
Teun Vink

Відповіді:


1

Ви можете зробити це за допомогою -s параметр командного рядка:

vim -s cmd.txt 1.txt

Проте, коментар Теуна Вінка все ще діє. Що ви насправді намагаєтеся зробити? Це звучить як класичний Проблема X- & gt; Y .


Ну, моя відповідь показує вам, як це зробити, якщо ви дійсно хочете використовувати Vim, але, можливо, краще навчитися використовувати sed для такого роду робіт.
Heptite

Я знаходжу нову команду. Якщо вміст файлу є i123<esc>:w і я запускаю його :source!, 123<esc>:w вказується дословно. Це вказує <esc> не перекладається до & lt; kbd & gt; esc & lt; / kbd & gt; . Що таке правильний спосіб запису & lt; kbd & gt; esc & lt; / kbd & gt; ключ?
Gqqnbig

Ви повинні будете вставити сировинний символ безпосередньо у файл. Ви можете зробити це з Vim, натиснувши control-v , а потім натискання кнопки escape під час вставки.
Heptite

Спасибі, і тут я знаходжу документацію :help i_CTRL-V.
Gqqnbig
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.