Bon guide sur les scripts VIM?

J’ai utilisé VIM pendant plus de 10 ans, mais jamais vraiment dans le scripting VIM (toujours subjectivement en pensant que c’était un domaine où VIM était plus faible que Emacs).

Récemment, la réalisation “dans un script VIM, je peux exécuter des commandes en mode normal” m’a fait penser “a-ha” et a soudainement compris pourquoi certaines parties du script VIM sont comme ça.

normal ma10jd'a20kp 

est beaucoup plus élégant que

 Marker m = currentLocation(); advanceLines(10); Buffer b = delete(currentLocation(), m); advanceLines(-20); insertBuffer(b); 

Maintenant, la question est la suivante: quelle est la bonne ressource pour apprendre les scripts vim?

Merci!

Le meilleur conseil que je puisse donner est que vous lisiez:

 :help usr_41.txt 

ce qui vous donnera un bon aperçu des bases. Trouvez ensuite certaines choses que vous voulez faire et créez des fonctions pour eux. Pendant que vous faites cela, faites un usage intensif de:

 :help function-list 

pour avoir une idée de ce que sont toutes les fonctions intégrées. La plupart d’entre elles sont assez similaires aux autres langages de script (bien que leur syntaxe soit plus dure), donc toute expérience de manipulation de texte en python ou autre sera utile.

De plus, consultez la page des scripts vim et Google pour obtenir des exemples de scripts existants qui vous aideront à approfondir vos connaissances.

Enfin (et sans doute le plus important), n’ayez pas peur de poser des questions sur stackoverflow ou sur la liste de diffusion de Vim et il y aura beaucoup de soutien pour tous les problèmes que vous pourriez avoir.

Learn Vimscript the Hard Way vaut également le détour.

http://learnvimscriptthehardway.stevelosh.com/

Je suis dans une situation similaire. C’est toujours sur ma liste de lecture, mais je viens juste de trouver l’éditeur Scripting the Vim . Les articles de DeveloperWorks d’IBM sont généralement très bons, donc ça vaut la peine de les vérifier.

Al vous a donné une bonne réponse . J’appendais également vim.wikia qui contient quelques astuces liées à votre question.

Sur une note latérale.

Je ne dirais pas que ma10jd'a20kp est plus élégant. Je vois les problèmes suivants:

  • c’est assez difficile à maintenir (et si le nombre de lignes devenait un paramètre?),
  • les gens aiment remplacer les clés qu’ils n’ont jamais appris à utiliser (cela pourrait être corrigé avec un banged :normal! ),
  • certaines commandes en mode normal ont un comportement étrange sur les side-cases (comme lorsque le curseur est sur la première colonne),
  • cela perturbe la marque a , et le registre sans nom – d’autres scripts, ou même l’utilisateur peuvent s’attendre à ce que leurs valeurs ne soient pas altérées par votre script.