Как мне отредактировать текущую команду оболочки в VI


31

Я видел в блогах на компьютерах с Linux, что вы можете редактировать текущую команду оболочки bash в VI (или независимо от того, на что установлен EDITOR), нажимая ctrl-x, ctrl-e.

Это не похоже на работу на 10,8. Любые идеи о том, как редактировать текущую команду bash в редакторе по умолчанию?


Это должно работать в 10,8 (по крайней мере, для меня). Вы пытались сбросить FCEDIT и РЕДАКТОР?
nohillside

Документация для C-xC-e находится здесь - что находится в вашей VISUALпеременной?
Гленн Джекман

это не около 10,8. Я на 10,8, и он отлично работает со мной. Я ничего не изменил в своем .bash_profile, чтобы включить это.
Винсент


1
Я только что понял, что выполняю Ctrl + (x, e) (удерживая Ctrl, нажимая x, нажимая e, освобождая элемент управления) - вот почему это не сработало для меня. Когда я переключился на нажатие двумя четкими мазками Ctrl-x, отпустил Ctrl, Ctrl-e - тогда все стало работать отлично!
Димитрий К

Ответы:


32

Вы хотите set -o vi(добавить его в свой ~/.bashrc). Затем, чтобы редактировать текущую строку, просто нажмите, Escчтобы войти в командный режим.

См. Http://www.gnu.org/software/bash/manual/bashref.html#Readline-vi-Mode

Чтобы редактировать текущую команду в полноэкранном редакторе, установите VISUAL переменной среды значение vim(я полагаю, что вы хотите vim), а затем в командном режиме в текущем комментарии нажмите v.


5
нажатие на «v» было секретным соусом, которого мне не хватало. Спасибо.
Скотт Уолтер

2
Можно ли получить эту vкоманду в режиме emacs (не-vi)?
Алекс Кан

10
Просто нажмите Ctrl-X, затем Ctrl-E.
Албапа

7

Ваш edit-and-execute-command не можете быть привязаны к viрежиму. Пытаться:

bind -m vi-insert '"\C-x\C-e": edit-and-execute-command'

Чтобы сделать его постоянным, добавьте эту строку в ваш ~/.inputrcфайл.

(с помощью этого ответа ; ссылка на @unforgettableid за ссылку)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.