A principal razão pela qual eu gosto do vim sobre o emacs é que a distância do meu movimento da mão para longe da linha inicial é muito baixa (mesmo como programador). No entanto, a única vez que faço isso é sair do modo de inserção pressionando Escape.
Recentemente, aprendi que posso usar Ctrl + C para sair do modo de inserção também. No entanto, isso não é realmente uma melhoria.
Como posso sair do modo de inserção sem que minhas mãos saiam da linha de casa e sem afetar enormemente o que tenho a capacidade de digitar? Nota: Eu uso um vim principalmente de baunilha com um layout de teclado dvorak, embora eu adoraria ouvir soluções para um layout qwerty também.
key-bindings
insert-mode
keyboard-layout
escape
durron597
fonte
fonte
Respostas:
Uma ligação comum que você verá é jj , porque funciona bem para layouts QWERTY se você usar o posicionamento da linha inicial.
Nesse caso, para digitar um literal
jj
- você deve esperar 1 segundo (por padrão) entre digitar o segundo caractere. (veja:help 'timeout'
para detalhes)Também existe o
c-o
que o tirará da inserção, permitindo que você execute um comando normal e, em seguida, o coloque de volta na inserção.http://vim.wikia.com/wiki/Avoid_the_escape_key
fonte
j
é ac
chave. Portanto, isso não seria muito ruim (para digitarcc
). Eu também poderia vincularhh
(qwertyj
key = dvorakh
), que só me inicializaria se eu estivesse digitandoshhhhhhh
ou algo assim.jk
? Encontre duas teclas adjacentes em Dvorak, mas não combinações comuns no seu idioma preferido.tn
, por exemplo, é o equivalente posicional dejk
.jk
/kj
saio do modo normal, mesmo em Dvorak; elas são as teclas "c" e "v" em um teclado QWERTY; portanto, são fáceis para meu ponteiro esquerdo e dedos médios.ii
vez disso, use . Sim, você precisa tirar os dedos da fila de casa, mas ainda assim é confortável. E ainda mais crucialmente, você pode alternar entre os modos sem mover o dedo.Além das alternativas embutidas
<C-[>
e<C-c>
da<Esc>
chave citada por outros, outra solução popular é remapear<CapsLock>
como uma fuga adicional. Isso tanto em um teclado Qwerty quanto em Dvorak.Dessa forma, você pode pressionar Esc com muita facilidade com o dedo mindinho esquerdo, sem remover as mãos do HomeRow (aliás, o CapsLock é onde o Escape costumava estar nos teclados quando o vi foi inventado).
O mapeamento pode ser feito:
no Linux, varia de acordo com o ambiente de desktop. Por exemplo, no Linux Mint / Cinnamon é apenas uma questão de selecionar a opção apropriada no comportamento do Menu-> Teclado-> Layout do Teclado-> Caps Lock. Como alternativa, mas com menos facilidade, ele pode ser remapeado no nível do Xorg usando o programa xmodmap e executando o seguinte
.Xmodmap
arquivo:O sistema pode ser configurado para executá-lo automaticamente em cada login, colocando estrategicamente as seguintes linhas de script de shell (supondo que
.Xmodmap
esteja no seu diretório inicial~
) na cadeia de arquivos de origem automática de login:No entanto, é complicado, porque os arquivos de origem variam de acordo com o ambiente (desktop) usado. Como exemplo, eu tenho o xmodmap chamado como uma entrada nos "Aplicativos de Inicialização" do Cinnamon (o que me permite fazer mais do que a personalização padrão de remapeamento da chave da GUI).
Algumas pessoas vão ainda mais longe e programam a tecla CapsLock para se comportar:
Ctrl
tecla pressionando e segurandoEsc
tecla pressionando e soltando-a rapidamente.Isso pode ser feito no Windows e Mac configurando / programando adequadamente o utilitário de remapeamento correspondente (especificamente para obter dicas sobre AutoHotkey aqui e para verificar KeyRemap4MacBook aqui ). No Linux, usando o programa xcape .
fonte
Ctrl
tecla (na posição regular) sem torcer o dedo mindinho: você pode pressioná-lo com a palma da mão externa, como está bem descrito aqui (eu encontrei esse truque inteligente na 'Net, hora de dar voltar :) e parabéns a quem o inventou)Ctrl
aAlt
(Cmd
) e vice-versa, então<C-[>
realmente brilha. O mindinho é fraco, o polegar é forte. No QWERTY, você nem precisa sair de casa para isso, no Dvorak não é tão bom, mas aceitável.Os mapeamentos que eu uso são:
Dessa forma, você pode simplesmente pressionar je kao mesmo tempo, sem ter que se preocupar com qual deles pressiona primeiro.
fonte
<C-[>
e<C-c>
são duas alternativas nativas para<Esc>
.Veja
:help i_<esc>
e o:help i_ctrl-c
que explica a diferença entre<C-c>
e<Esc>
.fonte
<C-[>
tem uma simetria agradável (os dois dedinhos se movendo em direções opostas).<C-c>
não é exatamente o mesmo que<Esc>
.<C-c>
pode sutilmente quebrar plugins e autocmds.Você pode mapear Caps Lockpara Control sem usar nenhum programa externo :
setxkbmap -option caps:ctrl_modifier
Isso traz Controlpara a linha inicial, facilitando a pressão de todos os traços modificados pelo Controle, incluindo Ctrl-[e Ctrl-Cque saem do modo Inserir no Vim.
Como alternativa, na parte inferior de sua resposta, Giovanni sugere mapear Caps Lockpara executar ambos Control e Escape dependendo do tamanho da impressora, mas isso requer a instalação de software extra.
fonte
Eu sugeriria usar meu plugin vim-easyescape .
O problema com uma sequência simples de mapas
inoremap jj <ESC>
é que o Vim será pausado sempre que você digitar jou kno modo de inserção (ele está aguardando a próxima chave para determinar se é necessário aplicar o mapeamento). A pausa causa distração visual que você pode ou não perceber. O vim-easyescape não tem esse problema e suporta tempo limite personalizado.fonte
No terminal vi e Vim, alt+
single-normal-mode-key
funcionará para edições rápidas na maioria dos terminais.Isso funciona porque a maioria dos terminais envia o modificador alt como o caractere de escape. Por exemplo, quando você digita, alt+ko emulador de terminal envia dois caracteres para o programa em execução:
esc
,k
. Vi e Vim interpretam isso como você esperaria; ele sai do modo de inserção (por causa do escape) e executa o comando do modo normal (no exemplo, movendo o cursor uma linha acima).Essa pode ser uma maneira conveniente de sair do modo de inserção se o teclado tiver a tecla alt ao lado da barra de espaço (para que possa ser pressionada com o polegar, deixando os dedos na linha inicial), desde que você esteja usando um emulador de terminal com esse comportamento e não se importe de executar um comando no modo normal.
fonte
single-normal-mode-key
? Você quer dizer Escape?FWIW eu uso:
Parece semelhante a acertar Return. Também uso
;
como líder para outros mapeamentos no modo de inserção.A única vez que eu precisei digitar ';' + letra é quando o código de golfe; Eu não tive nenhum conflito de outra maneira.
fonte
Uso o Ctrl+ 3há bastante tempo, acho mais fácil digitar do que a maioria das alternativas e parece funcionar bem (pelo menos no Linux). Meu Caps Locké mapeado para Ctrl, portanto, é muito confortável digitá-lo.
Tentei usar o Ctrl+ cpor algum tempo, mas tive alguns problemas com os quais não me lembro exatamente agora, mas não estava obtendo exatamente o mesmo comportamento que Esc, como acontece agora com o Ctrl+ 3.
fonte
Esc
no Vim de baunilha. Eu o encontrei empiricamente testando combinações, não sei detalhes sobre como os internos funcionam.Se você possui um teclado em inglês dos EUA, pressionar Ctrl- [é equivalente a pressionar Esc. Isso fornece uma maneira fácil de sair do modo de inserção. Alternativamente, use Ctrl- c.
Se você vim no modo fácil (
-y
), pressione Ctrl- l(Control-L) para sair do modo de inserção.Também há Ctrl+ oque sairá temporariamente do modo de inserção apenas para executar um comando e retornar ao modo de inserção (consulte
:help i_CTRL-O
:)Ou Ctrl+ r, mas é apenas para inserir o conteúdo do registro ou expressão, por exemplo Ctrl+ r, =5*5(ver:
:help i_CTRL-R
,:help c_CTRL-R
e pós stackoverflow ).Leia mais em: Evite a tecla de escape na vim wikia
fonte
Ctrl+r
serve para inserir registros (incluindo a expressão=
reg). Se você deseja executar temporariamente um comando único, useCtrl+o
.Eu me conformei
<A-e>
com a fuga:Editar: Acabei de descobrir sobre o
<C-\><C\n>
que o envia ao modo normal a partir de qualquer outro modo. Ele também tem um comportamento geral melhor. Os mapeamentos se tornam:fonte
Eu remapeio a aba para sair. Eu acho que historicamente é onde a chave esc costumava estar, então eu a usei e nunca olhei para trás. Quase nunca preciso inserir uma guia em um documento e, quando o faço, pressiono shift + tab. Nunca perdi uma vez a encadernação da guia original.
fonte