« Vim » : différence entre les versions

De Wiki doc

m Correction de la coloration syntaxique
Aucun résumé des modifications
Ligne 31 : Ligne 31 :
===Quelque commandes===
===Quelque commandes===
Activer l'affichage des numéros de lignes
Activer l'affichage des numéros de lignes
se nu
<source lang="vim">
se nu
</source>
désactiver l'affichage des numéros de lignes
désactiver l'affichage des numéros de lignes
se nu!
<source lang="vim">
se nu!
</source>
Activer la coloration syntaxique
Activer la coloration syntaxique
syn on
<source lang="vim">
syn on
</source>
Désactiver la coloration syntaxique
Désactiver la coloration syntaxique
syn off
<source lang="vim">
syn off
</source>
Afficher la ligne où se trouve le curseur
Afficher la ligne où se trouve le curseur
set cursorline
<source lang="vim">
set cursorline
</source>
Masquer le trait de soulignement
Masquer le trait de soulignement
set cursorline!
<source lang="vim">
set cursorline!
</source>
Commenter plusieurs lignes
Commenter plusieurs lignes
  .,+4 s/^/#/g
<source lang="vim">
Décommenter plusieurs lignes
  ,+4 s/^/#/g
.,+4 s/^#//g
</source>
Plus simple, pour commenter (après une sélection des lignes à commenter en mode visuel block <source lang="bash" inline><maj>+<v></source> et un appui sur <source lang="bash" inline>:</source>)
Dé-commenter plusieurs lignes
s/^/#
<source lang="vim">
Décommenter (après séléction <source lang="bash" inline><maj>+<v></source> + <source lang="bash" inline>:</source>)
.,+4 s/^#//g
s/#//
</source>
Plus simple, pour commenter (après une sélection des lignes à commenter en mode visuel bloc <source lang="bash" inline><maj>+<v></source> et un appui sur <source lang="bash" inline>:</source>)
<source lang="vim">
s/^/#
</source>
Dé-commenter (après sélection <source lang="bash" inline><maj>+<v></source> + <source lang="bash" inline>:</source>)
<source lang="vim">
s/#//
</source>
ou <source lang="bash" inline><maj>+<v></source> puis <source lang="bash" inline><x></source>.
ou <source lang="bash" inline><maj>+<v></source> puis <source lang="bash" inline><x></source>.


Ajouter en fin de ligne (après sélection <source lang="bash" inline><maj>+<v></source> + <source lang="bash" inline>:</source>)
Ajouter en fin de ligne (après sélection <source lang="bash" inline><maj>+<v></source> + <source lang="bash" inline>:</source>)
s/$/\ :\  
<source lang="vim">
s/$/;
s/$/\ :\  
 
s/$/;
</source>
Ajouter au niveau du curseur (après sélection <source lang="bash" inline><ctrl>+<v></source> + <source lang="bash" inline>:</source>)
Ajouter au niveau du curseur (après sélection <source lang="bash" inline><ctrl>+<v></source> + <source lang="bash" inline>:</source>)
s/\%V/\ :
<source lang="vim">
s/\%V/^I
s/\%V/\ :
s/\%V/^I
</source>


<span style="color:red;">vim ajouter à partir du curseur (À trouver) http://andrewradev.com/2011/05/08/vim-regexes/</span>
<span style="color:red;">vim ajouter à partir du curseur (À trouver) http://andrewradev.com/2011/05/08/vim-regexes/</span>
Ligne 65 : Ligne 88 :


