Mapeie a chave de escape para :q no vim no modo normal

Mapeie a chave de escape para :q no vim no modo normal

Eu uso o vim como visualizador no comando da meia-noite e quero visualizar e fechar rapidamente um arquivo. Como posso mapear a chave de escape :qno modo normal para que o vim saia apenas se nada for alterado?

Responder1

Para fazer isso apenas na vimsessão atual, digite os seguintes comandos (in vim). (Espaços foram adicionados para maior clareza. Não digite um espaço, exceto onde indiquei Space.)

:mapSpaceCtrl+ VEscSpace:qCtrl+VEnterEnter

Para fazer isso apenas pelo restante da sessão atual do Terminal, digite os seguintes comandos (no Terminal; ou seja, no shell). (Quebras de linha foram adicionadas para maior clareza. Digite o seguinte em uma linha; não digite Enterexceto onde indiquei Enter.)

E  X  I  N  I  T  =
"  :  m  a  p  Space  Ctrl+ V  Esc  Space  :  q  Ctrl+V  Enter  "  Enter

e então

export EXINITEnter

Para tornar as alterações “permanentes” (ou seja, até você alterar os arquivos novamente), coloque os comandos acima ( EXINIT="…"e export EXINIT) em seu .bash_profilearquivo e/ou .bashrc. (Você pode colocá-los juntos na mesma linha, separando-os com ;. Você pode encurtar isso combinando-os em export EXINIT="…".) Isso não terá efeito até que você faça login novamente, ou possivelmente até que você inicie um novo shell, a menos que você basta digitar os EXINITcomandos ou sourceo arquivo no qual você colocou os EXINITcomandos.

Observação:se você não estiver usando o bash como shell principal, pode ser necessário modificar o acima para o seu shell.

Alternativamente, tente colocar o :map …comando em seu .exrcarquivo.


Caso isso não seja óbvio,

:mapacorda 1 corda 2

(in vi/ vim) cria um mapeamento (tradução) para que, quando você digita (em modo de comando), o editor aja como você digitou . E + é o caractere de superescape que informa tanto / quanto o shell (na verdade, provavelmentestring1string2CtrlVvivimtodosprogramas, ou pelo menos a maioria deles) que o caractere a seguir deve ser interpretado como um caractere textual literal e não como um caractere de controle. Observe que Ctrl+ Vseguido de Enter fornece um caractere de retorno de carro, que geralmente é exibido como ^M; mas, em a , isso é interpretado como an .:map string2Enter

informação relacionada