Présentation

Que dire de plus si ce n’est que VI ou VIM édite tout ! Il permet de faire de la coloration syntaxique, de la substitution de texte, etc…

C’est bourré de script, c’est modifiable, paramétrabe, adaptable, bref, ça roxe du poney !

Installation

Debian

Sous Debian, pour posséder l’ensemble des fonctionnalités et options de VIM, je vous propose (si vous avez une cinquantaine de Mo de place), de faire :

apt-get install vim-full

De la sorte vous aurez tout de tout !

Windows

Eh oui ! il existe aussi gVim pour Windows ! Le site vim.org informe sur les différents installeurs possibles, parmi eux nous retenons gVim pour Windows .

Comme toujours sous Windows, il suffit de suivre les instructions de l’assistant d’installation.

Mon fichier de configuration

Comme VIM est paramétrable, il possède le fichier ~/.vimrc. S’il n’existe pas créez le et modifiez le à votre guise.

Voici le maigre fichier de configuration que je possède :

set nocompatible
syntax on "" activation reconnaissance syntaxique
filetype plugin indent on
"" Console blanche sur fond noir
colors murphy
"" Console noire sur fond jaune pâle
"" colors peachpuff
set ai "" autoindentation
set nu "" Numérotation des lignes
set ts=2 "" On met la valeur des tabulations à 2 espaces
set et "" remplace les tabulations par des espaces
set softtabstop=2
set shiftwidth=2
set encoding=utf-8 "" encodage des fichiers en utf-8 par défaut
"" Affiche les dépassements de 80 caractères en rouge
highlight OverLength ctermbg=red ctermfg=white guibg=#592929
match OverLength /\%81v.\+/
"" Affiche une colonne de couleur après 80 caractères
set colorcolumn=81
"" la colorie en gris
highlight ColorColumn ctermbg=7

"" active la correction en français sur les fichiers .tex
augroup filetypedetect
  au BufNewFile,BufRead *.tex setlocal spell spelllang=fr
  au BufNewFile,BufRead *.texte setlocal spell spelllang=fr
augroup END
silent! ruby nil "" Euh ... pour ruby ? Aucune idée pour le moment

Ceci me permet de faire des fichiers UTF-8 (encodage de caractères), de mettre une numérotation sur le côté, d’indenter automatiquement, de mettre des couleurs selon le thème murphy, d’activer la reconnaissance de syntaxe, et finalement de n’avoir aucune compatibilité avec l’ancien VI.

Correction orthographique

Mise en place

Mettre en place la correction orthographique demandée :

mkdir -p ~/.vim/spell/
cd ~/.vim/spell/
wget http://ftp.vim.org/vim/runtime/spell/fr.latin1.spl
wget http://ftp.vim.org/vim/runtime/spell/fr.latin1.sug
wget http://ftp.vim.org/vim/runtime/spell/fr.utf-8.spl
wget http://ftp.vim.org/vim/runtime/spell/fr.utf-8.sug

Cette dernière étape se fait de plusieurs manières différentes :

augroup filetypedetect
  au BufNewFile,BufRead *.tex setlocal spell spelllang=fr
  au BufNewFile,BufRead *.texte setlocal spell spelllang=fr
augroup END

Comment cela fonctionne ?

Je vous invite à lire l’ excellent tutoriel sur la correction orthographique sous VIM de Jérémie Decock , dans lequel il écrit, je cite :

Voici les principales commandes à connaître :

Pour personnaliser le dictionnaire, il explique :

Un dictionnaire personnalisé permet d’enrichir le correcteur en lui indiquant les mots qu’il ne doit pas considérer comme des fautes (les noms et les prénoms par exemple). On peut ajouter un mot en plaçant le curseur dessus et en tapant « zg ». Pour annuler cette opération, on utilise « zug ».

Raccourcis pour le folding

Le folding est une fonctionnalité qui permet de regrouper plusieurs lignes de code en une seule afin de s’y retrouver plus facilement dans son fichier.

Voici donc les raccourcis récupérés sur le site suivant : https://www.linux.com/learn/tutorials/442438-vim-tips-folding-fun

