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
Commenter quelques lignes. Faites une sélection par bloc du 1er caractère de chaque ligne avec Ctrl + v
, ensuite tapez Maj + i
, tapez votre caractère à placer (ex: ,
#,
“ …) puis tapez la touche
Esc 2 fois de suites et magie…
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 :
<code php>array(
‘a’ ⇒ ‘A’,
‘salut’ ⇒ ‘SALUT’,
‘très long’ ⇒ ‘TRÈS LONG’,
)</code>
Sélectionner les lignes avec avec <S-v> puis taper :
:'<,’>Align⇒
<code php>array(
‘a’ ⇒ ‘A’,
‘salut’ ⇒ ‘SALUT’,
‘très long’ ⇒ ‘TRÈS LONG’,
)</code>
===== Fichier de conf exemple =====
Finalement, j’ai trouvé un fichier de config qui déchire bien :)
<code vim .vimrc>
” /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
</code>
===== Couleurs =====
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/.
===== Coloriser les fichiers de log =====
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 ;)
===== Supprimer plusieurs lignes contenant … =====
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
===== Tweaker vim =====
http://blog.kewah.com/2014/from-sublime-text-to-vim/