Modes 01
Sept modes — on parle toujours depuis le Normal mode.
Esc · Ctrl-[retour au mode NormaliInsert (avant le curseur)aInsert (après le curseur)I · Adébut · fin de ligne (insert)o · Onouvelle ligne dessous · dessusvVisual charVVisual lineCtrl-vVisual block (colonne)RReplace:mode commande (Ex)/ · ?recherche avant · arrièreMotions 02
Se déplacer — combinables avec un opérateur.
Caractère · ligne
h · j · k · l← ↓ ↑ →0 · ^ · $col 0 · 1er non-blanc · fing_dernier non-blancMot
w · Wmot suivant (w=ponctuation, W=WORD)b · Bmot précédente · Efin du motgefin du mot précédentFichier · écran
gg · Gdébut · fin de fichier123G · :123aller à la ligne NCtrl-d · Ctrl-udemi-page ↓ · ↑Ctrl-f · Ctrl-bpage ↓ · ↑H · M · Lhaut · milieu · bas de l'écranzz · zt · zbcentrer · top · bottomChar dans la ligne
f<c> · F<c>jusqu'au char (sur)t<c> · T<c>jusqu'avant le char; · ,répéter · inverseParagraphe · bloc
{ · }paragraphe ↑ · ↓( · )phrase ↑ · ↓% accolade/paren correspondanteÉdition · Verbes 03
{op}{motion} — ex. d3w supprime 3 mots.
Opérateurs
ddelete (cut dans reg)cchange (delete + insert)yyank (copy)p · Ppaste après · avant> · <indent · désindent=auto-indentgu · gUlower · UPPER caseg~toggle case!filtrer par commande externeRaccourcis ligne entière
dd · yy · ccligne : cut · copy · changeD · Cjusqu'à fin de ligneY= yy (conventionnel)Caractère
x · Xsupprimer après · avantr<c>remplacer 1 chars · Ssubstitute char · ligne~toggle case charRépétition · Undo
.répéter la dernière actionu · Ctrl-rundo · redoUannuler les changes de la ligneText objects 04
inner / around — combinables avec verbes.
iw · awmot (sans · avec espace)iW · aWWORDis · asphraseip · apparagraphei" · a"entre guillemetsi' · a'apostrophesi( · a( · i) · a)parenthèsesi[ · a[ · i] · a]crochetsi{ · a{ · iB · aBaccolades (block)i< · a<chevronsit · attag HTML/XMLi` · a`backticks# Patterns utiles
ci" # change dans guillemets da( # delete y compris parens yi{ # yank dans accolades vit # sélectionner contenu tag
Recherche · Remplace 05
:s est le couteau suisse.
Recherche
/<pattern>chercher vers le bas?<pattern>chercher vers le hautn · Nsuivant · précédent* · #mot sous curseur ↓ · ↑g* · g#sans frontière de mot:noheffacer le highlight:set hlsearch ichighlight · ignore-caseSubstitution
:s/old/new/1ʳᵉ occ. de la ligne:s/old/new/gtoutes les occ. de la ligne:%s/old/new/gtout le fichier:%s/old/new/gcavec confirmation:%s/old/new/giignore-case:5,20s/old/new/glignes 5 à 20:'<,'>s/old/new/gsélection visuelle&répéter dernier :s# Captures & backrefs
# groupes : \( \) en vim-magic :%s/\(\w\+\)_\(\w\+\)/\2-\1/g # regex "très magique" (plus lisible) :%s/\v(\w+)_(\w+)/\2-\1/g
Visual mode 06
Sélectionner d'abord, agir ensuite.
vchar visualVline visualCtrl-vblock visual (colonnes)opermuter début/fin de sélectiongvre-sélectionner la dernièreOpérations depuis Visual
d · c · ydelete · change · yank~ · U · utoggle · UP · low case> · <indent= auto-indent:!cmdfiltrer via shell# Édition colonne (Ctrl-v)
Ctrl-v → j...j → I → texte → Esc # insère "texte" au début de toutes les lignes
Registres · Macros 07
" préfixe un registre.
Registres
"ay · "apyank · paste dans le registre a"Ayappend au registre A"+y · "+pclipboard système"*y · "*psélection X11"0pdernier yank (non pollué par d)"_dblack hole (delete sans copier):reglister les registresCtrl-r acoller reg a en mode InsertMacros
qa … qenregistrer dans a@arejouer la macro a@@rejouer la dernière10@arejouer 10×:reg avoir le contenuMarks · Jumps 08
Signets + historique de position.
maposer le mark a (buffer-local)mAmark global (entre fichiers)`a · 'aaller exact · au début de ligne:markslister``position précédente (avant jump)`.dernier changement`^dernière position Insert`[ · `]début · fin dernier yank/changeCtrl-o · Ctrl-ijump-list ↑ · ↓g; · g,change-list ↑ · ↓Buffers · Splits · Tabs 09
Plusieurs fichiers à l'écran.
Buffers
:e <file>ouvrir un fichier:ls · :bufferslister:b <n|name>switch buffer:bn · :bpsuivant · précédent:bddelete bufferSplits (windows)
:sp · :vspsplit H · VCtrl-w h/j/k/lnaviguer entre splitsCtrl-w wsplit suivantCtrl-w cclose splitCtrl-w oseul le courantCtrl-w =tailles égalesCtrl-w _ · |maximiser H · VCtrl-w H/J/K/Ldéplacer le splitTabs
:tabnew <file>nouvel ongletgt · gTonglet ↓ · ↑:tabc · :taboclose · keep onlySave · Quit · .vimrc 10
Ex-commands incontournables.
:wsauvegarder:w <file>sauvegarder sous:wasauver tous les buffers:q · :q!quitter · forcer:wq · ZZsauver & quitter:qa · :qa!quitter tout:x · ZQ:wq si modifié · quit sans save:!cmdshell:r !cmdinsérer la sortie:r fileinsérer un fichier" ~/.vimrc · essentiel set nocompatible syntax on filetype plugin indent on set number relativenumber set expandtab tabstop=2 shiftwidth=2 set ignorecase smartcase set incsearch hlsearch set undofile set clipboard=unnamedplus set mouse=a set scrolloff=8 let mapleader=" " nnoremap <leader>w :w<CR> nnoremap <leader>q :q<CR>