Vim folding commands

zf#j creates a fold from the cursor down # lines.
zf/string creates a fold from the cursor to string .
zj moves the cursor to the next fold.
zk moves the cursor to the previous fold.
zo opens a fold at the cursor.
zO opens all folds at the cursor.
zm increases the foldlevel by one.
zM closes all open folds.
zr decreases the foldlevel by one.
zR decreases the foldlevel to zero -- all folds will be open.
zd deletes the fold at the cursor.
zE deletes all folds.
[z move to start of open fold.
]z move to end of open fold.

Utilisation

Séléction de l’ensemble du texte d’un document VIM

Il faut taper ceci :

Touche [Echap], G, v, gg

Le fait de faire G (ou shift + g si vous êtes en minuscule), permet de descendre au bas du document.

V permet de se mettre en mode visuel, et gg de remonter tout en haut.

Pour copier notre séléction dans VIM

Il faut taper (une fois le texte séléctionné à l’aide de [Echap], puis V) :

y (pour copier)
p (pour coller)

Supprimer une ligne / plusieurs lignes

Pour supprimer une ligne, faites [Echap] pour être sûr de ne pas être en mode Insertion, puis aller à la ligne choisie, et faites dd. Cela aura pour effet de supprimer la ligne courante.

NB : En réalité cela COUPE la ligne, ce qui fait que [Echap] puis p permet de coller la ligne précédemment coupée.

Pour supprimer plusieurs lignes, faites à nouveau [Echap] pour sortir de n’importe quel mode, puis aller sur la ligne de début, et faites d10 pour supprimer les 11 lignes suivantes.

NB : Là encore cela COUPE les lignes.

Substitution

VIM permet de substituer plusieurs caractères en fonction de votre imagination. Pour cela faites ceci :

Concrètement, pour passer de Wikini à DokuWiki, j’ai du faire ceci :

:%s/        - /  * /g

Ce qui a eu pour effet de changer les 8 espaces suivis d’un tiret puis d’un espace par une chaine de 2 espaces suivies d’une étoile puis d’un espace.

Mettre en commentaire plusieurs lignes

Cela vous arrive aussi de jurer tout les noms parce que vous devez commenter plus de 5 lignes de fichiers de configurations ?

Pourquoi ne pas utiliser la technique de la substitution ? 😄

Faites simplement ceci :

Vous aurez donc l’ensemble de vos lignes commentées avec dièse (#) !

Si vous voulez commenter par autre chose, changez simplement le dièse par le caractère que vous souhaitez ajouter en début de ligne.

Supprimer le mot avant le curseur

Pour supprimer le mot situé avant le curseur (ou considéré comme un mot), mettez vous en mode insertion en faisant [Echap] puis i. Ensuite appuyez simultanément sur [Ctrl] + [w]. Le dernier mot disparaît !

Indente la ligne actuelle avec coupure sur 80 caractères

En mode affichage, allez sur une ligne précise, puis tapez ceci :

gq

Indente toute la page

Il faut utiliser ==.

On peut également faire 10== qui réindente correctement les 9 prochaines lignes (dont l’actuelle).

Déplacer tout un paragraphe vers la droite à l’aide d’une tabulation

Il suffit de sélectionner votre texte à l’aide des touches [Échap] puis [v], après quoi vous utilisez les touches fléchées pour sélectionner les bonnes lignes. Faites > et le tour est joué ;)

Insérer le résultat d’une commande dans VIM

Il suffit de taper ceci dans VIM :

:r!commande shell

Par exemple, pour insérer la date :

:r!date

Ouvrir un fichier avec le curseur à une ligne donnée du fichier

Tapez :

vim +num_ligne nom_fichier

où :

Ouvrir un fichier avec le curseur à la dernière ligne du fichier

Tapez :

vim + nom_fichier

nom_fichier est à remplacer par le nom du fichier que vous voulez ouvrir avec le curseur à la dernière ligne.

Se déplacer à une ligne précise du fichier pendant la navigation

Procédez de la manière suivante :

Vous voilà à la ligne num_ligne.