Vim
Vim est un éditeur de texte, clone de vi, signifiant "VI aMélioré" permettant d'éditer des documents de type texte (notamment des fichiers de configuration) dans un terminal ou une console (shell). Il ne nécessite pas d'interface graphique pour être exécuté, ce qui en fait un excellent outil sur un serveur, dépourvu d'environnements bureau.
Installation
# apt install vim
Comportement
Vim possède 5 modes :
- Le mode interactif
- Le mode insertion
- Le mode commande
- Le mode visuel
- Le mode recherche
Mode interactif
Lorsque Vim est exécuté, il est par défaut en mode interactif. Ce mode permet d'utiliser des combinaisons de touche pour interagir avec le texte du document en cours d'édition. Il est par exemple possible, en une combinaison, de couper 4 lignes de texte et de les coller dans un autre emplacement du document, voir dans un autre document.
Mettre un tableau avec les touches qu'on utilise souvent avec le mode interactif
Mode insertion
Le mode insertion est le mode classique d'édition de texte. C'est celui dans lequel on tape du texte comme dans n'importe quel autre éditeur.
Pour revenir au mode interactif, il faut presser la touche <Echap>
.
Mode commande
Ce mode permet d’interagir avec Vim par l'intermédiaire de commandes. Ces dernières vont permettres d'enregistrer le document, quitter Vim, importer un document dans un autre, passer des expressions régulières, activer des options et bien d'autres choses...
On entre une commande en étant au préalable en mode interactif et en tapant :
.
Quelque commandes
Activer l'affichage des numéros de lignes
se nu
désactiver l'affichage des numéros de lignes
se nu!
Activer la coloration syntaxique
syn on
Désactiver la coloration syntaxique
syn off
Afficher la ligne où se trouve le curseur
set cursorline
Masquer le trait de soulignement
set cursorline!
Commenter plusieurs lignes
.,+4 s/^/#/g
Décommenter plusieurs lignes
.,+4 s/^#//g
Plus simple, pour commenter (après une sélection des lignes à commenter en mode visuel block <maj>+<v>
et un appui sur :
)
s/^/#
Décommenter (après séléction <maj>+<v>
+ :
)
s/#//
ou <maj>+<v>
puis <x>
.
Ajouter en fin de ligne (après sélection <maj>+<v>
+ :
)
s/$/\ :\ s/$/;
Ajouter au niveau du curseur (après sélection <ctrl>+<v>
+ :
)
s/\%V/\ : s/\%V/^I
vim ajouter à partir du curseur (À trouver) http://andrewradev.com/2011/05/08/vim-regexes/
Placer des curseur là ou on veut pour pouvoir utiliser les regex d'en haut de façon ultra puissante
Remplacer un mot par un autre
%s/Mot_initial/Nouveau_mot/g
Changer encodage caractère
set fileencoding=latin1 set fileencoding=utf-8
Auto complétion CSS (une fois renseigné, faire <ctrl>+<x>
+ <ctrl>+<o>
)
set omnifunc=csscomplete#CompleteCSS
Exécuter une commande bash sans quitter vim
!Commande_À_Exécuter
Importer fichier depuis vim
r Chemin_fichier
Indentation automatique
se ai
Insensibilité à la casse (utile pour le mode recherche notamment)
se ic
Activer le curseur de sélection avec la souris
se mouse=a
Désactiver le curseur de sélection avec la souris
se mouse=
Spliter l'écran pour ouvrire un autre fichier horizontalement
split [Nom_fichier] ou :sp
En vertical
vspli ou :vsp
Redéfinir l'espace de l'indentation (pour passer de 8 espaces à 3)
set tabstop=3 set shiftwidth=3 set softtabstop=3
Convertir des indentation "espace" en indentation "tabulation"
%retab!
Créer et gérer des onglets
tabnew [nom_fichier]
Se déplacer dans les onglets
En avant : gt
, en arrière : gT
.
Ouvrir plusieurs fichier dans un onglets chacun :
$ vim -p fichier1 fichier2 fichier3
Convertir du texte en majuscule ou en minuscule
- Inverser la casse : sélectionner le texte avec
ctrl+v
et faire un~
ou
- On peut utiliser
U
pour mettre en majuscule ouu
pour mettre en minuscule
Masquer les commentaires d'un fichier (à ajouter dans un fichier de configuration)
set fdm=expr set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
Pour déplier temporairement un bloc de commentaires (un bloc correspondant dans ce cas à plusieurs lignes consécutives commençant par le caractère #), placez votre curseur sur le pli correspondant au bloc compacté et tapez zo
(ou pressez simplement sans sélection pour agir sur tout le document), et zm
pour le replier. Si vous avez déplié plusieurs blocs, vous pouvez tous les replier d'un coup avec zM
; à l'inverse, vous pouvez déplier tous les blocs d'un seul coup avec zi
.
Presses papiers
Vim possèdes plusieurs presses papiers (buffers) qui peuvent être exploiter afin de poutrer sévère lors d'une édition de texte. Il y en a un par lettre de l'alphabet. Ils s'utilisent en mode interactif avec les touches "<lettre><raccourci>
de cette manière :
Copier des lignes dans des presses papiers différents
"ayy
, "byy
, "cyy
.
Coller des lignes depuis des presses papiers différents
"ap
, "bp
, "cp
.
Pour ajouter une ligne à un presse papier, il faut préciser la lettre du presse papier voulu, en majuscule "Byy
.
Pour copier/coller en prenant en compte le presse papier global (celui que l'on à lors d'un simple yy
)
"+yy
copie une ligne pour le presse papier global, et "+p
colle le presse papier global.
Buffer poubelle (équivalent du /dev/null)
"_dd
Macros
Définir l'intérêt des macros...
Créer des macros
q+<lettre>
pour passer en mode enregistrement.
q
pour terminer l'enregistrement.
@+<lettre>
pour la jouer (ça fait comme un presse papier).
Fichiers de configuration
Les fichiers de configuration de Vim permettent de définir des paramètres activés à chaque lancement de l'éditeur. Il en existe deux type :
- Un général, actif pour tout les utilisateurs du système :
/etc/vim/vimrc
- Un courant, pour chaque utilisateurs en particulier :
~/.vimrc
Il suffit de renseigner des commandes Vim (sans les :) dans ces fichiers pour que leur effet soit permanent.
Greffons
Il est possible d'ajouter des fonctionnalités supplémentaires à Vim par l'intermédiaire de greffons (plugins). Il sont à mettre (selon le même principe que le vimrc) dans le répertoire général /etc/vim/
ou dans ~/.vim/
pour les rendre spécifiques à chaque utilisateur.
Greffons que j'utilise
Emmet
Orienté programmation web, le greffon Emmet (anciennement Zen Coding) permet, en utilisant une syntaxe (très) raccourcie, d'écrire du code HTML et CSS de façon extrêmement efficace. De plus, il est disponible sur une multitude d'éditeurs. Il s'installe de la façon suivante :
- Télécharger Emmet depuis les sources
- Décompresser les répertoires autoload et plugin dans
~/.vim/
Pour utiliser Emmet, il faut écrire dans un fichier les différentes expressions possibles et faire la combinaison de touches (en mode interactif) <c-y>,
(faire ctrl + y et ensuite sur ,)
IndentLine
IndentLine permet d'afficher une ligne verticale marquant le niveau d'indentation de votre code. Il est très utile notamment lorsque les bloques de code sont imbriqués sur énormément de niveau (rendant le repérage visuel extrêmement difficile). Il s'installe de la façon suivante :
- Télécharger IndentLine depuis les sources
- Décompresser le répertoire plugin dans
~/.vim/
- Ajouter dans le vimrc ce paramètre (l'espace de fin est important) :
set list lcs=tab:\|\
Sources
http://cfennajoui.net/vim/traduit/html/usr_30.txt.php
http://www.blogduwebdesign.com/developpement-vim/vim-astuce-pour-le-copier-coller/605