Remplacer un mot par un autre
Remplacer un mot par un autre
%s/Mot_initial/Nouveau_mot/g
<source lang="vim">
%s/Mot_initial/Nouveau_mot/g
</source>
Changer encodage caractère
Changer encodage caractère
set fileencoding=latin1
<source lang="vim">
set fileencoding=utf-8
set fileencoding=latin1
set fileencoding=utf-8
</source>
Auto complétion CSS (une fois renseigné, faire <source lang="bash" inline><ctrl>+<x></source> + <source lang="bash" inline><ctrl>+<o></source>)
Auto complétion CSS (une fois renseigné, faire <source lang="bash" inline><ctrl>+<x></source> + <source lang="bash" inline><ctrl>+<o></source>)
set omnifunc=csscomplete#CompleteCSS
<source lang="vim">
Exécuter une commande bash sans quitter vim
set omnifunc=csscomplete#CompleteCSS
!Commande_À_Exécuter
</source>
Importer fichier depuis vim
Exécuter une commande ''bash'' sans quitter ''vim''
r Chemin_fichier
<source lang="vim">
!Commande_À_Exécuter
</source>
Importer fichier depuis ''vim''
<source lang="vim">
r Chemin_fichier
</source>
Indentation automatique
Indentation automatique
se ai
<source lang="vim">
Permettre un copier/coller avec ''se ai''
se ai
se paste
</source>
Activer/désactiver ''se paste'' en appuyant sur ''F2''
Permettre un copier/coller avec <source lang="vim" inline>se ai</source>
set pastetoggle=<F2>
<source lang="vim">
se paste
</source>
Activer/désactiver <source lang="vim" inline>se paste</source> en appuyant sur <source lang="bash" inline><F2></source>
<source lang="vim">
set pastetoggle=<F2>
</source>
Insensibilité à la casse (utile pour le mode recherche notamment)
Insensibilité à la casse (utile pour le mode recherche notamment)
se ic
<source lang="vim">
se ic
</source>
Activer le curseur de sélection avec la souris
Activer le curseur de sélection avec la souris
se mouse=a
<source lang="vim">
se mouse=a
</source>
Désactiver le curseur de sélection avec la souris
Désactiver le curseur de sélection avec la souris
se mouse=
<source lang="vim">
Spliter l'écran pour ouvrir un autre fichier horizontalement
se mouse=
split [Nom_fichier] ou :sp
</source>
Scinder l'écran pour ouvrir un autre fichier horizontalement
<source lang="vim">
split [Nom_fichier] ou :sp
</source>
En vertical
En vertical
vspli ou :vsp
<source lang="vim">
{{info|le couple <source lang"bash" inline><ctrl-w> + flèche</source> permet de passer d'un fichier à l'autre. }}
vspli ou :vsp
</source>
{{info|Le couple <source lang="bash" inline><ctrl-w> + flèche</source> permet de passer d'un fichier à l'autre. }}
Redéfinir l'espace de l'indentation (pour passer de 8 espaces à 3)
Redéfinir l'espace de l'indentation (pour passer de 8 espaces à 3)
set tabstop=3
<source lang="vim">
set shiftwidth=3
set tabstop=3
set softtabstop=3
set shiftwidth=3
set softtabstop=3
</source>
Convertir des indentation "espace" en indentation "tabulation"
Convertir des indentation "espace" en indentation "tabulation"
%retab!
<source lang="vim">
%retab!
</source>
Créer et gérer des onglets
Créer et gérer des onglets
tabnew [nom_fichier]
<source lang="vim">
tabnew [nom_fichier]
</source>
Se déplacer dans les onglets
Se déplacer dans les onglets


En avant : <source lang="bash" inline>gt</source>, en arrière : <source lang="bash" inline>gT</source>.
En avant : <source lang="vim" inline>gt</source>, en arrière : <source lang="vim" inline>gT</source>.


Ouvrir plusieurs fichier dans un onglets chacun :
Ouvrir plusieurs fichier dans un onglets chacun (à exécuter dans ''bash'') :
  $ vim -p fichier1 fichier2 fichier3
  vim -p fichier1 fichier2 fichier3
