Как сбросить 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.