~~NOCACHE~~
~~REVEAL theme=league&transition=convex&controls=1&show_progress_bar=1&build_all_lists=1&open_in_new_window=1~~
====== Vim ======
Philippe Wambeke - LoliGrUB (21 octobre 2017)
===== Un peu d'histoire =====
{{::vim-keyboard.jpg?600|}}
==== Les origines ====
Vi ("visual"), développé par Bill Joe en 1976, est un progrès considérable par rapport à ed (1970 - Ken Thompson) qui ne permettait pas d'éditer et de voir simultanément le texte dans son intégralité.
Vim fut d'abord développé en 1988 sur Amiga par Bram Moolenaar qui ne retrouvait pas sur cette plateforne l'éditeur auquel il était habitué sous UNIX.
Vim signifiait au départ "Vi IMitation". Ce n'est qu'avec l'arrivée de la version 1.22 et le portage sous UNIX et ms-dos que la signification de Vim a changé pour devenir "Vi IMproved" ("vi amélioré").
==== Vim vs Vi ====
{{::vimvsvi.jpg?600|}}
==== Vim, c'est compliqué ? ====
{{::vim-learning-curve.png?400|}}
===== L'installation =====
Vim est packagé dans toutes les distributions et l'installation se fait via un simple
sudo apt-get install vim
sudo yum install vim
sudo pacman -S vim
===== La base =====
==== Les deux modes de fonctionnement ====
* Le mode normal: ce qu'on tape sont des commandes pour Vim.
* Le mode insertion: ce qu'on tape s'insère dans le fichier
Pour passer de l'un à l'autre: ou
==== Démarrer et quitter ====
* Lancer vim: vim
* Passer en mode insertion: i
* Taper du texte
* Retourner en mode normal:
* Ecrire le fichier sur disque: :w mon_fichier.txt
* Quitter: :q
==== Les déplacements ====
Outre les traditionnels flêches, home / end et PgUp / PgDn, Vim dispose de commandes pour:
* se déplacer de mot en mot suivant: w (word)
* se déplacer de mot en mot précédent: b (back)
* se déplacer en haut de l'écran: H (high)
* se déplacer en bas de l'écran: L (low)
* se déplacer en milieu de l'écran: M (middle)
* se rendre directement à une ligne: :50
==== Déplacements avancés ====
* se déplacer à la phrase suivante: (
* se déplacer à la phrase précédente: )
* se déplacer au paragraphe suivant: {
* se déplacer au paragraphe précédent: }
* se déplacer jusqu'à: t (till)
* Encore plus fort: il est possible de combiner les commandes de déplacement avec un nombre.
===== Les modifications =====
==== Supprimer des caractères ====
* Supprimer le caractère sous le curseur: x (ou delete)
* Supprimer: d (delete) qu'il est possible de combiner avec les commandes de déplacement !
Exemples:
* Supprimer les 3 mots suivants: d3w
* Tout supprimer jusqu'au premier point: dt.
* Supprimer la ligne courante: dd - Répéter une commande l'applique sur toute la ligne
==== Le copier / coller ====
* Copier: y (yank) - supporte les commandes de déplacement
* Coller: p ou P (paste) - colle après (p) ou avant (P) le curseur
A noter: tout ce qui est effacé est placé dans le presse-papier.
Exemples:
* Copier une ligne entière: yyp
* Inverser deux lignes: ddp
* Couper 3 mots et les coller ailleurs: d3w puis p.
===== La recherche =====
La recherche se fait simplement avec le caractère /. Selon les options la recherche peut être incrémentale.
* n (next): recherche le terme suivant
* N: recherche le terme précédent
* *: recherche le terme sous le curseur
===== Les options =====
En plus d'être puissant, vim est souple grâce à ses nombreuses options. Elles se configurent à l'aide du fichier .vimrc qui doit se trouver dans le dossier personnel (~/.vimrc).
" Options standard
set nocompatible
set number
" Options pour la recherche
set ignorecase
set smartcase
set incsearch
set hlsearch
" pas de fichier backup
set noswapfile
set nobackup
===== Les plugins =====
Il existe un nombre impressinnant de plugins qui permettent de dédier vim à toute activité: développement, rédaction xml, ...
La manière de les installer dépend essentiellement de la popularité du plugin.
* Soit il est "packagé" dans la distribution
* Soit il ne l'est pas et l'installation consiste alors à copier les fichiers du plugin dans le bon répertoire.
S'il n'y avait qu'un plugin à retenir: airline !
===== Quelques références =====
* Un didacticiel: vimtutor
* Un ouvrage pour débuter: "Vim pour les humains": https://vimebook.com/fr
* Un ouvrage pour aller plus loin: "A Byte of Vim": https://vim.swaroopch.com/
* La référence qui répond à (presque) toutes les questions: le wiki des trucs et astuces: http://vim.wikia.com/wiki/Vim_Tips_Wiki
* Générer une configuration pour un usage sur mesure: https://vim-bootstrap.appspot.com/
==== Pour le fun ====
* Articles et vidéos concernant Vim: http://vimcasts.org/
* Vim adventures ! https://vim-adventures.com/
* Vim Golf: http://www.vimgolf.com/
* Les apéros Vim ! http://tuppervim.org/
===== Le petit nouveau: neovim =====
Neovim est un "fork" de Vim. L'accent est mis sur la clarté et la qualité du code au détriment du nombre de plate-formes supportées.
Neovim veut également mettre en place une communauté plus ouverte et s'ouvrir sur le "futur".
Le projet a débuté en 2014 suite à un patch pour Vim qui avait été refusé.
===== Conclusion =====
Découvrez Vim et franchissez l'obstacle des modes de fonctionnement: vous ne le regretterez pas !
===== Merci =====
Questions ?