VIM - несколько команд в одной строке - PullRequest
175 голосов
/ 14 июля 2010

Я пытался найти что-то, что позволило бы мне запускать несколько команд в одной строке в vim, подобно использованию точек с запятой для разделения команд в * nix системах или & в окнах. Есть ли способ сделать это?

Ответы [ 7 ]

224 голосов
/ 14 июля 2010

Бар | позволит вам сделать это.С :help :bar

'|' можно использовать для разделения команд, поэтому вы можете давать несколько команд в одной строке.Если вы хотите использовать '|' в качестве аргумента, перед ним введите '\'.

Пример:

:echo "hello" | echo "goodbye"

Вывод:

hello
goodbye

Примечание: вы можете обнаружить, что ваш ~/.vimrc не поддерживает отображение | или \|.В этих случаях попробуйте использовать <bar>.

78 голосов
/ 30 июня 2013

Положите <CR> (возврат каретки / ввод) между и после команд.Например:

map <F5> :w<CR>:!make && ./run<CR>

Не использовать |, потому что:

  • У некоторых команд возникают проблемы, если после них используется |

  • | не работает согласованно в файлах конфигурации, см. :help map_bar

37 голосов
/ 16 июля 2010

Вы можете определить функцию, которая выполняет ваши команды.

function Func()
     :command
     :command2 
endfunction

И поместить это, например, в ваш vimrc.Запустите функцию с помощью

exec Func()
25 голосов
/ 14 июля 2010

Разделитель команд в vim: |.

14 голосов
/ 14 июля 2010

Я всегда использовал ^J для разделения нескольких команд, нажав Ctrl + v , Ctrl + j .

8 голосов
/ 27 января 2018

Подумал, что это может помочь кому-то, пытающемуся сделать замены в цепочке, и один не сможет

из комментария

% s/word/newword/ge | % s/word2/newword2/ge

Вы можете использовать флаг eигнорировать ошибку, когда строка не найдена.

1 голос
/ 24 апреля 2015

Вы можете создать новый файл и написать свои команды на нем.Затем :so %, что означает исходный текущий файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...