Як відправити команди з файлу в 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.