vim

Basic

Quelques données

  • Vi Créé par Bill Joy en 1976
  • Vim en 1991



vi / vim


1988 1.0 Inspirée par Stevie, son nom signifie alors Vi IMitation. Cette version pour Amiga n’a jamais été publiée
1.14 Première version publiée sur Amiga avec le Fred Fish disk #591
1992 1.22 Portage vers Unix. Vim est maintenant au niveau de Vi. Le nom Vim signifie désormais Vi IMproved
3.0 Support des fenêtres multiples
4.0 Interface graphique
5.0 Coloration syntaxiquelangage de script simple (fonctions et commandes définies par l’utilisateur, etc.)
6.0 Pliage de codegreffons, gestion des types de fichiers, ajout du partage vertical des fenêtres
7.0 Vérification orthographiquecomplétion du code, support des onglets

Vim AZERTY

VIM QWERTY

Sommaire

  1. Aide
  2. Configuration
  3. Modes
  4. Commandes
  5. Déplacements
  6. Edition
  7. Recherche
  8. Buffers
  9. Tabs
  10. Windows

Aide


« Une fonctionnalité non documentée est une fonctionnalité inutile »

    :h          #Ouvre l'aide
    :h :w       #Ouvre l'aide sur la commande :w
    :h /        #Ouvre l'aide sur la commande de recherche
    :h windows  #Ouvre l'aide sur la manipulation des fenêtres
    :h g        #Ouvre l'aide sur les commandes commençant par g
    

CONFIGURATION


  • La configuration de vim se fait dans .vimrc
  • Elle permet de configurer vim
  • remaper des touches
  • déclarer et configurer des plugins
  • etc...

:e ~/.vimrc

" Couleurs
set background=dark
colorscheme molokai

" L'appuis successif de j et k à la place d'echap
inoremap jk <esc>  
inoremap <esc> <nop>

" Pour se forcer à ne pas utiliser les touches directionnelles
noremap <Up> <NOP>
noremap <Down> <NOP>
noremap <Left> <NOP>
noremap <Right> <NOP>

:w                 #enregistre
:source ~/.vimrc   #Applique la configuration sans redémarrer  

Modes

Normal
Comportement par défaut, utilisé pour la navigation et la manipulation du texte.
Insert
Pour insérer du texte.
Visual
Pour la navigation et la manipulation de texte sélectionné. La plupart des commandes "Normal" sont accessibles.

CommandEs

Les deux points :
Ouvrir un fichier

               
    :e <fichier>        #Ouvre dans la fenêtre active en créant un nouveau buffer.
    :tabe <fichier>     #Ouvre dans un nouvel onglet en créant un nouveau buffer.
    :split <fichier>    #Ouvre en partageant l'écran horizontalement.
    :vsplit <fichier>   #Ouvre en partageant l'écran verticalement.  
        
Ecrire

    :w    #Enregistre le fichier
    :wq   #Enregistre et ferme le fichier (ou vim)
    ZZ    #Enregistre le/les fichier(s) et quitte vim
        
Quitter
 
    :q    #Quitte la fenêtre (ou vim)
    :q!   #Quitte la fenêtre (ou vim) sans enregistrer
    :qa!  #Quitte vim sans enregistrer   
    


Déplacement

h => gauchej => bask => hautl => droite

Déplacement

Dans le fichier

gg           Se déplace au début du fichier
G            Se déplace à la fin du fichier

<nb_ligne>gg     Se déplace au numéro de ligne

C-e	    Scroll d'une ligne vers le haut
C-y	    Scroll d'une ligne vers le bas

<ctrl>+f Descendre d'une page (forward) <ctrl>+b Remonter d'une page (backward)

C-u Scroll d'une motié d'écran vers le haut (up) C-d Scroll d'une motié d'écran vers le bas (down) <AltGr>+} Se déplace d'un paragraphe vers le bas <AltGr>+{ Se déplace d'un paragraphe vers le haut zz Centre l'écran sur le curseur

DéPLACEMENT

Sur l'écran (pas le fichier)
Haut de l'écran (High)
H
Milieu de l'écran (Middle)
M
Bas de l'écran (Low)
L

