Раньше у меня был сотрудник, который был действительно хорош в UNIX.
Он показал мне, как использовать привязки клавиш Vi для редактирования команд моей оболочки.
Он поместил команду в файл, который запускался при каждом входе в систему.
С тех пор я перешел в другой проект.
К сожалению, я не помню, как это настроить.
Есть ли здесь кто-нибудь, кто знает, как использовать привязки клавиш Vi для редактирования команд в терминале?
Как я могу сделать эту настройку постоянной?
vi bindings in the shell
это величайшая особенность, когда-либо изобретенная!jj
с ,ESC
как мы обычно делаем в Vim?Если вы используете bash, как уже ответил Джахрой и злой отто, вы можете использовать
заставить bash использовать команды редактирования в стиле vi.
Как только вы это сделаете, вы можете набрать, Esc vчтобы запустить редактор vi с временным файлом, содержащим копию текущей командной строки. Вы можете редактировать команду, даже заменяя ее несколькими строками; когда вы сохраняете файл (
:wq
), оболочка выполнит отредактированные команды.Если вы предпочитаете
Вы можете использовать, Ctl-XCtl-Eчтобы сделать то же самое. Он будет использовать ваш предпочитаемый редактор
$EDITOR
, не обязательно emacs.(Лично я использую vi (фактически vim) для большей части моего редактирования, но я предпочитаю
set -o emacs
в оболочке; переключение в режим вставки и выход из него отлично подходит для редактирования файлов, но неудобно для интерактивных команд. YMMV.)источник
set -o emacs
не делает то, что ты хочешь?Вы можете использовать,
set -o vi
чтобы изменить свои команды редактирования строки как @jahroy, но вы можете подумать оfc
команде (доступной в bash, и я думаю, что ksh, но, вероятно, не tcsh), которая поместит предыдущую команду в редактор (FCEDIT или EDITOR). , который вы, вероятно, установили на vi) и затем выполняете команду при выходе из редактора. Смотрите man-страницу илиhelp fc
для деталей, или просто попробуйте.источник
alias r='fc -e -'
является ценным псевдонимом для повторного запуска предыдущих команд.fc
сам по себе возник в оболочке Korn, я считаю. Вы можете указать команды по номеру (fc 123 129
для редактирования команд с номерами от 123 до 129 в истории). Вы можете указать относительные числа (fc -10 -1
для редактирования последних 10 введенных команд). Вы можете перечислить предыдущие команды с помощьюfc -l
. Вы можете указать команду с помощью префикса сr
псевдонимом (r make
запускает последний вызовmake
; также,r m
если вы не запускалиmv
команду с момента последнего запуска иmake
т. Д.).Чтобы отредактировать последнюю использованную команду в vim и вызвать отредактированную версию после сохранения и выхода из редактора, используйте
fc
встроенную оболочку. Без каких-либо аргументов будет сделано следующее:/tmp
и заполняет его последней набранной командой:cquit
).Команда работает как в bash, так и в zsh.
источник
На самом деле, это на самом деле величайшая особенность когда-либо. Есть еще кое-что:
Создайте файл с именем
содержащий строку
Editline , это библиотека лицензированных версий BSD, которая предоставляет сервисы, похожие на readline. Этот .editrc установит ваши сочетания клавиш в режим vi в оболочке командной строки MySQL или в любом приложении, которое не использует readline.
Я несколько забывался с годами, поэтому мой .zshrc предоставляет некоторые обертки для режима vi, чтобы показать мне, в каком режиме я нахожусь в командной строке. Мило.
Я знаю в зш можно набрать
и получите список сочетаний клавиш. Я уверен, что у bash должно быть что-то похожее. Не все клавиши vi связаны по умолчанию. Свяжите их так, как считаете нужным, и отправляйтесь в гонки.
источник
в вашем терминале введите
export EDITOR=vi
.Чтобы сохранить эту настройку. поместите эту строку в файл ~ / .profile
источник
$EDITOR
)vi
. Он не позволяет редактировать команды оболочки с помощьюvi
(по крайней мере, не напрямую).$EDITOR
естьvi
. Я думаю, что это единственная оболочка, которая делает это.