Ceci est une ancienne révision du document !
Vim est pour moi le meilleur éditeur de texte tout du moins en mode texte.
Voici juste quelques améliorations pour nous rendre la vie plus facile.
Ouvrir un fichier à une ligne spécifique (ex: ligne 64)
vim fichier.txt +64
Ouvrir plusieurs fichiers en même temps
vim -o fichier1 fichier2 fichier3
G
va à la fin du fichiergg
va au début du fichier123gg
va à la ligne 123dd
efface la ligne courante123dd
efface les 123 lignes à partir de la ligne couranteyy
copie la ligne courante123yy
copie les 123 lignes à partir de la ligne courantep
colle les lignes copiés sous la ligne couranteSélection
v
passe en mode visuel qui permet de faire une sélection de texteMaj + v
permet une sélection par ligneCtrl + v
permet une sélection par bloc (ou vertical)après votre sélection faite
x
ou d
supprime la sélections
supprime et passe en mode insertion:
fait apparaître :'<,’>
représentant votre sélection. Vous pouvez ensuite faire un remplacement de texte en rajoutant s#texte à remplacer#texte de remplacement#g
Recherche
/
recherche en avant?
recherche en arrière*
recherche en avant du mot entier sous le curseur#
recherche en avant du mot entier sous le curseurg*
(et g#
) recherche en avant (en arrière) du mot sous le curseur en tant que stringg*
permet de chercher un nom de variable quelle que soit son préfixe (→
, .
ou $
), en PHP par exemple.Multi fenêtrage
Ctrl+w
(w pour window)n
crée un split horizontalv
crée un split verticalw
ou les flèches permettent de naviguer entre les fenêtres<
ou >
permet d’élargir ou de rétrécir horizontalement une fenêtre-
ou +
permet d’élargir ou de rétrécir verticalement une fenêtre=
permet d’égaliser les tailles des fenêtres ouvertent:split fichier.txt
ouvre fichier.txt en split horizontal:vsplit fichier.txt
ouvre fichier.txt en split vertical
A taper dans vim en tapant :
Remplacer le mot TOTO par TATA sur une ligne pour la 1ère occurrence rencontrée
:s/TOTO/TATA
Sur toutes les occurrences de la ligne
:s/TOTO/TATA/g
Sur toutes les occurrences de la page
:%s/TOTO/TATA/g
:%s#original#remplacement#flags
Remplace automatiquement le motif «original» par «replacement». %
signifie qu’on travaille sur tout le fichier. Les flags sont :
g
: remplacer toutes les occurrences du motif s’il apparaît plusieurs fois par lignei
: ne pas être sensible à la cassec
: demande confirmation à chaque remplacement (mode interactif):
fait apparaître :'<,’>
sur la ligne de commande, cela désigne l’intervalle sélectionné. Cela donne ::'<,’>s#original#remplacement#flags
Mettre à jour le fichier si il a été modifié entre temps
:e
Mettre en surbrilliance le résultat d’une recherche
:set hlsearch
Pour désactiver
:nohlsearch
Pour les copier/coller qui partent en vrille
:set paste
Coloration syntaxique
:syntax on
Afficher les numéros de lignes
:set nu
Règles de tabulations
Tabulations de 2 espaces
:set expandtab :set shiftwidth=4 :set softtabstop=4 :set tabstop=4
Ou en abrégé inclus à la fin du fichier en commentaire (modeline) :
// vim: ts=4 sts=4 sw=4 et
Alignement
Pour rendre le code plus beau en alignant les opérateurs, exemple :
array( 'a' => 'A', 'salut' => 'SALUT', 'très long' => 'TRÈS LONG', )
Sélectionner les lignes avec avec <S-v> puis taper :
:'<,'>Align=>
array( 'a' => 'A', 'salut' => 'SALUT', 'très long' => 'TRÈS LONG', )
Finalement, j’ai trouvé un fichier de config qui déchire bien :)
" /etc/vim/vimrc ou ~/.vimrc " Fichier de configuration de Vim " Formation Debian GNU/Linux par Alexis de Lattre " http://formation-debian.via.ecp.fr/ " ':help options.txt' ou ':help nom_du_paramètre' dans Vim " pour avoir de l'aide sur les paramètres de ce fichier de configuration " Avertissement par flash (visual bell) plutôt que par beep set vb " Active la coloration syntaxique syntax on " Définit le jeu de couleurs utilisé " Les jeux de couleur disponibles sont les fichiers avec l'extension .vim " dans le répertoire /usr/share/vim/vimcurrent/colors/ colorscheme delek " Affiche la position du curseur 'ligne,colonne' set ruler " Affiche une barre de status en bas de l'écran set laststatus=2 " Contenu de la barre de status set statusline=%<%f%h%m%r%=%l,%c\ %P " Largeur maxi du texte inséré " '72' permet de wrapper automatiquement à 72 caractères " '0' désactive la fonction set textwidth=0 " Wrappe à 72 caractères avec la touche '#' map # {v}! par 72 " Wrappe et justifie à 72 caractères avec la touche '@' map @ {v}! par 72j " Ne pas assurer la compatibilité avec l'ancien Vi set nocompatible " Nombre de colonnes (inutile, voire gênant) "set columns=80 " Nombre de commandes dans l'historique set history=50 " Options du fichier ~/.viminfo set viminfo='20,\"50 " Active la touche Backspace set backspace=2 " Autorise le passage d'une ligne à l'autre avec les flèches gauche et droite set whichwrap=<,>,[,] " Garde toujours une ligne visible à l'écran au dessus du curseur set scrolloff=1 " Affiche les commandes dans la barre de status set showcmd " Affiche la paire de parenthèses set showmatch " Essaye de garder le curseur dans la même colonne quand on change de ligne set nostartofline " Option de la complétion automatique set wildmode=list:full " Par défaut, ne garde pas l'indentation de la ligne précédente " quand on commence une nouvelle ligne set noautoindent " Options d'indentation pour un fichier C set cinoptions=(0 " xterm-debian est un terminal couleur if &term =~ "xterm-debian" || &term =~ "xterm-xfree86" set t_Co=16 set t_Sf=^[[3%dm set t_Sb=^[[4%dm endif " Quand on fait de la programmation, on veut qu'il n'y ait jamais de " vraies tabulations insérées mais seulement 4 espaces autocmd BufNewfile,BufRead *.c set expandtab autocmd BufNewfile,BufRead *.c set tabstop=4 autocmd BufNewfile,BufRead *.h set expandtab autocmd BufNewfile,BufRead *.h set tabstop=4 autocmd BufNewfile,BufRead *.cpp set expandtab autocmd BufNewfile,BufRead *.cpp set tabstop=4 " Décommentez les 2 lignes suivantes si vous voulez avoir les tabulations et " les espaces marqués en caractères bleus "set list "set listchars=tab:>-,trail:- " Les recherches ne sont pas 'case sensitives' set ignorecase " Le découpage des folders se base sur l'indentation set foldmethod=indent " 12 niveaux d'indentation par défaut pour les folders set foldlevel=12 " Police de caractère pour Gvim qui supporte le symbole euro set guifont=-misc-fixed-medium-r-semicondensed-*-*-111-75-75-c-*-iso8859-15
Différents thèmes de couleurs sont disponibles par défaut, on peut les choisir en tapant colorscheme puis la touche TAB pour faire défiler les différents thèmes disponibles. Par exemple :
:colorscheme delek
D’autre thèmes sont disponibles sur le Net, il suffit de les télécharger et de les placer dans /usr/share/vim/vimcurrent/colors/.
vim stocke tous ses fichiers de syntax dans /usr/share/vim/vim73/syntax
73 est le numéro de version, il peut donc évoluer.
Chaque fichier de syntax permet de définir une colorisation syntaxique. Pour les log, il y a le fichier messages.vim
J’ai pu remarquer que en ouvrant le fichier /var/log/messages on obtient une colorisation syntaxique très pratique et que bizarrement en ouvrant /var/log/syslog il n’y a aucune colorisation.
Nous allons comprendre pourquoi, grace au fichier /usr/share/vim/vim73/filetype.vim qui permet de définir pour un type de fichier ouvert la syntax à appliquer.
Dans notre cas, je me retrouve avec ceci
" Messages au BufNewFile,BufRead /var/log/messages,/var/log/messages.*[0-9] setf messages
Qui dit clairement que si j’ouvre le fichier /var/log/messages ou tout autre fichier /var/log/messages. suivi d’un numéro, on applique la colorisation syntaxique défini par le fichier syntax/messages
.vim
Afin de prendre en compte la plupart des fichiers de log connu, nous allons modifier cette ligne comme suit
" Messages (logs mostly) au BufNewFile,BufRead */log/{auth,cron,daemon,debug,kern,lpr,mail,messages,news/news,syslog,user}{,.log,.err,.info,.warn,.crit,.notice}{,.[0-9]*,-[0-9]*} setf messages
Maintenant vous aurez moins mal aux yeux en consultant vos logs ;)
Suppression des lignes contenant un caractére dans un fichier avec VIM
:g/.*com*.*/d
Suppression Ligne vide dans un fichier avec VIM
:g/^$/d