Convertir du texte en majuscule ou en minuscule
Convertir du texte en majuscule ou en minuscule
* Inverser la casse : sélectionner le texte avec <source lang="bash" inline>ctrl+v</source> et faire un <source lang="bash" inline>~</source>
* Inverser la casse : sélectionner le texte avec <source lang="bash" inline>ctrl+v</source> et faire un <source lang="bash" inline>~</source>
Ligne 111 : Ligne 166 :
* On peut utiliser <source lang="bash" inline>U</source> pour mettre en majuscule ou <source lang="bash" inline>u</source> pour mettre en minuscule
* On peut utiliser <source lang="bash" inline>U</source> pour mettre en majuscule ou <source lang="bash" inline>u</source> pour mettre en minuscule
Masquer les commentaires d'un fichier (à ajouter dans un [[#fichiers de configuration|fichier de configuration]])
Masquer les commentaires d'un fichier (à ajouter dans un [[#fichiers de configuration|fichier de configuration]])
set fdm=expr
<source lang="vim">
set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
set fdm=expr
set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0
</source>
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 <source lang="bash" inline>zo</source> (ou pressez simplement sans sélection pour agir sur tout le document), et <source lang="bash" inline>zm</source> pour '''le replier'''. Si vous avez déplié plusieurs blocs, vous pouvez '''tous les replier''' d'un coup avec <source lang="bash" inline>zM</source> ; à l'inverse, vous pouvez '''déplier tous les blocs''' d'un seul coup avec <source lang="bash" inline>zi</source>.
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 <source lang="bash" inline>zo</source> (ou pressez simplement sans sélection pour agir sur tout le document), et <source lang="bash" inline>zm</source> pour '''le replier'''. Si vous avez déplié plusieurs blocs, vous pouvez '''tous les replier''' d'un coup avec <source lang="bash" inline>zM</source> ; à l'inverse, vous pouvez '''déplier tous les blocs''' d'un seul coup avec <source lang="bash" inline>zi</source>.


Ligne 119 : Ligne 176 :


Désactiver l'ajout automatique de commentaires ([https://superuser.com/questions/271023/vim-can-i-disable-continuation-of-comments-to-the-next-line source])
Désactiver l'ajout automatique de commentaires ([https://superuser.com/questions/271023/vim-can-i-disable-continuation-of-comments-to-the-next-line source])
set formatoptions-=cro
<source lang="vim">
set formatoptions-=cro
</source>
Désactiver la gestion de la souris (qui empêche le copier/coller !)
Désactiver la gestion de la souris (qui empêche le copier/coller !)
set mouse=
<source lang="vim">
set mouse=
</source>


=Presses papiers=
=Presses papiers=
Ligne 170 : Ligne 231 :
# Télécharger IndentLine depuis les [https://github.com/Yggdroot/indentLine sources]
# Télécharger IndentLine depuis les [https://github.com/Yggdroot/indentLine sources]
# Décompresser le répertoire '''plugin''' dans <source lang="bash" inline>~/.vim/</source>
# Décompresser le répertoire '''plugin''' dans <source lang="bash" inline>~/.vim/</source>
# Ajouter dans le vimrc ce paramètre (l'espace de fin est important) : <source lang="bash" inline>set list lcs=tab:\|\ </source>
# Ajouter dans le vimrc ce paramètre (l'espace de fin est important) : <source lang="bash" inline>set list lcs=tab:\|\ </source>
==Gestionnaire de greffons==
==Gestionnaire de greffons==
===Vim-plug===
===Vim-plug===
Ligne 176 : Ligne 237 :
  curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
  curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
Ajouter les greffons à installer et utiliser dans le .vimrc
Ajouter les greffons à installer et utiliser dans le .vimrc
<source lang="bash">
<source lang="vim">
call plug#begin()
call plug#begin()
Plug 'junegunn/vim-easy-align'
Plug 'junegunn/vim-easy-align'

Version du 6 décembre 2017 à 20:25

Erreur lors de la création de la vignette : Fichier manquant

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 :

  1. Le mode interactif
  2. Le mode insertion
  3. Le mode commande
  4. Le mode visuel
  5. 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 <source lang="bash" inline><Echap></source>.

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 <source lang="bash" inline>:</source>.

Quelque commandes

Activer l'affichage des numéros de lignes <source lang="vim"> se nu </source> désactiver l'affichage des numéros de lignes <source lang="vim"> se nu! </source> Activer la coloration syntaxique <source lang="vim"> syn on </source> Désactiver la coloration syntaxique <source lang="vim"> syn off </source> Afficher la ligne où se trouve le curseur <source lang="vim"> set cursorline </source> Masquer le trait de soulignement <source lang="vim"> set cursorline! </source> Commenter plusieurs lignes <source lang="vim">

,+4 s/^/#/g

