Как сбросить set -o vi?


26

Я хотел попробовать режим vi в bash, но теперь я хотел бы вернуть его в нормальное состояние.

Как я могу сбросить -o vi?

Ответы:


30

В настоящее время доступны только два интерфейса редактирования строки bash: viрежим и emacsрежим, поэтому все, что вам нужно сделать, это emacsснова установить режим.

set -o emacs

Следует отметить, что я читал между строк, а не отвечал на вопрос напрямую. emacsрежим редактирования по умолчанию в bash. Настройка emacsрежима отключает viрежим как побочный эффект, но, как упомянуто jlliagre ниже, вы можете фактически отключить их обоих.
Крис Даун

25

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

$ set -o vi
$ set -o|egrep -w "(vi|emacs)"
emacs           off
vi              on
$ set +o vi
$ set -o|egrep -w "(vi|emacs)"
emacs           off
vi              off

Крис уже ответил, если у вас нормальный режим emacs.


отключение режимов также убирает функцию истории оболочки, теперь я не могу использовать клавиши стрелок вверх / вниз для просмотра истории команд :(
rsjethani

2
Это не убирает особенность истории оболочки. Вы все еще можете просмотреть свою историю с помощью historyкоманды и выполнить предыдущие команды, добавив к их номеру префикс !.
Jlliagre

да, команды 'history' и n family все еще работают, но клавиши со стрелками вверх / вниз, которые я использую чаще, не работают. Как только я включаю любой из режимов, клавиши начинают работать ... Я не понимаю?
rsjethani

3
Стрелки вверх / вниз управляются оболочкой только в том случае, если редактирование строки включено (т. Е. Установлен один из режимов emacs или vi). В противном случае клавиши со стрелками просто отправляют их escape-последовательность без обработки.
Jlliagre
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.