В трекере ошибок Gnats есть команда (edit-pr), которая открывает тикет в $ EDITOR. Мой $ EDITOR - это VIM, и когда эта команда открывает тикет в $ EDITOR, я хотел бы автоматически выполнить некоторые скриптовые изменения без необходимости каких-либо дополнительных нажатий клавиш.
Есть ли способ написать сценарий VIM, который можно запустить не в интерактивном режиме, как это?
Даже если вы уже получили ответ на свой вопрос, другие могут найти это полезным.
Команды Vim также могут быть указаны в файле, который выполняется с помощью
-s
опции:Пример:
Это будет использовать Vim для отступа содержимого файла, сохранения и выхода.
источник
Команды Vim могут быть указаны в командной строке при запуске программы следующим образом:
Вы можете продолжать добавлять команды, добавляя
"+[cmd]"
аргументы. Вы можете либо закончить там, и редактор откроется, запустить эти команды и ждать, или вы, или вы можете добавить,"+:wq"
чтобы сохранить и закрыть файл.Вы также можете написать сценарий с использованием синтаксиса vimscript и заключить его в функцию, вызываемую при открытии файла, или в отдельный сценарий для импорта и применения к буферу, используя приведенный выше синтаксис.
источник
Для выполнения VIM в не интерактивном режиме, вы можете использовать или
+{command}
/-c {command}
или-s
параметр , который позволит вам выполнять команды VIM после первого файла считаны.Проверьте несколько примеров ниже.
Простой стандартный ввод и вывод с использованием каналов может быть достигнут командой:
Чтобы отредактировать один файл и сохранить изменения в другом:
Чтобы редактировать файл на месте, вы можете использовать его
-s {scriptin}
для чтения файла сценария, например:Чтобы проанализировать файл и отправить его на конвейер, вы можете попробовать следующее:
или:
Подробнее: Как редактировать файлы не в интерактивном режиме (например, в конвейере)? на Vim SE
источник
:hi
прокручивается и показывает-- More -- SPACE/d/j: screen/page/line down, b/u/k: up, q: quit
? Он не появляется в списке буферов, и запись с записью:w
приводит к пустому файлу (и нажатие клавиши 'enter' заставляет пейджер прокручиваться или выходить.) Я могу использовать:redir! >file | :hi | :redir END
, который захватывает столько, сколько я прокручиваю. Я думаю, что это может работать механически, как в двух направленияхmore
. Я должен задаться вопросом, почему:help
и:hi
не оба страничных или RO-буферизованы ...