![Mapeie a chave de escape para :q no vim no modo normal](https://rvso.com/image/1449094/Mapeie%20a%20chave%20de%20escape%20para%20%3Aq%20no%20vim%20no%20modo%20normal.png)
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 :q
no modo normal para que o vim saia apenas se nada for alterado?
Responder1
Para fazer isso apenas na vim
sessã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.)
: m a p Space Ctrl+ V Esc Space : q Ctrl+V Enter Enter
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 EXINIT
Enter
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_profile
arquivo 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 EXINIT
comandos ou source
o arquivo no qual você colocou os EXINIT
comandos.
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 .exrc
arquivo.
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, provavelmentestring1
string2
CtrlVvi
vim
todosprogramas, 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
string2
Enter