Como fazer o vim mover o cursor um personagem para a direita no insertlive?
Pergunta
Como o terminal.app
do mac os x não oferece suporte a muitos dos aspectos visuais do vim, incluindo a mudança do cursor de bloco em linha ao alternar para o modo de inserção, eu uso osascript
para accopmlisch algo semelhante.
Em meu arquivo .vimrc
eu escrevi:
autocmd InsertEnter * silent !osascript -e 'tell application "Terminal" to set current settings of first window to settings set 11`j
autocmd InsertLeave * silent !osascript -e 'tell application "Terminal" to set current settings of first window to settings set 12`j
onde settings set 11
é um conjunto de configurações de terminal que tem um cursor de linha e settings set 12
é aquele que tem um cursor de bloco.
Isso funciona muito bem, mas há um pequeno problema. Em InsertLeave, o cursor sempre é movido um caractere para a esquerda, o que não é grande coisa, mas pode ser irritante.
Tentei compensar colocando autocmd InsertLeave h
em meu .vimrc
, mas sem sucesso (me deu um erro).
Como devo dizer ao vim para:
- não deslocar para a esquerda?
- se o acima não for possível, para compensar deslocando para a direita
Solução
Antes de responder à pergunta, recomendo que você dê uma olhada no MacVim (se não tiver).Se você quiser (ou precisar) ficar com o terminal, talvez outro terminal como o iTerm forneça mais funcionalidade.De qualquer forma, a mudança do cursor entre bloco - barra não está presente no iTerm (pelo menos acho que sim) e sua maneira de resolver isso foi fenomenal, está marcado aqui agora.Obrigado!
Uma maneira fácil de resolver isso seria adicionar outro comando automático, como você disse.Mas no seu, o padrão e o comando correto para executar estão faltando.
O h
não é um comando.Para executar uma sequência de modo normal , use o comando :normal
.Isso pode funcionar corretamente:
au InsertLeave * normal! h