2013-08-26 2 views
5

Предположит, я хочу, чтобы ввести многострочную команду через Баш я знаю, что я могу добавить \ в конце строки, чтобы ввести новую строкутекстовый режим редактора для вызова команды Баша

однако можно ввести законный «режим текстового редактора», где вам даже не нужно вводить \ и просто нажмите enter, будет достаточно

eg..you введите команду в командной строке, а затем перед вводом параметров вы нажмете какую-нибудь волшебную кнопку, которая позволяет вам для входа в режим, подобный vi, тогда вы вводите материал в режим «vi», после чего вы выходите, а затем текст, введенный вами в режиме «vi», превращается в параметры команды, затем вы нажимаете enter, тогда команда выполняет

можно ли это сделать в командной строке bash? если да, то как мне это сделать?

ответ

5

См man bash:

edit-and-execute-command (C-xC-e) 
      Invoke an editor on the current command line, and execute the 
      result as shell commands. Bash attempts to invoke $VISUAL, 
      $EDITOR, and emacs as the editor, in that order. 

По-умолчанию Баш настроен на режим Emacs, отсюда Emacs, как команда C-хс-е.

Если вам действительно нравится vi, вы также можете установить свой bash в режим vi: set -o vi. Это позволяет вам выполнять обычную линию, редактируя vi, не вызывая явного редактора.

+2

Обратите внимание, что в режиме '' '' '' edit-and-execute-command' больше не привязан к 'C-xC-e' (или чему-либо) по умолчанию. – chepner

+1

@chepner не ' v' сделать это в режиме vi? – FDinoff

+0

Когда я запускаю 'bind -p', он указан как« не связанный »(для любой раскладки клавиатуры, что я могу сказать), но, конечно,' v' действительно работает. – chepner

1

Bash может эмулировать Vim режим (хотя и не очень хорошо) с:

set -o vi 
1

Вы можете редактировать предыдущую команду в vi или редактор по умолчанию с помощью команды fc. Это всплывает окно редактора, и когда вы выходите из него, выполняется отредактированная команда. Этот режим может использоваться многократно для редактирования сложной команды.

Смежные вопросы