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?

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

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.