</source> Dé-commenter plusieurs lignes <source lang="vim"> .,+4 s/^#//g </source> Plus simple, pour commenter (après une sélection des lignes à commenter en mode visuel bloc <source lang="bash" inline><maj>+<v></source> et un appui sur <source lang="bash" inline>:</source>) <source lang="vim"> s/^/# </source> Dé-commenter (après sélection <source lang="bash" inline><maj>+<v></source> + <source lang="bash" inline>:</source>) <source lang="vim"> s/#// </source> ou <source lang="bash" inline><maj>+<v></source> puis <source lang="bash" inline><x></source>.

Ajouter en fin de ligne (après sélection <source lang="bash" inline><maj>+<v></source> + <source lang="bash" inline>:</source>) <source lang="vim"> s/$/\ :\ s/$/; </source> Ajouter au niveau du curseur (après sélection <source lang="bash" inline><ctrl>+<v></source> + <source lang="bash" inline>:</source>) <source lang="vim"> s/\%V/\ : s/\%V/^I </source>

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 <source lang="vim"> %s/Mot_initial/Nouveau_mot/g </source> Changer encodage caractère <source lang="vim"> set fileencoding=latin1 set fileencoding=utf-8 </source> Auto complétion CSS (une fois renseigné, faire <source lang="bash" inline><ctrl>+<x></source> + <source lang="bash" inline><ctrl>+<o></source>) <source lang="vim"> set omnifunc=csscomplete#CompleteCSS </source> Exécuter une commande bash sans quitter vim <source lang="vim"> !Commande_À_Exécuter </source> Importer fichier depuis vim <source lang="vim"> r Chemin_fichier </source> Indentation automatique <source lang="vim"> se ai </source> Permettre un copier/coller avec <source lang="vim" inline>se ai</source> <source lang="vim"> se paste </source> Activer/désactiver <source lang="vim" inline>se paste</source> en appuyant sur <source lang="bash" inline><F2></source> <source lang="vim"> set pastetoggle=<F2> </source> Insensibilité à la casse (utile pour le mode recherche notamment) <source lang="vim"> se ic </source> Activer le curseur de sélection avec la souris <source lang="vim"> se mouse=a </source> Désactiver le curseur de sélection avec la souris <source lang="vim"> se mouse= </source> Scinder l'écran pour ouvrir un autre fichier horizontalement <source lang="vim"> split [Nom_fichier] ou :sp </source> En vertical <source lang="vim"> vspli ou :vsp </source>

INFORMATION

{{{1}}}

Redéfinir l'espace de l'indentation (pour passer de 8 espaces à 3) <source lang="vim"> set tabstop=3 set shiftwidth=3 set softtabstop=3 </source> Convertir des indentation "espace" en indentation "tabulation" <source lang="vim"> %retab! </source> Créer et gérer des onglets <source lang="vim"> tabnew [nom_fichier] </source> Se déplacer dans les onglets

En avant : <source lang="vim" inline>gt</source>, en arrière : <source lang="vim" inline>gT</source>.

Ouvrir plusieurs fichier dans un onglets chacun (à exécuter dans bash) :

vim -p fichier1 fichier2 fichier3

Convertir du texte en majuscule ou en minuscule

  • Inverser la casse : sélectionner le texte avec <source lang="bash" inline>ctrl+v</source> et faire un <source lang="bash" inline>~</source>

ou

  • On peut utiliser <source lang="bash" inline>U</source> pour mettre en majuscule ou <source lang="bash" inline>u</source> pour mettre en minuscule

Masquer les commentaires d'un fichier (à ajouter dans un fichier de configuration) <source lang="vim"> set fdm=expr set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0 </source> 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 <source lang="bash" inline>zo</source> (ou pressez simplement sans sélection pour agir sur tout le document), et <source lang="bash" inline>zm</source> pour le replier. Si vous avez déplié plusieurs blocs, vous pouvez tous les replier d'un coup avec <source lang="bash" inline>zM</source> ; à l'inverse, vous pouvez déplier tous les blocs d'un seul coup avec <source lang="bash" inline>zi</source>.

Désactiver les fonctions agaçantes

