Редактирование команды оболочки в vim «на лету» из терминала

#shell #vim #zsh #urxvt

#оболочка #vim #zsh #urxvt

Вопрос:

Я только что видел видео, где парень выполнял некоторые команды, а затем ему нужно было отредактировать команду, которую он в данный момент вводил в консоли.

Казалось, что он использовал какой-то ярлык, и строка, которую он набирал, появлялась в буфере vim, готовая к редактированию и выполнению.

Я использую zsh, и мои терминалы на выбор — termite и urxvt. Мне было интересно, как это сделать.

  • Обязательно ли использовать плагин или это можно сделать простым способом?
  • Зависит ли это от используемого терминала или я могу просто использовать оболочку (zsh)

Заранее благодарю вас

Комментарии:

1. Вы можете использовать fc команду в bash или zsh, если хотите отредактировать последнюю введенную команду в редакторе, но, к сожалению, она не откроет введенную в данный момент команду.

Ответ №1:

Я предполагаю, что вы имеете в виду, set -o vi на Bash. Это откроет Vim для редактирования текущего буфера терминала.

 $ export EDITOR=vim
$ set -o vi
$ aaa bbb ccc ## then, type [ESC] and [v], it'll &o to vim buffer.
  

Zsh не открывает Vim, если выполняются вышеуказанные команды.
Но вместо этого она имитирует vim на терминале, и я думаю, что во многих случаях этого достаточно.

Насколько я знаю, Zsh по умолчанию не поддерживает такое поведение, как Bash.

Я нашел похожее обсуждение в reddit, и оно может вам помочь.

Комментарии:

1. Вопрос заключается в zsh . Но bash также имеет функциональность, которую запрашивает OP: readline имеет функцию edit-and-execute-command ; по умолчанию она привязана к C-x C-e .

2. @&re-san Она не открывается vim ; библиотека Readline предоставляет среду редактирования, подобную vim. zle , zsh редактор строк, также предоставляет vi подобный режим редактирования.

Ответ №2:

Итак, есть два способа сделать то, что сработало для меня.

1.) Откройте текущую команду в редакторе vim

Перейдите в свой ./zshrc файл и добавьте:

 export EDITOR=vim

plu&ins=(
  # ...all your other plu&ins
  vi-mode
)
  

Введите команду, нажмите ESC , чтобы перейти в командный режим, а затем нажмите v , чтобы открыть vim.

2.) Используйте команды vim, не выходя из сеанса терминала. Для этого добавьте set -o vi в свою ~/.zshrc конфигурацию.