Como desarmar set -o vi?

26

Eu queria experimentar o modo vi no bash, mas agora gostaria de voltar ao normal.

Como posso desarmar -o vi?

Patryk
fonte

Respostas:

30

As únicas duas interfaces de edição de linha atualmente disponíveis bashsão vimode e emacsmode, então tudo que você precisa fazer é definir o emacsmodo novamente.

set -o emacs
Chris Down
fonte
Deve-se notar que era eu que estava lendo nas entrelinhas, em vez de responder diretamente à pergunta. emacsé o modo de edição de linha padrão no bash. O emacsmodo de configuração desativa o vimodo como um efeito colateral, mas, como mencionado por jlliagre abaixo, você pode realmente desabilitar os dois.
Chris Baixo
25

Isso depende do que você define "normal". Se estiver desativando a edição de linha, a maneira documentada de desabilitar -o vié definir+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

Chris já respondeu se o seu modo normal é o emacs.

jlliagre
fonte
desativar o (s) modo (s) também retira o recurso de histórico do shell, agora não consigo usar as teclas de seta para cima / para baixo para ver o histórico de comandos :(
rsjethani
2
Não tira o recurso de histórico do shell. Você ainda pode visualizar seu histórico com o historycomando e executar comandos anteriores prefixando o número deles com o !caractere.
Jlliagre
Os comandos yes 'history' n family ainda funcionam, mas as teclas de seta para cima / baixo que eu uso com mais freqüência não funcionam. Assim que ligo algum dos modos, as teclas começam a funcionar ... eu não entendo?
rsjethani
3
As setas para cima / para baixo são gerenciadas apenas pelo shell se a edição de linha estiver ativada (ou seja, um dos modos emacs ou vi estiver definido). Caso contrário, as teclas de setas apenas enviam sua sequência de escape não processada.
Jlliagre