-1

Может кто-нибудь объяснить различные способы выполнения внешних команд, как :! :%! и как поставить их в конец файла? Я понимаю, что :X помещает их после строки X, но :G кажется, не помещает их в конец файла.

Я думаю, я всегда мог запустить команду и добавить ее в файл из командной строки command >> % но будет ли это немедленно отображаться в vim? Есть ли способ лучше?

Я всегда читал, что Vim можно использовать в качестве шестнадцатеричного редактора, но если вы не редактируете в двоичном формате, это может привести к поломке файла ... почему?

1 ответ1

2

[count]G - команда нормального режима, используемая для перемещения курсора на строку [count] , по умолчанию на последнюю строку, если [count] не указано. Вы не можете использовать его как диапазон для команды Ex.

В диапазоне, ярлык для "последней строки" составляет $ .

Разница между :!command и :{range}!command является то , что бывший исполняет command в субоболочке без прохождения ничего к команде через stdin , а последний передает {range} command через stdin и заменяет его на выходе command Он называется фильтром, и вы можете прочитать о нем в :help filter .

Так как вы, кажется, не хотите фильтровать содержимое вашего буфера, правильный шаблон для простого чтения вывода command :!command

:read - это правильная команда, которую нужно использовать, если вы хотите вставить вывод внешней команды в текущий буфер.

Используйте эту команду для вставки вывода команды внешней command ниже текущей строки:

:r!command

Используйте эту команду для вставки вывода команды внешней command ниже строки 15:

:15r!command

Используйте эту команду, чтобы вставить вывод команды внешней command ниже следующего "foo":

:/foo/r!command

Используйте эту команду , чтобы добавить вывод command внешних команд для текущего буфера:

:$r!command

Используйте это, чтобы добавить вывод команды внешней command к текущему буферу:

:0r!command

Смотрите :help :read! и :help range .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .