Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
vim [Le 25/05/2016, 16:23] – ajout § Comparaison de fichiers bcag2vim [Le 02/09/2020, 15:21] (Version actuelle) – [Mettre en français la doc vim] suppr lien mort, fixme v8 bcag2
Ligne 1: Ligne 1:
 +{{tag>éditeur_de_texte console programmation IDE}}
  
 +----
 +
 +====== Vi IMproved ======
 +Vim est un [[éditeur de texte]] pour le [[:terminal]] sous [[:gnu|GNU]]/[[:linux|Linux]]. Il a une stabilité exemplaire et ne cesse d'être amélioré. Malgré son austérité, c'est un outil très puissant qui n'a rien à envier aux éditeurs graphiques comme [[:GEdit]], [[:Kate]] ou [[:Mousepad]]. Il est très apprécié des développeurs pour toutes ses fonctions qui en font un très bon IDE (coloration syntaxique de 200 langages, complétion automatique, comparaison de fichiers, recherche évoluée, ...) et est extensible par des scripts.
 +
 +Contrairement à la plupart des éditeurs, Vim est un éditeur modal((**éditeur modal**: possède différents modes de fonctionnement **commande**, **insertion**)). Selon le mode où vous vous trouvez, les touches auront des actions différentes.
 +
 +<note tip>Vim est un "charity-ware" : vous êtes encouragés à faire une donation aux
 +orphelins d'Ouganda (voyez : ":help uganda").</note>
 +
 +
 +===== Installation ======
 +Par défaut, votre système a une version basique de vim, procurée par le paquet **vim-tiny**, mais n'offrant pas toutes les possibilités de cet éditeur.
 +
 +Commencez par [[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt>vim|vim]]** ou **[[apt>vim-gnome|vim-gnome]]**. Cette version //vim-gnome// a l'avantage de disposer des options pour utiliser le presse-papier (( reportez-vous à l'article [[https://vim-fr.org/index.php/Les_presse-papiers]] pour plus de détails sur les presse-papiers de vim))\\
 +Si vous souhaitez  une interface graphique pour utiliser Vim, reportez-vous à la page **[[:gvim]]**.
 +===== Utilisation ======
 +
 +==== Mettre en français la doc vim ====
 +FIXME solution pour la v8… n'existe pas?
 +
 +Pour la v7, télécharger tout d'abord la traduction de la doc de vim sur le site : //https://web.archive.org/web/20161107043845/http://cfennajoui.net/vim/(miroir)//
 +
 +Ensuite, dans un terminal root, sauvegarder la doc vim actuelle (en anglais) dans un répertoire à créer /usr/share/vim/vimcurrent/old_vim_doc/doc/ (mieux vaut être prudent…)
 +
 +Puis recopier le contenu décompressé de archive_traduit.tar.gz (de Téléchargements) dans /usr/share/vim/vimcurrent/doc/
 +
 +Vérifier en ouvrant un fichier d'essai avec vim que l'aide est bien en français. Tout va bien ! 
 +
 +
 +==== Tutoriel ====
 +
 +L'installation de vim fournit un programme spécifique pour l'apprentissage de vim. Il faut compter environ 30 minutes pour faire le tour de ce tutoriel, mais cela est très utile pour vous familiariser avec les commandes les plus courantes de **vim**.
 +
 +Pour le lancer il vous suffit d'aller dans un [[:terminal]] et de taper :
 +<code>vimtutor</code>
 +
 +(ou pour la version graphique, lancez l'application **gvimtutor** avec la combinaison de touches **ALT + F2** ou dans le terminal)
 +
 +Vim dispose aussi d'un tutoriel francophone non-officiel en ligne : [[http://vim-fr.org/]]
 +
 +
 +==== Principe de base ====
 +
 +Pour [[:tutoriel:comment_modifier_un_fichier|créer ou modifier un fichier]] avec vim il suffit de taper :
 +<code>vim /chemin/texte</code>
 +
 +Si le fichier n'existe pas il sera créé à l'enregistrement.
 +
 +Le fichier s'affiche. Vous êtes dans le **mode commande**((**éditeur modal**: possède différents modes de fonctionnement **commande**, **insertion**)), c'est à dire que vous pouvez déplacer le curseur comme vous le souhaitez avec les touches h,j,k,l ou avec les flèches ←↓↑→ et entrer des commandes pour agir sur le texte. Si vous tapez un nombre avant une commande, elle se répétera d'autant.
 +
 +Pour accéder au **mode insertion**((**éditeur modal**: possède différents modes de fonctionnement **commande**, **insertion**)) afin de modifier ou d'insérer du texte, il suffit d'appuyer sur « **i** » dans le mode commande. Appuyer sur la touche « **Échap** » pour en sortir et repasser en mode commande.
 +
 +
 +=== Commandes de base: ===
 +
 +^  Exemples  ^ Action  ^
 +|  **i**  | Passer dans le **mode insertion**  |
 +|  **A**  | Ajouter en fin de ligne |
 +|  **:q**  | Quitter|
 +|  **:q!**  | Quitter sans enregistrer |
 +|  **:w**  | Enregistrer le fichier |
 +|  **:wq**  | Enregistrer et quitter |
 +|  **:x**  | Enregistrer (seulement en cas de modification) et quitter |
 +|  **:set paste**  | Passer en mode "collage" |
 +
 +=== Commandes d'édition: ===
 +
 +^  Exemples  ^ Action  ^
 +|  **u**  | Annuler la dernière opération |
 +|  **<control>-r**  | Rétablir la dernière opération annulée |
 +|  **.**  | Répéter la dernière opération d'édition |
 +|  **yy**  | Copier la ligne (4**yy** = 4 lignes) |
 +|  **dd**  | Couper la ligne (4**dd** = 4 lignes) |
 +|  **p**  | Coller après (**P** = insérer avant) |
 +|  **x**  | Effacer le caractère |
 +|  **dw**  | Effacer le texte jusqu'à la fin du mot |
 +|  **diw**  | Effacer le mot sous le curseur |
 +
 +=== Recherche / remplacement: ===
 +
 +^  Exemples  ^ Action  ^
 +|  **/**  | Rechercher du texte |
 +|  **n**  | Rechercher l'occurence suivante |
 +|  **N**  | Rechercher l'occurence précédente |
 +|  **cw**  | Remplacer le texte jusqu'à la fin du mot |
 +|  **ciw**  | Remplacer le mot |
 +|  **C**  | Remplacer jusqu'en fin de ligne |
 +|  **.**  | Répéter la dernière opération d'édition |
 +|  **:%s/A/B/g**  | Remplacer tous (g) les A par des B |
 +
 +=== Fenêtrage: ===
 +
 +^  Exemples  ^ Action  ^
 +|  **<control-w>-s**  | Diviser horizontalement |
 +|  **<control-w>-v**  | Diviser verticalement |
 +|  **<control-w>-w**  | Passer à la fenêtre suivante |
 +|  **<control-w>-n**  | Ouvrir un fichier vierge dans une nouvelle fenêtre |
 +| **: tabnew //nom_fichier// ** | Ouvrir le fichier //nom_fichier// dans un onglet |
 +|  **<control-w>-q**  | Fermer la fenêtre |
 +
 +=== Programmation en C ===
 +
 +Vim est interfaçable avec CScope, ce qui permet à l'aide d'une simple touche
 +lors de l'édition d'un fichier source écrit en C:
 +
 +  * d'afficher la définition d'une fonction,
 +  * de trouver les fonction appelées par cette fonction,
 +  * de trouver les fonctions appelant cette fonction
 +  * de trouver/remplacer une chaine de caractères ou un expression régulière
 +  * de trouver les fichiers incluant le header file indiqué sous le curseur
 + 
 +==== Comparaison de fichiers ====
 +
 +Vous pouvez comparer le contenu de deux fichiers en lançant :
 +<code>vimdiff fichier1 fichier2</code>
 +vimdiff peut-être remplacé par vim -d\\
 +Si vous êtes déjà dans vim en édition sur le fichier1: 
 +<code>:vert diffsplit fichier2</code>
 +si vous ne spécifiez pas //vert//, le "split" sera horizontal (beaucoup moins pratique).\\
 +Ajoutez 
 +<code>set diffopt=vertical</code> 
 +dans votre fichier //vimrc// pour que ce soit par défaut.
 +
 +==== Édition hexadécimale ====
 +
 +vim peut servir d'[[wpfr>éditeur hexadécimal]] (voir aussi hexedit) : après avoir ouvert votre fichier, tapez 
 +<code>:%!xxd</code>
 +pour revenir en édition normale <code>:%!xxd -r</code>
 +comme pour les autres utilisations (recherche, remplace...), vous pouvez remplacer % par un n° de ligne ou un intervalle
 +
 +===== Configuration =====
 +
 +Pour modifier le comportement de vim, il faut agir sur son fichier de configuration (chaque utilisateur peut avoir le sien). Pour cela [[:tutoriel:comment_editer_un_fichier|créez ou éditez le fichier]] **~/.vimrc** (le fichier vimrc global peut se trouver dans /usr/share/vim/vimrc ).
 +
 +<note tip>S'il n'existe pas de fichier .vimrc dans le dossier de l'utilisateur, vim se lance en « compatibilité » avec vi. C'est-à-dire qu'il va charger les options par défaut de vi, et non pas celles de vim. La simple existence de ce fichier suffit normalement à charger les options par défaut de vim, mais, par précaution, forcez la désactivation de cette compatibilité (en tout début de fichier, car ça change les options).</note>
 +
 +Voici quelques paramètres utiles à ajouter dans ce fichier :
 +^ Paramètre ^ Action ^
 +| <code>set nocompatible</code> | Désactive la compatibilité avec vi |
 +| <code>set background=dark </code> | adapte les couleurs pour un fond noir |
 +| <code>syntax on</code> | Active la coloration syntaxique |
 +| <code>set number</code> | Affiche les numéros de lignes |
 +| <code>set tabstop=4</code> | Indentation toutes les quatre colonnes |
 +| <code>set expandtab</code> | Conversion des tabulations en espaces |
 +| <code>set shiftwidth=4</code> | Indentation de quatre colonnes |
 +| <code>set smartindent</code> | Indentation "intelligents" |
 +| <code>set autoindent</code> | Conserve l'indentation courante sur les nouvelles lignes |
 +| <code>set backspace=indent,eol,start</code> | retours arrières intelligents |
 +| <code>set shiftround</code> | Indentation à la marque de Tab la plus proche |
 +| <code>set ignorecase</code> | Ignore la casse lors de recherche |
 +| <code>set showmode</code> | affiche le mode d'édition |
 +| <code>set ruler</code> | affiche la position du curseur |
 +| <code>set showcmd</code> | affiche les commandes incomplète |
 +|<code>map <C-m> :resize<CR> </code>| Ctrl-m maximize la fenetre courrante (:help map)|
 +|<code>map <C-b> :bNext<CR></code>| Ctrl-b aller au tampon suivant (:help map)|
 +
 +Si vim ne se souvient pas de la position précédente du curseur lorsque vous réouvrez un fichier, il faut ajouter la ligne suivante dans le fichier ~/.vimrc:
 +<code>au BufReadPost * if line("'\"") > 1 && line("'\"") <= line("$") | exe "normal! g'\"" | endif</code>
 +confère commande vim **:help last-position-jump** ou bien en tapant:
 +<code>grep -A4 last-position-jump /usr/local/share/vim/vim72/doc/eval.txt</code>
 +
 +Il est également possible de faire ces modifications dans le fichier **/etc/vim/vimrc** avec les [[:sudo| droit administrateur]] pour qu'elles s'appliquent à tous les utilisateurs du système.
 +
 +Un fichier exemple est disponible également **/usr/share/vim/vimcurrent/vimrc_example.vim**
 +
 +<note> Si vous avez l'erreur "Sorry, the command is not available in this version: syntax on", vous utilisez surement vim-tiny et non vim "complet". Pour y remédier, [[:tutoriel:comment_supprimer_un_paquet| supprimez le paquet]] **vim-tiny** et [[:tutoriel:comment_installer_un_paquet|ré-installez le paquet]] **vim**
 +
 +Vous pouvez aussi utiliser la commande suivante et choisir vim.gnome : <code>sudo update-alternatives --config vim</code>
 +</note>
 +
 +==== Vim supporte les souris ====
 +
 +Le service **gpm**((**gpm** : General Purpose Mouse interface http://www.nico.schottelius.org/software/gpm/)) permet l'utilisation de la souris dans le terminal pour sélectionner, copier et coller. Vérifiez que le paquet [[apt://gpm|gpm]] est [[:tutoriel:comment_installer_un_paquet|installé]] et [[:tutoriel:comment_modifier_un_fichier|modifiez votre fichier]]  ~/.vimrc comme expliqué plus haut pour y insérer :
 +<code>set mouse=a</code>
 +
 +====Thème de coloration syntaxique====
 +Placez le thème dans ~/.vim/colors et activez le thème dans le .vimrc avec la ligne :
 +<code>
 +colorscheme nom_du_theme
 +</code>
 +Si vous utilisez vim dans un terminal, il est possible que votre thème ne soit pas utilisé, et qu'il n'y ait pas de coloration syntaxique. Il faut donc forcer les couleurs en ajoutant dans le .vimrc la ligne suivante :
 +<code>
 +set t_Co=256
 +</code>
 +Si votre terminal ne supporte que 88 couleurs :
 +<code>
 +set t_Co=88
 +</code>
 +Il est cependant nécessaire que le thème ait été pensé à la fois pour la GUI et le terminal. Si ce n'est pas le cas du thème que vous avez choisi, le plus simple est d'utiliser le plugin  [[http://www.vim.org/scripts/script.php?script_id=1809|guicolorscheme]].
 +
 +Nota : les thèmes installés par défaut se trouvent dans le répertoire /usr/share/vim/vim**xx**/colors ou xx correspond à la version en cours, 74 ou 80 à ce jour
 +
 +===== Extensions, plugins et packages =====
 +Il existe de nombreuses extensions à VIM, notamment pour les développeurs, pour ajouter des fonctionnalités telle que l'arborescence du répertoire de travail, la liste des fonctions/variables, des colorations spécifiques…
 +
 +Pour lister les plugins installés, dans VIM, tapez la commande:
 +<code>:scriptnames </code>
 +
 +==== Les plugins ====
 +C'est assez simple, ils se composent généralement de deux fichiers, un //.vim// et un //.txt//.
 +Le //.vim// peut simplement être déposé dans ///usr/share/vim/vim80/plugin///,\\
 +le //.txt// dans ///usr/share/vim/vim80/doc///
 +
 +==== Les packages ====
 +C'est plus compliqué, mais il existe des outils, tel que [[https://github.com/tpope/vim-pathogen|Pathogen]] ou [[https://github.com/VundleVim/Vundle.vim|Vundle]] pour simplifier leur installation
 +
 +===== Pour aller plus loin =====
 +  * [[http://www.vim.org/]] -- Site officiel (en)
 +  * [[http://cfennajoui.net/vim/|Traduction de la documentation de Vim (miroir)]]
 +  * [[ftp://ftp.vim.org/pub/vim/doc/book/vimbook-OPL.pdf|Vim book (fichier PDF, anglais)]]
 +  * [[http://arolla.developpez.com/tutoriels/programmation/editeurs-code/dompter-vim-en-trois-temps/|Tuto sur developpez.com]]
 +  * [[http://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/vim-l-editeur-de-texte-du-programmeur|Tuto sur openclassroom (ex site du zéro)]]
 +  * [[http://vim-fr.org/index.php/Accueil|Wiki Francophone de Vim]]
 +  * [[https://github.com/dpelle/vim-Grammalecte|Plugin Grammalecte]] étendre les fonctionnalités de VIM avec un Correcteur grammatical dédié à la langue française.
 +
 +----
 +--- //refonte [[:utilisateurs:YoBoY|YoBoY]]//
 +
 +--- //Ajouts à la section "Configuration" [[:utilisateurs:Mr_Djez|Mr_Djez]]//