Question

Depuis terminal.app de x Au mac ne supporte pas beaucoup des aspects visuels vim, y compris le changement de curseur de bloc en ligne lors du passage en mode insertion, j'utiliser osascript à accopmlisch quelque chose de similaire.

Dans mon fichier .vimrc je l'ai écrit:

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

settings set 11 est un ensemble de réglage de terminal qui a un curseur de ligne et settings set 12 est celui qui a un pointeur de bloc.

Cela fonctionne très bien, mais il y a un petit problème .. Sur InsertLeave le curseur se déplace toujours un caractère vers la gauche, ce qui est un gros problème, mais il peut être Anoying.

J'ai essayé de compenser en mettant autocmd InsertLeave h dans mon .vimrc, mais en vain (il me donne une erreur).

Comment dois-je dire à vim:

  1. ne pas passer à gauche?
  2. si ce qui précède n'est pas possible, pour compenser en déplaçant vers la droite
Était-ce utile?

La solution

Avant de répondre à la question, je vous recommande de jeter un oeil à MacVim (si vous avez pas). Si vous voulez (ou besoin) de coller à la borne, peut-être un autre terminal comme iTerm fournira plus de fonctionnalités. Quoi qu'il en soit, le changement de curseur entre le bloc - barre n'est pas présent dans iTerm (au moins je pense) et votre façon de le résoudre est phénoménal, il est ici maintenant bookmarked. Merci!


Un moyen facile de le résoudre serait d'ajouter une autre autocommand, comme vous avez dit. Mais dans le vôtre, le modèle et la commande correcte pour exécuter sont manquants.

Le h n'est pas une commande. Pour exécuter une séquence mode normal , utilisez la commande :normal. Cela peut fonctionner correctement:

au InsertLeave * normal! h
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top