Avec les mises à jour de Vim, de plus en plus de fonctions inutiles et contres-productivent sont installées par défaut (Debian Stretch, si tu m'entend...). Ce qui suit a pour but de rendre Vim de nouveau utilisable comme dans le bon vieux temps.

Désactiver l'ajout automatique de commentaires (source) <source lang="vim"> set formatoptions-=cro </source> Désactiver la gestion de la souris (qui empêche le copier/coller !) <source lang="vim"> set mouse= </source>

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 <source lang="bash" inline>"<lettre><raccourci></source> de cette manière :

Copier des lignes dans des presses papiers différents

<source lang="bash" inline>"ayy</source>, <source lang="bash" inline>"byy</source>, <source lang="bash" inline>"cyy</source>.

Coller des lignes depuis des presses papiers différents

<source lang="bash" inline>"ap</source>, <source lang="bash" inline>"bp</source>, <source lang="bash" inline>"cp</source>.

Pour ajouter une ligne à un presse papier, il faut préciser la lettre du presse papier voulu, en majuscule <source lang="bash" inline>"Byy</source>.

Pour copier/coller en prenant en compte le presse papier global (celui que l'on à lors d'un simple <source lang="bash" inline>yy</source>)

<source lang="bash" inline>"+yy</source> copie une ligne pour le presse papier global, et <source lang="bash" inline>"+p</source> colle le presse papier global.

Buffer poubelle (équivalent du /dev/null) <source lang="bash" inline>"_dd</source>

Macros

Définir l'intérêt des macros...

Créer des macros <source lang="bash" inline>q+<lettre></source> pour passer en mode enregistrement.

<source lang="bash" inline>q</source> pour terminer l'enregistrement.

<source lang="bash" inline>@+<lettre></source> 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 : <source lang="bash" inline>/etc/vim/vimrc</source>
  • Un courant, pour chaque utilisateurs en particulier : <source lang="bash" inline>~/.vimrc</source>

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 <source lang="bash" inline>/etc/vim/</source> ou dans <source lang="bash" inline>~/.vim/</source> 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 :

  1. Télécharger Emmet depuis les sources
  2. Décompresser les répertoires autoload et plugin dans <source lang="bash" inline>~/.vim/</source>

Pour utiliser Emmet, il faut écrire dans un fichier les différentes expressions possibles et faire la combinaison de touches (en mode interactif) <source lang="bash" inline><c-y>,</source> (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 :

  1. Télécharger IndentLine depuis les sources
  2. Décompresser le répertoire plugin dans <source lang="bash" inline>~/.vim/</source>
  3. Ajouter dans le vimrc ce paramètre (l'espace de fin est important) : <source lang="bash" inline>set list lcs=tab:\|\ </source>

Gestionnaire de greffons

Vim-plug

Télécharger le greffon

curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Ajouter les greffons à installer et utiliser dans le .vimrc <source lang="vim"> call plug#begin() Plug 'junegunn/vim-easy-align' Plug 'vim-airline/vim-airline' Plug 'vim-airline/vim-airline-themes' Plug 'hzchirs/vim-material' call plug#end() </source> On trouve les noms de ces greffons sur leur page GIT. Installer les greffons mis dans le .vimrc (aller dans vim)

:PlugInstall

INFORMATION

{{{1}}}

Un exemple de .vimrc <source lang="vim"> se nu se termguicolors set pastetoggle=<F2>

"L'indentation passe à 3 caractères set tabstop=3 set shiftwidth=3 set softtabstop=3

"Activer les greffons call plug#begin()

  Plug 'junegunn/vim-easy-align'
  Plug 'vim-airline/vim-airline'
  Plug 'vim-airline/vim-airline-themes'
  Plug 'hzchirs/vim-material'

call plug#end()

"Appliquer le thème vim-matérial colorscheme vim-material let g:airline_theme='material' </source>

Sources de la section

Couleurs 24bits

Pour avoir des couleurs plus sympas avec VIM (remplace le syn on), il faut utiliser se termguicolors. Attention, il faut que le terminal utilisé soit compatible. Cette page Github peut aider à déterminer si c'est le cas.

Sources