Astuces : complétion
Par Dimitri Robert, vendredi 16 décembre 2005 à 14:46 :: Vim :: #69 :: rss
Il est illusoire de vouloir essayer de retenir ne serait-ce que le dixième des astuces compilées par David Rayner fruit de 15 ans d'expérience avec Vi et 4 ans avec Vim. Cependant, en piocher une de temps en temps et essayer de la retenir me semble une bonne idée. Je vous propose donc ce petit jeu.
Aujourd'hui, parlons de complétion.
Je ne sais pas si ce mot est vraiment français (il semblerait que non d'après Wikipédia), mais il a le mérite d'être très utilisé et compris par ceux qui la pratique. Pour les autres, sachez que la complétion consiste à demander à un logiciel (le shell Bash par exemple) de compléter automatiquement un mot dont on ne saisi que le début. Ainsi, si vous tapez
mozdans votre shell (depuis un terminal ou une console) suivi de la touche Tabulation, il y a de fortes chances que le mot deviennemozilla. En fait, le shell complète lorsqu'il n'y a aucune ambiguité possible. Sinon, appuyez encore une fois sur Tabulation pour voir apparaître toutes les possibilités.
Tout comme le shell Vim est capable de compléter automatiquement.
Compléter à partir des mots présents dans le fichier courant
Commencez à taper le début d'un mot puis pressez Ctrl + P. Vim va chercher en arrière dans le contenu du fichier courant, un mot commençant de la même façon. Si plusieurs mots correspondent, appuyez plusieurs fois sur Ctrl + P pour les passer en revue.
Vous pouvez également effectuer une recherche en avant avec Ctrl + N (P pour previous et N pour next).
Si vous avez ouvert plusieurs fichiers en même temps, dans la même session de Vim, la recherche s'effectue sur l'ensemble de ces fichiers.
Compléter à partir d'un dictionnaire
Nous pourrions utiliser la fonctionnalité précédente en ouvrant systématiquement un fichier contenant tous les mots du dictionnaire. Ainsi, Vim chercherait également dans ce fichier. Cependant Vim est prévu pour chercher automatiquement dans un dictionnaire que nous lui indiquons, dans le .vimrc par exemple. Sous Debian il existe un paquet nommé wfrench qui contient une liste de mots français.
Indiquons à Vim dans quel fichier aller chercher (dans .vimrc) :
set dict=/usr/share/dict/french
Notez que nous pouvons donner plusieurs fichiers avec l'opérateur += (comme on peut en retirer avec -=) :
set dict+=autre_fichier
Par défaut, Vim recherche la correspondance exacte. Or, dans ce fichier dictionnaire, les mots commencent tous par une minuscule. Nous pourrions les dupliquer en mettant une version avec majuscule. Mais on peut aussi indiquer à Vim de ne pas tenir compte de la casse (différence majuscules/minuscules).
set ignorecase
Mieux encore, nous pouvons lui indiquer de compléter avec la bonne syntaxe, c'est-à-dire, avec une majuscule si l'on a commencé à taper avec une majuscule.
set infercase
Ensuite, lors de la saisie, en mode Insertion, saisissez Ctrl + X suivi de Ctrl + K. Vous pouvez passer en revue toutes les possibilités avec Ctrl + P et Ctrl + N.
Vous préfèreriez que la complétion standard décrite au début recherche également dans le dictionnaire, sans avoir à taper Ctrl + X, Ctrl + K ? Il suffit de rajouter l'option « dictionnaire » dans la chaîne de recherche (voir le lien en fin d'article). La lettre k représente les fichiers donnés par l'option dictionary.
set complete+=k
Compléter une ligne
Encore plus fort, Vim est capable de compléter une ligne entière ! Commencez à saisir le début de votre ligne et pressez la combinaison Ctrl + X, Ctrl + L. Il cherche la première ligne qui précède et qui commence de la même façon. Il complète alors votre ligne actuelle à l'identique. Utilisez Ctrl + N et Ctrl + P@@ pour paser en revue toutes les lignes éligibles.
Lien utile
Plus d'informations dans la documentation française coordonnée par David Odin.


Commentaires
Aucun commentaire pour le moment.
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.