DéPLACEMENT

Sur une ligne

w     Début d'un mot suivant
W     Début d'un mot suivant (séparé par des espaces)b     Début d'un mot précédent 
B     Début d'un mot précédent (séparé par des espaces)
e     Fin d'un mot suivant
E     Fin d'un mot suivant (séparé par des espaces)
t<carac> Se déplace vers le caractère suivant <carac>f<carac> Se déplace vers le caractère précédent <carac>; Répète la dernière commande t
$ Fin d'une ligne0 Début d'une ligne^^ Début du texte de la ligne



Déplacement

Mark & jump
Annuler un jump
 ``
Mark et Jump
 m[a-zA-Z] => `[a-zA-Z]

Divers
jump entre les caractères fermants et ouvrants
 %

EDITION

AJouter
Insérer (avant le curseur)
i
Insérer au début de la ligne
I
Ajouter (après le curseur)
a
Ajouter à la fin de la ligne
A
Ajouter une nouvelle ligne en dessous du curseur
o
Ajouter une nouvelle ligne au dessus du curseur
O

EDITION

Remplacement
Remplace le caractère sous le curseur
r
Remplace le mot sous le curseur
cw

EDITION

Suppression
Supprime le caractère sous le curseur
x
Supprime le mot sous le curseur
dw
Supprime la ligne
dd
Supprime du curseur jusqu'à la fin du fichier
dG

Edition

Blocks Visuel
Sélection de caractères
v
Sélection de lignes
V
Sélection de colonnes
<ctrl>+v
Edition multi-lignes
I

RECHERCHE


Recherche simple
/<query>
REGEX
/<regex query>
Occurance suivante
 n
Occurance précédente
 N

Recherche

Trouver et replacer
Remplace la première occurrence
 :s/<find>/<replace>
Remplace toutes occurrences sur la ligne
 :s/<find>/<replace>/g
Remplace toutes occurrences dans le fichier
 :%s/<find>/<replace>/g

BUFFERS


  • Un buffer est un fichier chargé en mémoire.  Tous les fichiers ouverts sont associés à un buffer. 
  • Un buffer n'est pas forcément associé à un fichier.
  • Un buffer est identifié par un numéro.
  • Un même buffer peut être associé à plusieurs fenêtres différentes.

:buffers ou :ls ou :files     Liste les buffers
:buffer 1  ou :b 1            Retourne sur un buffer existant
:bfirst :bnext :blast         Retourne sur un buffer existant
:bdelete ou :bd               Supprime le buffer ouvert
:bd 3                         Supprime le buffer numéroté 3
:bd file.txt                  Supprime le buffer file.txt

Exemple buffer partagé::vert sb N #Ouvre un buffer dans une nouvelle fenêtre vertical

Tabs


  • Pratique pour éditer plusieurs fichiers
  • Un onglet est associé à un buffer
  • Donc un même fichier peut être ouvert dans plusieurs onglet

:tabedit ou :tabe             Ouvre un fichier dans un nouvel onglet
:tabclose ou :tabc ou :q      Ferme l'onglet
:tabc {n}                     Ferme le {n}ième onglet
:tabn ou : tabnext            Onglet suivant
:tabp ou :tabprevious         Onglet précédent

Windows

Partager la fenêtre
Verticalement :vs ou :split
:vs <file> ou :vsplit <file>  #Ouvre un buffer dans une nouvelle vertical
Horizontalement :sp ou :split
:sp <file> ou :split <file>  #Ouvre un buffer dans une nouvelle horizontal
Ajuster la taille
:<vertical> resize <columns>
Bouger le curseur de fenêtre
<ctrl>+w <direction>
ou CTRL-W (x2)(en laissant CTRL appuyé ou pas)      

Windows

:only            #Garde seulement cette fenêtre ouverte
CTRLW C ou :q    #Ferme la fenêtre

CTRLW -   #Diminue la taille de la fenêtre
CTRLW +   #Augmente la taille de la fenêtre


FIN


Vim

By David Soyez

Vim

  • 1,404