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

26

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

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

Patryk
источник

Ответы:

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.

jlliagre
источник
отключение режимов также убирает функцию истории оболочки, теперь я не могу использовать клавиши стрелок вверх / вниз для просмотра истории команд :(
rsjethani
2
Это не убирает особенность истории оболочки. Вы все еще можете просмотреть свою историю с помощью historyкоманды и выполнить предыдущие команды, добавив к их номеру префикс !.
Jlliagre
да, команды 'history' и n family все еще работают, но клавиши со стрелками вверх / вниз, которые я использую чаще, не работают. Как только я включаю любой из режимов, клавиши начинают работать ... Я не понимаю?
rsjethani
3
Стрелки вверх / вниз управляются оболочкой только в том случае, если редактирование строки включено (т. Е. Установлен один из режимов emacs или vi). В противном случае клавиши со стрелками просто отправляют их escape-последовательность без обработки.
Jlliagre