Vimscript

De Vim-fr
Ébauche.png

Cette page est une ébauche concernant ViM, n'hésitez pas à l'améliorer en partageant vos connaissances.

Vim possède un langage de script qui permet de coder des extensions, c'est également lui qui est utilisé dans le vimrc ou dans le monde commande (:).

Généralités

Structures de contrôle

if

if <condition>
  <code>
elseif <condition>
  <code>
else
  <code>
endif

while

while <condition>
  <code>
endwhile

for

for <variable> in <List>
  <code>
endfor

Fonctions

function[!] <nom> (<arguments>)
  <code>
  [return]
endfunction

Le ! permet de forcer la réécriture d'une fonction si elle existe déjà.

Le return est optionnel.

<nom> ne doit pas comporter de « : ». Dans le cas des fonctions internes non exportées, à l'image des fonctions statiques en C, le nom doit commencer par « s: » suivi d'une majuscule. Dans le cas des fonctions exportées, le cas par défaut, le nom doit commencer par une majuscule -- à l'exception des fonctions définies dans des autoload plugins, qui jouissent de règles de nommage particulières qui leur permettent d'être entièrement en minuscules.

:h :function

Pour obtenir la documentation de vim sur les fonctions.

Divers

Le | est l'équivalent du retour chariot ou du ; en bash/C++, il permet d'écrire plusieurs opérations sur la même ligne. Son utilisation est déconseillée, il vaut mieux mettre une instruction par ligne pour une meilleure compréhension globale.

" Par exemple
if exists( 'beer' ) | finish | endif

Présence

has("<option>") " renvoie vrai si le module existe

Autres

Buffer

bufname("%") " permet de récupérer le nom du fichier courant

Intégration d'autres langages

Il est possible de coder des scripts pour vim dans d'autres langages, mais cela demande souvent une version de vim compilée pour ce langage.

Python

Init

python << EOF
<code python>
EOF

Documentation

:h python

C'est ici que se trouve la plupart de la doc pour coder en Python dans vim, malheureusement c'est assez pauvre et il n'y a pas beaucoup plus de documentation sur internet.

Ruby

Init

ruby << EOF
<code ruby>
EOF

Documentation

:h ruby

C'est ici que se trouve la plupart de la doc pour coder en ruby dans vim.

Liens externes