Como fazer o vim mover o cursor um personagem para a direita no insertlive?

StackOverflow https://stackoverflow.com/questions/5841646

  •  27-10-2019
  •  | 
  •  

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:

  1. não deslocar para a esquerda?
  2. se o acima não for possível, para compensar deslocando para a direita
Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top