« Vim » : différence entre les versions
Ajout de la section "Historique" + mise en italique de 2 mots dans la section des greffons. |
Ajout de la configuration permettant le retour automatique à la dernière ligne affichée à la réouverture d'un fichier + ajout d'une méthode permettant d'ouvrir Vim en ignorant les fichiers de configuration + remplacement des balises "source" obsolètes + correction de fautes |
||
| Ligne 23 : | Ligne 23 : | ||
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. | 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 < | Pour revenir au mode interactif, il faut presser la touche <syntaxhighlight lang="bash" inline><Echap></syntaxhighlight>. | ||
==Mode commande== | ==Mode commande== | ||
Ce mode permet d’interagir avec ''Vim'' par l'intermédiaire de commandes. Ces dernières vont permettre 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... | Ce mode permet d’interagir avec ''Vim'' par l'intermédiaire de commandes. Ces dernières vont permettre 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 < | On entre une commande en étant au préalable en mode interactif et en tapant <syntaxhighlight lang="bash" inline>:</syntaxhighlight>. | ||
===Quelque commandes=== | ===Quelque commandes=== | ||
Activer l'affichage des numéros de lignes | Activer l'affichage des numéros de lignes | ||
< | <syntaxhighlight lang="vim"> | ||
se nu | se nu | ||
</ | </syntaxhighlight> | ||
désactiver l'affichage des numéros de lignes | désactiver l'affichage des numéros de lignes | ||
< | <syntaxhighlight lang="vim"> | ||
se nu! | se nu! | ||
</ | </syntaxhighlight> | ||
Activer la coloration syntaxique | Activer la coloration syntaxique | ||
< | <syntaxhighlight lang="vim"> | ||
syn on | syn on | ||
</ | </syntaxhighlight> | ||
Désactiver la coloration syntaxique | Désactiver la coloration syntaxique | ||
< | <syntaxhighlight lang="vim"> | ||
syn off | syn off | ||
</ | </syntaxhighlight> | ||
Afficher la ligne où se trouve le curseur | Afficher la ligne où se trouve le curseur | ||
< | <syntaxhighlight lang="vim"> | ||
set cursorline | set cursorline | ||
</ | </syntaxhighlight> | ||
Masquer le trait de soulignement | Masquer le trait de soulignement | ||
< | <syntaxhighlight lang="vim"> | ||
set cursorline! | set cursorline! | ||
</ | </syntaxhighlight> | ||
Commenter plusieurs lignes | Commenter plusieurs lignes | ||
< | <syntaxhighlight lang="vim"> | ||
,+4 s/^/#/g | |||
</ | </syntaxhighlight> | ||
Dé-commenter plusieurs lignes | Dé-commenter plusieurs lignes | ||
< | <syntaxhighlight lang="vim"> | ||
.,+4 s/^#//g | .,+4 s/^#//g | ||
</ | </syntaxhighlight> | ||
Plus simple, pour commenter (après une sélection des lignes à commenter en mode visuel bloc < | Plus simple, pour commenter (après une sélection des lignes à commenter en mode visuel bloc <syntaxhighlight lang="bash" inline><maj>+<v></syntaxhighlight> et un appui sur <syntaxhighlight lang="bash" inline>:</syntaxhighlight>) | ||
< | <syntaxhighlight lang="vim"> | ||
s/^/# | s/^/# | ||
</ | </syntaxhighlight> | ||
Dé-commenter (après sélection <syntaxhighlight lang="bash" inline><maj>+<v></syntaxhighlight> + <syntaxhighlight lang="bash" inline>:</syntaxhighlight>) | |||
< | <syntaxhighlight lang="vim"> | ||
s/#// | s/#// | ||
</ | </syntaxhighlight> | ||
ou < | ou <syntaxhighlight lang="bash" inline><maj>+<v></syntaxhighlight> puis <syntaxhighlight lang="bash" inline><x></syntaxhighlight>. | ||
Ajouter en fin de ligne (après sélection < | Ajouter en fin de ligne (après sélection <syntaxhighlight lang="bash" inline><maj>+<v></syntaxhighlight> + <syntaxhighlight lang="bash" inline>:</syntaxhighlight>) | ||
< | <syntaxhighlight lang="vim"> | ||
s/$/\ :\ | s/$/\ :\ | ||
s/$/; | s/$/; | ||
</ | </syntaxhighlight> | ||
Ajouter au niveau du curseur (après sélection < | Ajouter au niveau du curseur (après sélection <syntaxhighlight lang="bash" inline><ctrl>+<v></syntaxhighlight> + <syntaxhighlight lang="bash" inline>:</syntaxhighlight>) | ||
< | <syntaxhighlight lang="vim"> | ||
s/\%V/\ : | s/\%V/\ : | ||
s/\%V/^I | s/\%V/^I | ||
</ | </syntaxhighlight> | ||
<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 100 : | Ligne 100 : | ||
Remplacer un mot par un autre | Remplacer un mot par un autre | ||
< | <syntaxhighlight lang="vim"> | ||
%s/Mot_initial/Nouveau_mot/g | %s/Mot_initial/Nouveau_mot/g | ||
</ | </syntaxhighlight> | ||
Changer encodage caractère | Changer encodage caractère | ||
< | <syntaxhighlight lang="vim"> | ||
set fileencoding=latin1 | set fileencoding=latin1 | ||
set fileencoding=utf-8 | set fileencoding=utf-8 | ||
</ | </syntaxhighlight> | ||
Auto complétion ''CSS'' (une fois renseigné, faire < | Auto complétion ''CSS'' (une fois renseigné, faire <syntaxhighlight lang="bash" inline><ctrl>+<x></syntaxhighlight> + <syntaxhighlight lang="bash" inline><ctrl>+<o></syntaxhighlight>) | ||
< | <syntaxhighlight lang="vim"> | ||
set omnifunc=csscomplete#CompleteCSS | set omnifunc=csscomplete#CompleteCSS | ||
</ | </syntaxhighlight> | ||
Exécuter une [[Shell bash|commande Bash]] sans quitter ''Vim'' | Exécuter une [[Shell bash|commande Bash]] sans quitter ''Vim'' | ||
< | <syntaxhighlight lang="vim"> | ||
!Commande_À_Exécuter | !Commande_À_Exécuter | ||
</ | </syntaxhighlight> | ||
Importer un fichier depuis ''Vim'' | Importer un fichier depuis ''Vim'' | ||
< | <syntaxhighlight lang="vim"> | ||
r Chemin_fichier | r Chemin_fichier | ||
</ | </syntaxhighlight> | ||
Indentation automatique | Indentation automatique | ||
< | <syntaxhighlight lang="vim"> | ||
se ai | se ai | ||
</ | </syntaxhighlight> | ||
Permettre un copier/coller respectant l'indentation avec < | Permettre un copier/coller respectant l'indentation avec <syntaxhighlight lang="vim" inline>se ai</syntaxhighlight> | ||
< | <syntaxhighlight lang="vim"> | ||
se paste | se paste | ||
</ | </syntaxhighlight> | ||
Activer/désactiver < | Activer/désactiver <syntaxhighlight lang="vim" inline>se paste</syntaxhighlight> en appuyant sur <syntaxhighlight lang="bash" inline><F2></syntaxhighlight> | ||
< | <syntaxhighlight lang="vim"> | ||
set pastetoggle=<F2> | set pastetoggle=<F2> | ||
</ | </syntaxhighlight> | ||
Insensibilité à la casse (utile pour le mode recherche notamment) | Insensibilité à la casse (utile pour le mode recherche notamment) | ||
< | <syntaxhighlight lang="vim"> | ||
se ic | se ic | ||
</ | </syntaxhighlight> | ||
Activer le curseur de sélection avec la souris | Activer le curseur de sélection avec la souris | ||
< | <syntaxhighlight lang="vim"> | ||
se mouse=a | se mouse=a | ||
</ | </syntaxhighlight> | ||
Désactiver le curseur de sélection avec la souris | Désactiver le curseur de sélection avec la souris | ||
< | <syntaxhighlight lang="vim"> | ||
se mouse= | se mouse= | ||
</ | </syntaxhighlight> | ||
Scinder l'écran pour ouvrir un autre fichier horizontalement | Scinder l'écran pour ouvrir un autre fichier horizontalement | ||
< | <syntaxhighlight lang="vim"> | ||
split [Nom_fichier] ou :sp | split [Nom_fichier] ou :sp | ||
</ | </syntaxhighlight> | ||
En vertical | En vertical | ||
< | <syntaxhighlight lang="vim"> | ||
vspli ou :vsp | vspli ou :vsp | ||
</ | </syntaxhighlight> | ||
{{info|Le couple < | {{info|Le couple <syntaxhighlight lang="bash" inline><ctrl-w> + flèche</syntaxhighlight> 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) | ||
< | <syntaxhighlight lang="vim"> | ||
set tabstop=3 | set tabstop=3 | ||
set shiftwidth=3 | set shiftwidth=3 | ||
set softtabstop=3 | set softtabstop=3 | ||
</ | </syntaxhighlight> | ||
Convertir des indentation "espace" en indentation "tabulation" | Convertir des indentation "espace" en indentation "tabulation" | ||
< | <syntaxhighlight lang="vim"> | ||
%retab! | %retab! | ||
</ | </syntaxhighlight> | ||
Créer et gérer des onglets | Créer et gérer des onglets | ||
< | <syntaxhighlight lang="vim"> | ||
tabnew [nom_fichier] | tabnew [nom_fichier] | ||
</ | </syntaxhighlight> | ||
Se déplacer dans les onglets | Se déplacer dans les onglets | ||
En avant : < | En avant : <syntaxhighlight lang="vim" inline>gt</syntaxhighlight>, en arrière : <syntaxhighlight lang="vim" inline>gT</syntaxhighlight>. | ||
Ouvrir plusieurs fichiers dans un onglet chacun (à exécuter dans ''Bash'') : | Ouvrir plusieurs fichiers dans un onglet chacun (à exécuter dans ''Bash'') : | ||
| Ligne 191 : | Ligne 191 : | ||
Convertir du texte en majuscule ou en minuscule | Convertir du texte en majuscule ou en minuscule | ||
* Inverser la casse : sélectionner le texte avec < | * Inverser la casse : sélectionner le texte avec <syntaxhighlight lang="bash" inline>ctrl+v</syntaxhighlight> et faire un <syntaxhighlight lang="bash" inline>~</syntaxhighlight> | ||
ou | ou | ||
* On peut utiliser < | * On peut utiliser <syntaxhighlight lang="bash" inline>U</syntaxhighlight> pour mettre en majuscule ou <syntaxhighlight lang="bash" inline>u</syntaxhighlight> 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]]) | ||
< | <syntaxhighlight lang="vim"> | ||
set fdm=expr | set fdm=expr | ||
set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0 | set fde=getline(v:lnum)=~'^\\s*#'?1:getline(prevnonblank(v:lnum))=~'^\\s*#'?1:getline(nextnonblank(v:lnum))=~'^\\s*#'?1:0 | ||
</ | </syntaxhighlight> | ||
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 < | 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 <syntaxhighlight lang="bash" inline>zo</syntaxhighlight> (ou pressez simplement sans sélection pour agir sur tout le document), et <syntaxhighlight lang="bash" inline>zm</syntaxhighlight> pour '''le replier'''. Si vous avez déplié plusieurs blocs, vous pouvez '''tous les replier''' d'un coup avec <syntaxhighlight lang="bash" inline>zM</syntaxhighlight> ; à l'inverse, vous pouvez '''déplier tous les blocs''' d'un seul coup avec <syntaxhighlight lang="bash" inline>zi</syntaxhighlight>. | ||
Utiliser Vim en tant qu'éditeur hexadécimale ([http://pellelatarte.fr/2010/10/utiliser-vi-en-editeur-hexadecimal/ source]) | Utiliser Vim en tant qu'éditeur hexadécimale ([http://pellelatarte.fr/2010/10/utiliser-vi-en-editeur-hexadecimal/ source]) | ||
| Ligne 211 : | Ligne 211 : | ||
{{attention|Un enregistrement en mode hexadécimale enregistrera le texte comme tel, il faudra alors désactiver ce mode et réenregistrer le document pour revenir à la normal.}} | {{attention|Un enregistrement en mode hexadécimale enregistrera le texte comme tel, il faudra alors désactiver ce mode et réenregistrer le document pour revenir à la normal.}} | ||
Garder la position du curseur là où il était à la [https://askubuntu.com/questions/202075/how-do-i-get-vim-to-remember-the-line-i-was-on-when-i-reopen-a-file réouverture] du fichier | |||
<syntaxhighlight lang="vim"> | |||
if has("autocmd") | |||
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif | |||
endif | |||
</syntaxhighlight> | |||
===Désactiver les fonctions agaçantes=== | ===Désactiver les fonctions agaçantes=== | ||
Avec les mises à jour de ''Vim'', de plus en plus de fonctions inutiles et contres-productives sont installées par défaut (Debian Stretch, si tu m'entends...). Ce qui suit a pour but de rendre ''Vim'' de nouveau utilisable comme dans le bon vieux temps. | Avec les mises à jour de ''Vim'', de plus en plus de fonctions inutiles et contres-productives sont installées par défaut (''Debian Stretch'', si tu m'entends...). 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 ([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]) | ||
< | <syntaxhighlight lang="vim"> | ||
set formatoptions-=cro | set formatoptions-=cro | ||
</ | </syntaxhighlight> | ||
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 !) | ||
< | <syntaxhighlight lang="vim"> | ||
set mouse= | set mouse= | ||
</ | </syntaxhighlight> | ||
=Presses papiers= | =Presses papiers= | ||
''Vim'' possèdes plusieurs presses papiers appelés registres (''register'' ou ''buffers'') qui peuvent être exploités afin de maintenir plusieurs copier/coller en mémoires. Il y en a un par lettre de l'alphabet. Ils s'utilisent en '''mode interactif''' avec les touches < | ''Vim'' possèdes plusieurs presses papiers appelés registres (''register'' ou ''buffers'') qui peuvent être exploités afin de maintenir plusieurs copier/coller en mémoires. Il y en a un par lettre de l'alphabet. Ils s'utilisent en '''mode interactif''' avec les touches <syntaxhighlight lang="bash" inline><">+<lettre>+<raccourci></syntaxhighlight> de cette manière : | ||
{{attention|Le contenu des presses papiers est sauvegardé même après avoir quitté ''Vim'' (ces | {{attention|Le contenu des presses papiers est sauvegardé même après avoir quitté ''Vim'' (ces informations sont stockés dans le fichier <syntaxhighlight lang="bash" inline>~/.viminfo</syntaxhighlight>). Ceci peut avoir des conséquences en terme de confidentialité des informations. Au besoin, pensez à utiliser le registre poubelle ainsi que la suppression du contenu des registres expliqué plus bas.}} | ||
Copier des lignes dans des presses papiers différents | Copier des lignes dans des presses papiers différents | ||
< | <syntaxhighlight lang="bash" inline>"ayy</syntaxhighlight>, <syntaxhighlight lang="bash" inline>"byy</syntaxhighlight>, <syntaxhighlight lang="bash" inline>"cyy</syntaxhighlight>. | ||
Coller des lignes depuis des presses papiers différents | Coller des lignes depuis des presses papiers différents | ||
< | <syntaxhighlight lang="bash" inline>"ap</syntaxhighlight>, <syntaxhighlight lang="bash" inline>"bp</syntaxhighlight>, <syntaxhighlight lang="bash" inline>"cp</syntaxhighlight>. | ||
Pour ajouter une ligne à un presse papier, il faut préciser la lettre du presse papier voulu, en majuscule < | Pour ajouter une ligne à un presse papier, il faut préciser la lettre du presse papier voulu, en majuscule <syntaxhighlight lang="bash" inline>"Byy</syntaxhighlight>. | ||
Pour copier/coller en prenant en compte le presse papier par défaut (celui que l'on à lors d'un simple < | Pour copier/coller en prenant en compte le presse papier par défaut (celui que l'on à lors d'un simple <syntaxhighlight lang="bash" inline>yy</syntaxhighlight>) | ||
< | <syntaxhighlight lang="bash" inline>"+yy</syntaxhighlight> copie une ligne pour le presse papier par défaut, et <syntaxhighlight lang="bash" inline>"+p</syntaxhighlight> colle le presse papier par défaut (ceci n'a aucun intérêt...). | ||
Registre poubelle (équivalent du /dev/null). Permet de supprimer des lignes sans les conserver dans un registre | Registre poubelle (équivalent du /dev/null). Permet de supprimer des lignes sans les conserver dans un registre | ||
< | <syntaxhighlight lang="bash" inline>"_dd</syntaxhighlight> | ||
Pour vider le [https://stackoverflow.com/questions/19430200/how-to-clear-vim-registers-effectively contenu] d'un registre, il faut utiliser la commande < | Pour vider le [https://stackoverflow.com/questions/19430200/how-to-clear-vim-registers-effectively contenu] d'un registre, il faut utiliser la commande <syntaxhighlight lang="bash" inline>:let @a = ''</syntaxhighlight> en remplaçant la lettre par celle de votre registre ( utiliser <syntaxhighlight lang="bash" inline>"</syntaxhighlight> pour le registre par défaut). | ||
=Historique= | =Historique= | ||
L'historique de l'éditeur est parsemé dans le fichier < | L'historique de l'éditeur est parsemé dans le fichier <syntaxhighlight lang="bash" inline>~/.viminfo</syntaxhighlight>. | ||
Pour [https://unix.stackexchange.com/questions/204689/how-to-clear-search-and-command-history-in-vim purger] intégralement celui des recherches, il est possible de faire < | Pour [https://unix.stackexchange.com/questions/204689/how-to-clear-search-and-command-history-in-vim purger] intégralement celui des recherches, il est possible de faire <syntaxhighlight lang="vim" inline>:call histdel('/')</syntaxhighlight>. Pour celui des commandes, on fera <syntaxhighlight lang="vim" inline>:call histdel(':')</syntaxhighlight>. | ||
Il est également possible de ne supprimer qu'une entrée en particulier via un motif: < | Il est également possible de ne supprimer qu'une entrée en particulier via un motif: <syntaxhighlight lang="vim" inline>:call histdel(":", "MOT_CLÉ_CONTENU_DANS_VOTRE_COMMANDE")</syntaxhighlight>. | ||
=Macros= | =Macros= | ||
| Ligne 260 : | Ligne 267 : | ||
Créer des macros | Créer des macros | ||
< | <syntaxhighlight lang="bash" inline>q+<lettre></syntaxhighlight> pour passer en mode enregistrement. | ||
< | <syntaxhighlight lang="bash" inline>q</syntaxhighlight> pour terminer l'enregistrement. | ||
< | <syntaxhighlight lang="bash" inline>@+<lettre></syntaxhighlight> pour la jouer (ça fait comme un presse papier). | ||
=Fichiers de configuration= | =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 types : | Les fichiers de configuration de ''Vim'' permettent de définir des paramètres activés à chaque lancement de l'éditeur. Il en existe deux types : | ||
* Un général, actif pour tout les utilisateurs du système : < | * Un général, actif pour tout les utilisateurs du système : <syntaxhighlight lang="bash" inline>/etc/vim/vimrc</syntaxhighlight> | ||
* Un courant, pour chaque utilisateurs en particulier : < | * Un courant, pour chaque utilisateurs en particulier : <syntaxhighlight lang="bash" inline>~/.vimrc</syntaxhighlight> | ||
Il suffit de renseigner des commandes Vim (sans les ''':''') dans ces fichiers pour que leur effet soit permanent. | Il suffit de renseigner des commandes Vim (sans les ''':''') dans ces fichiers pour que leur effet soit permanent. | ||
Pour exécuter ''Vim'' tout en [https://evanhahn.com/ignore-vimrc-with-vim/ ignorant] les fichiers de configuration : | |||
vim -u NONE | |||
=Greffons= | =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 < | 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 <syntaxhighlight lang="bash" inline>/etc/vim/</syntaxhighlight> ou dans <syntaxhighlight lang="bash" inline>~/.vim/</syntaxhighlight> pour les rendre spécifiques à chaque utilisateur. | ||
==Greffons que j'utilise== | ==Greffons que j'utilise== | ||
| Ligne 280 : | Ligne 290 : | ||
# Télécharger ''Emmet'' depuis les [https://github.com/mattn/emmet-vim sources] | # Télécharger ''Emmet'' depuis les [https://github.com/mattn/emmet-vim sources] | ||
# Décompresser les répertoires '''autoload''' et '''plugin''' dans < | # Décompresser les répertoires '''autoload''' et '''plugin''' dans <syntaxhighlight lang="bash" inline>~/.vim/</syntaxhighlight> | ||
Pour utiliser ''Emmet'', il faut écrire dans un fichier les différentes [http://docs.emmet.io/cheat-sheet/ expressions possibles] et faire la combinaison de touches (en mode interactif) < | Pour utiliser ''Emmet'', il faut écrire dans un fichier les différentes [http://docs.emmet.io/cheat-sheet/ expressions possibles] et faire la combinaison de touches (en mode interactif) <syntaxhighlight lang="bash" inline><c-y>,</syntaxhighlight> (faire '''ctrl + y''' et ensuite sur ''','''). | ||
===IndentLine=== | ===IndentLine=== | ||
| Ligne 289 : | Ligne 299 : | ||
# 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 < | # Décompresser le répertoire '''plugin''' dans <syntaxhighlight lang="bash" inline>~/.vim/</syntaxhighlight> | ||
# Ajouter dans le ''.vimrc'' ce paramètre (l'espace de fin est important) : < | # Ajouter dans le ''.vimrc'' ce paramètre (l'espace de fin est important) : <syntaxhighlight lang="bash" inline>set list lcs=tab:\|\ </syntaxhighlight> | ||
==Gestionnaire de greffons== | ==Gestionnaire de greffons== | ||
| Ligne 298 : | Ligne 308 : | ||
Ajouter les greffons à installer et ajouter dans le ''vimrc'' | Ajouter les greffons à installer et ajouter dans le ''vimrc'' | ||
< | <syntaxhighlight lang="vim"> | ||
call plug#begin() | call plug#begin() | ||
Plug 'junegunn/vim-easy-align' | Plug 'junegunn/vim-easy-align' | ||
| Ligne 305 : | Ligne 315 : | ||
Plug 'hzchirs/vim-material' | Plug 'hzchirs/vim-material' | ||
call plug#end() | call plug#end() | ||
</ | </syntaxhighlight> | ||
''On trouve les noms de ces greffons sur leur page GIT.'' | ''On trouve les noms de ces greffons sur leur page GIT.'' | ||
Installer les greffons mis dans le ''vimrc'' (aller dans < | Installer les greffons mis dans le ''vimrc'' (aller dans <syntaxhighlight lang="bash" inline>vim</syntaxhighlight>) | ||
:PlugInstall | :PlugInstall | ||
{{info|Tout est mis dans < | {{info|Tout est mis dans <syntaxhighlight lang="bash" inline>.vim</syntaxhighlight>. Le paquet <syntaxhighlight lang="bash" inline>git</syntaxhighlight> est nécessaire.}} | ||
Un exemple de ''.vimrc'' | Un exemple de ''.vimrc'' | ||
< | <syntaxhighlight lang="vim"> | ||
se nu | se nu | ||
se termguicolors | se termguicolors | ||
| Ligne 336 : | Ligne 346 : | ||
colorscheme vim-material | colorscheme vim-material | ||
let g:airline_theme='material' | let g:airline_theme='material' | ||
</ | </syntaxhighlight> | ||
====Sources de la section==== | ====Sources de la section==== | ||
Version du 2 novembre 2022 à 14:17
Erreur lors de la création de la vignette : Fichier manquant
Vim est un éditeur de texte, bifurcation 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 de 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 <syntaxhighlight lang="bash" inline><Echap></syntaxhighlight>.
Mode commande
Ce mode permet d’interagir avec Vim par l'intermédiaire de commandes. Ces dernières vont permettre 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 <syntaxhighlight lang="bash" inline>:</syntaxhighlight>.
Quelque commandes
Activer l'affichage des numéros de lignes <syntaxhighlight lang="vim"> se nu </syntaxhighlight>
désactiver l'affichage des numéros de lignes <syntaxhighlight lang="vim"> se nu! </syntaxhighlight>
Activer la coloration syntaxique <syntaxhighlight lang="vim"> syn on </syntaxhighlight>
Désactiver la coloration syntaxique <syntaxhighlight lang="vim"> syn off </syntaxhighlight>
Afficher la ligne où se trouve le curseur <syntaxhighlight lang="vim"> set cursorline </syntaxhighlight>
Masquer le trait de soulignement <syntaxhighlight lang="vim"> set cursorline! </syntaxhighlight>
Commenter plusieurs lignes <syntaxhighlight lang="vim"> ,+4 s/^/#/g </syntaxhighlight>
Dé-commenter plusieurs lignes <syntaxhighlight lang="vim"> .,+4 s/^#//g </syntaxhighlight>
Plus simple, pour commenter (après une sélection des lignes à commenter en mode visuel bloc <syntaxhighlight lang="bash" inline><maj>+<v></syntaxhighlight> et un appui sur <syntaxhighlight lang="bash" inline>:</syntaxhighlight>) <syntaxhighlight lang="vim"> s/^/# </syntaxhighlight>
Dé-commenter (après sélection <syntaxhighlight lang="bash" inline><maj>+<v></syntaxhighlight> + <syntaxhighlight lang="bash" inline>:</syntaxhighlight>) <syntaxhighlight lang="vim"> s/#// </syntaxhighlight>
ou <syntaxhighlight lang="bash" inline><maj>+<v></syntaxhighlight> puis <syntaxhighlight lang="bash" inline><x></syntaxhighlight>.
Ajouter en fin de ligne (après sélection <syntaxhighlight lang="bash" inline><maj>+<v></syntaxhighlight> + <syntaxhighlight lang="bash" inline>:</syntaxhighlight>) <syntaxhighlight lang="vim"> s/$/\ :\ s/$/; </syntaxhighlight>
Ajouter au niveau du curseur (après sélection <syntaxhighlight lang="bash" inline><ctrl>+<v></syntaxhighlight> + <syntaxhighlight lang="bash" inline>:</syntaxhighlight>) <syntaxhighlight lang="vim"> s/\%V/\ : s/\%V/^I </syntaxhighlight>
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 <syntaxhighlight lang="vim"> %s/Mot_initial/Nouveau_mot/g </syntaxhighlight>
Changer encodage caractère <syntaxhighlight lang="vim"> set fileencoding=latin1 set fileencoding=utf-8 </syntaxhighlight>
Auto complétion CSS (une fois renseigné, faire <syntaxhighlight lang="bash" inline><ctrl>+<x></syntaxhighlight> + <syntaxhighlight lang="bash" inline><ctrl>+<o></syntaxhighlight>) <syntaxhighlight lang="vim"> set omnifunc=csscomplete#CompleteCSS </syntaxhighlight>
Exécuter une commande Bash sans quitter Vim <syntaxhighlight lang="vim"> !Commande_À_Exécuter </syntaxhighlight>
Importer un fichier depuis Vim <syntaxhighlight lang="vim"> r Chemin_fichier </syntaxhighlight>
Indentation automatique <syntaxhighlight lang="vim"> se ai </syntaxhighlight>
Permettre un copier/coller respectant l'indentation avec <syntaxhighlight lang="vim" inline>se ai</syntaxhighlight> <syntaxhighlight lang="vim"> se paste </syntaxhighlight>
Activer/désactiver <syntaxhighlight lang="vim" inline>se paste</syntaxhighlight> en appuyant sur <syntaxhighlight lang="bash" inline><F2></syntaxhighlight> <syntaxhighlight lang="vim"> set pastetoggle=<F2> </syntaxhighlight>
Insensibilité à la casse (utile pour le mode recherche notamment) <syntaxhighlight lang="vim"> se ic </syntaxhighlight>
Activer le curseur de sélection avec la souris <syntaxhighlight lang="vim"> se mouse=a </syntaxhighlight>
Désactiver le curseur de sélection avec la souris <syntaxhighlight lang="vim"> se mouse= </syntaxhighlight>
Scinder l'écran pour ouvrir un autre fichier horizontalement <syntaxhighlight lang="vim"> split [Nom_fichier] ou :sp </syntaxhighlight>
En vertical <syntaxhighlight lang="vim"> vspli ou :vsp </syntaxhighlight>
INFORMATION
{{{1}}}Redéfinir l'espace de l'indentation (pour passer de 8 espaces à 3) <syntaxhighlight lang="vim"> set tabstop=3 set shiftwidth=3 set softtabstop=3 </syntaxhighlight>
Convertir des indentation "espace" en indentation "tabulation" <syntaxhighlight lang="vim"> %retab! </syntaxhighlight> Créer et gérer des onglets <syntaxhighlight lang="vim"> tabnew [nom_fichier] </syntaxhighlight>
Se déplacer dans les onglets
En avant : <syntaxhighlight lang="vim" inline>gt</syntaxhighlight>, en arrière : <syntaxhighlight lang="vim" inline>gT</syntaxhighlight>.
Ouvrir plusieurs fichiers dans un onglet 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 <syntaxhighlight lang="bash" inline>ctrl+v</syntaxhighlight> et faire un <syntaxhighlight lang="bash" inline>~</syntaxhighlight>
ou
- On peut utiliser <syntaxhighlight lang="bash" inline>U</syntaxhighlight> pour mettre en majuscule ou <syntaxhighlight lang="bash" inline>u</syntaxhighlight> pour mettre en minuscule
Masquer les commentaires d'un fichier (à ajouter dans un fichier de configuration) <syntaxhighlight 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 </syntaxhighlight>
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 <syntaxhighlight lang="bash" inline>zo</syntaxhighlight> (ou pressez simplement sans sélection pour agir sur tout le document), et <syntaxhighlight lang="bash" inline>zm</syntaxhighlight> pour le replier. Si vous avez déplié plusieurs blocs, vous pouvez tous les replier d'un coup avec <syntaxhighlight lang="bash" inline>zM</syntaxhighlight> ; à l'inverse, vous pouvez déplier tous les blocs d'un seul coup avec <syntaxhighlight lang="bash" inline>zi</syntaxhighlight>.
Utiliser Vim en tant qu'éditeur hexadécimale (source)
%!xxd
Revenir à la normal
%!xxd -r
ATTENTION
Un enregistrement en mode hexadécimale enregistrera le texte comme tel, il faudra alors désactiver ce mode et réenregistrer le document pour revenir à la normal.Garder la position du curseur là où il était à la réouverture du fichier <syntaxhighlight lang="vim"> if has("autocmd") au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif endif </syntaxhighlight>
Désactiver les fonctions agaçantes
Avec les mises à jour de Vim, de plus en plus de fonctions inutiles et contres-productives sont installées par défaut (Debian Stretch, si tu m'entends...). 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) <syntaxhighlight lang="vim"> set formatoptions-=cro </syntaxhighlight>
Désactiver la gestion de la souris (qui empêche le copier/coller !) <syntaxhighlight lang="vim"> set mouse= </syntaxhighlight>
Presses papiers
Vim possèdes plusieurs presses papiers appelés registres (register ou buffers) qui peuvent être exploités afin de maintenir plusieurs copier/coller en mémoires. Il y en a un par lettre de l'alphabet. Ils s'utilisent en mode interactif avec les touches <syntaxhighlight lang="bash" inline><">+<lettre>+<raccourci></syntaxhighlight> de cette manière :
ATTENTION
{{{1}}}Copier des lignes dans des presses papiers différents
<syntaxhighlight lang="bash" inline>"ayy</syntaxhighlight>, <syntaxhighlight lang="bash" inline>"byy</syntaxhighlight>, <syntaxhighlight lang="bash" inline>"cyy</syntaxhighlight>.
Coller des lignes depuis des presses papiers différents
<syntaxhighlight lang="bash" inline>"ap</syntaxhighlight>, <syntaxhighlight lang="bash" inline>"bp</syntaxhighlight>, <syntaxhighlight lang="bash" inline>"cp</syntaxhighlight>.
Pour ajouter une ligne à un presse papier, il faut préciser la lettre du presse papier voulu, en majuscule <syntaxhighlight lang="bash" inline>"Byy</syntaxhighlight>.
Pour copier/coller en prenant en compte le presse papier par défaut (celui que l'on à lors d'un simple <syntaxhighlight lang="bash" inline>yy</syntaxhighlight>)
<syntaxhighlight lang="bash" inline>"+yy</syntaxhighlight> copie une ligne pour le presse papier par défaut, et <syntaxhighlight lang="bash" inline>"+p</syntaxhighlight> colle le presse papier par défaut (ceci n'a aucun intérêt...).
Registre poubelle (équivalent du /dev/null). Permet de supprimer des lignes sans les conserver dans un registre <syntaxhighlight lang="bash" inline>"_dd</syntaxhighlight>
Pour vider le contenu d'un registre, il faut utiliser la commande <syntaxhighlight lang="bash" inline>:let @a = </syntaxhighlight> en remplaçant la lettre par celle de votre registre ( utiliser <syntaxhighlight lang="bash" inline>"</syntaxhighlight> pour le registre par défaut).
Historique
L'historique de l'éditeur est parsemé dans le fichier <syntaxhighlight lang="bash" inline>~/.viminfo</syntaxhighlight>.
Pour purger intégralement celui des recherches, il est possible de faire <syntaxhighlight lang="vim" inline>:call histdel('/')</syntaxhighlight>. Pour celui des commandes, on fera <syntaxhighlight lang="vim" inline>:call histdel(':')</syntaxhighlight>.
Il est également possible de ne supprimer qu'une entrée en particulier via un motif: <syntaxhighlight lang="vim" inline>:call histdel(":", "MOT_CLÉ_CONTENU_DANS_VOTRE_COMMANDE")</syntaxhighlight>.
Macros
Définir l'intérêt des macros...
Créer des macros <syntaxhighlight lang="bash" inline>q+<lettre></syntaxhighlight> pour passer en mode enregistrement.
<syntaxhighlight lang="bash" inline>q</syntaxhighlight> pour terminer l'enregistrement.
<syntaxhighlight lang="bash" inline>@+<lettre></syntaxhighlight> 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 types :
- Un général, actif pour tout les utilisateurs du système : <syntaxhighlight lang="bash" inline>/etc/vim/vimrc</syntaxhighlight>
- Un courant, pour chaque utilisateurs en particulier : <syntaxhighlight lang="bash" inline>~/.vimrc</syntaxhighlight>
Il suffit de renseigner des commandes Vim (sans les :) dans ces fichiers pour que leur effet soit permanent.
Pour exécuter Vim tout en ignorant les fichiers de configuration :
vim -u NONE
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 <syntaxhighlight lang="bash" inline>/etc/vim/</syntaxhighlight> ou dans <syntaxhighlight lang="bash" inline>~/.vim/</syntaxhighlight> 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 <syntaxhighlight lang="bash" inline>~/.vim/</syntaxhighlight>
Pour utiliser Emmet, il faut écrire dans un fichier les différentes expressions possibles et faire la combinaison de touches (en mode interactif) <syntaxhighlight lang="bash" inline><c-y>,</syntaxhighlight> (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 <syntaxhighlight lang="bash" inline>~/.vim/</syntaxhighlight>
- Ajouter dans le .vimrc ce paramètre (l'espace de fin est important) : <syntaxhighlight lang="bash" inline>set list lcs=tab:\|\ </syntaxhighlight>
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 ajouter dans le vimrc <syntaxhighlight 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() </syntaxhighlight>
On trouve les noms de ces greffons sur leur page GIT.
Installer les greffons mis dans le vimrc (aller dans <syntaxhighlight lang="bash" inline>vim</syntaxhighlight>)
:PlugInstall
INFORMATION
{{{1}}}Un exemple de .vimrc <syntaxhighlight 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' </syntaxhighlight>
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.