Skip to content

Instantly share code, notes, and snippets.

@alan-mushi
Last active January 28, 2016 19:09
Show Gist options
  • Save alan-mushi/7283836 to your computer and use it in GitHub Desktop.
Save alan-mushi/7283836 to your computer and use it in GitHub Desktop.
Cheatsheet commandes vim

Commandes vim

Déplacements :

		k
	h		l
		j

w / W : début du mot suivant / "Bigword"
e / E : fin du mot courant / "Bigword"
b / B : début du mot courant / "Bigword"
$ : fin de ligne
0 : début de ligne
( : début de la phrase précédente (ponctuation : ;,.?/! )
) : début de la phrase suivante
{ : début du § précédent
} : début du § suivant
gg : va à la première ligne
G : va à la dernière ligne
% : va au caractère associé : ( ) { } [ ]
* : va au mot identique suivant
# : va au mot identique précédent
^ : amène au premier caractère de la ligne
<Ctrl-o> / <Ctrl-i> : Saute vers la position la plus ancienne / récente du curseur
H : Placer le curseur en haut de la fenêtre
M : Placer le curseur au milieu de la fenêtre
L : Placer le curseur en bas de la fenêtre
]M : Aller à la fin de la méthode
]m : Aller à la fin de la prochaine méthode
[M : Aller au début de la méthode précédente
[m : Aller au début de la méthode
[[ / ]] : Aller à la méthode précédente / suivante
zt, zb, zz : Scroller pour que le curseur soit t en haut, b en bas, z au milieu de l'écran

"Bigword" : avec des symboles comme - ou _, au milieu d'un mot

Insertion :

a : insertion APRES le curseur
A : insertion en fin de ligne
i : insertion SUR le curseur
I : insertion en début de ligne
o : insertion d'une ligne au DESSOUS de la ligne courante
O : insertion d'une ligne en DESSUS de la ligne courante
cw : remplacer jusqu'au mot suivant /* Valable avec toutes les combinaisons de déplacements */
ciw : remplacer le mot courant
c%: remplacer jusqu'à la fin de l'appel de fonction (curseur sur t: XX && test(param1, param) && YY -> XX && && YY)
C : remplacer jusqu'a la fin de la ligne
cc : insertion du texte en remplacement de la ligne courante
<Ctrl-d> / <Ctrl-t> : Décale d'une tabulation vers la gauche / droite
<Ctrl-p> : auto complétion du mot précédent (si le mot est déjà présent dans la page)
<Ctrl-n> : auto complétion du mot suivant
gi : insérer sur la ligne où la dernière insertion a été stoppée

Edition :

x : suppression du caractère
dd : suppression de la ligne
d[mov] : supprime en fonction du mouvement
df[char] : supprime tout jusqu'au [char] sur la ligne
J : concaténation de la ligne suivante à la fin de la ligne courante + espace entre les lignes
yy : copie de la ligne
y[mov] : copie en fonction du mouvement
p : colle APRES le curseur
P : colle AVANT le curseur
diw : effacer le mot sur le curseur
. : répéter la dernière opération d'édition
r : remplacer le caractère courant
u : annuler l'opération
<Ctrl-r> : rétablit la dernière opéraion annulée
~ : change la casse du caractère sous le curseur
[après sélection du texte] < : indenter d'un cran vers la gauche
[après sélection du texte] > : indenter d'un cran vers la droite
[après sélection du texte] = : auto indenter
^ <Ctrl-v> [sélection du bloc] I // <ESC><ESC> : commente le bloc avec //
ga : écrit la valeur en ASCII du caractère sous le curseur
>> / << : augmente décrémente la tabulation pour la ligne
gf : ouvre le fichier sous le curseur
<Ctrl-w> f : ouvre le fichier sous le curseur en séparant horizontalement la zone
<Ctrl-w> gf : ouvre le fichier sous le curseur dans un nouvel onglet
:E : ouvre un navigateur de fichiers, <Enter> pour éditer un fichier.
Xgn / XgN : une fois un motif sélectionné, exécute la commande X puis passe à la prochaine/précédente sélection, utile pour modifier (X = c) ou supprimer (X = d) une partie d'un mot

:e # pour revenir au fichier précédent.

Recherche / Remplacement :

f[char] : recherche la première occurence de [char] sur la ligne
/[txt] : rechercher le txt
n : occurence suivante de la recherche
N : occurence précédente de la recherche
:%s/[regexp]/[remplacement]/ : remplacer la première "regexp" de la page par "remplacement"

Enlever le % effectuera le changement sur la ligne seulement
Pour définir une "zone" remplacer % par [ligne début],[ligne fin] Ajouter g collé au dernier / remplacera TOUTES les occurences
Ajouter c à la fin de la commande (comme g) demandera l'autorisation avant de remplacer


## Trucs additionnels :

Macros :

Définir une macro personnalisée : q<lettre><commande>q : 'lettre' est la lettre attribuée à la macro, 'commande' commande à exécuter (input...).

Exécuter une macro : @<lettre> : en mode édition <Ctrl-r><lettre> : en mode insertion

Afficher les macros : :reg

Insérer/éditer les macros dans le buffer : On colle la définition de la macro : "<lettre>p [...Edition de la macro...] En début de ligne, sélection et copie : "<lettre>y$

Mark : (mode edition)

Mémorise la position du curseur : m<lettre> : 'lettre' est la lettre attribuée à cette marque

Aller à la marque :

  • ` : Va à la position marquée
  • '<lettre> : Va sur la ligne marquée
  • '. : Va à la dernière modification

Abréviations : (mode commande/insertion)

Créer une nouvelle abréviation :

Fonctionne en mode commande et insertion.
Pour insertion uniquement, remplacer ab par ia.
Pour commande-line uniquement, remplacer ab par ca.

:ab <abréviation> <correspondance>
:ab sop System.out.println( "" ) ; : Ecrire sop<espace> et sop devient : System.out.println( "" ) ;

Onglets :

Ouvrir vim avec un fichier par onglet : vim -p <file1> <fileB>.
Ouvrir un fichier dans un nouvel onglet : :tabedit <file>.
Maximiser une fenêtre (split) dans un nouvel onglet : <Ctrl-w> T.

Fermer un onglet : :q (si il n'y a pas de fenêtres ouvertes dans l'onglet).
Fermer un onglet (et toutes ses fenêtres) : :tabclose ou :tabc.
Fermer tous les onglets sauf l'onglet courant : :tabonly ou :tabo.

Aller à l'onglet suivant : gt ou Ctrl + PgDown.
Aller à l'onglet précédent : gT ou Ctrl + PgUp.
Déplacer les onglets : :tabmove <number> number est le numéro du tab voulu. Les indices commencent à 0.

Fenêtres :

Split horizontal : <Ctrl-w> s ou :sp [file].
Split vertical : <Ctrl-w> v ou :vsp [file].

Fermer la fenêtre courante : :q.
Fermer tout sauf la fenêtre courante : :only ou :on.

Changer de fenêtre pour la suivante : <Ctrl-w> w.

On peut remplacer le dernier w par une flèche directionelle.

Augmenter la taille d'une fenêtre de n caractères verticalement : <Ctrl-w> [n]+.
Augmenter la taille d'une fenêtre de n caractères horizontalement : [n] <Ctrl-w> >.
Maximiser la taille de la fenêtre courante verticalement : <Ctrl-w> _.
Maximiser la taille de la fenêtre courante horizontalement : <Ctrl-w> |.
Egaliser les fenêtres : <Ctrl-w> =. Fixer la taille de la fenêtre verticalement ('n' lignes) : [n] <Ctrl-w> _.
� Déplacer la fenêtre courante en haut / bas / gauche / droite de l'écran : <Ctrl-w> K / <Ctrl-w> J / <Ctrl-w> H / <Ctrl-w> L.

Fermer toutes les fenêtres avec des modifications non enregistrées : :qall.
Enregistrer toutes les fenêtres : :wall.
Enregistrer puis fermer toutes les fenêtres : :xall.

Buffers

Pour utiliser les buffers il faut q'une instance de vim soit en cours. Toutes les commandes ci-dessous se passent dans l'instance de vim. Pour ouvrir plusieurs fichiers en buffer mode : vim [file1] [file2].

Ajouter un buffer : :e [file].
Afficher la liste des buffers : :ls.

Le buffer courant est repéré par %a.
Les modification (ajout/suppression) sont repérés par : - et +.

Aller au buffer suivant / précédent : :bn / :bp.
Aller au buffer n : :b[n].

Sauvegarder un buffer : :w.
Retirer le buffer courant de la liste des buffers : :bd.

Erreurs de :make

Lister les erreurs / lister toutes les erreurs : :cl / :cl!
Ouvrir une liste détaillée des erreurs en splittant la vue : :cope / :copen

Il est possible de passer en argument la taille en lignes de la fenêtre : :cope 14

Fermer la fenêtre des erreurs détaillées : :ccl.

Documentation en français :

http://vim.dindinx.net/

Correction orthographique :

:set spelllang=en ou :set spelllang=fr pour choisir la langue (variantes en_gb et en_us).
:set spell! active/désactive spell.
]s / [s : aller au terme mal orthographié suivant / précédent.
z= : ouvrir la liste des corrections disponibles (1z= pour remplacer le terme mal orthographié par le premier de la liste).

vim-easytags script et ctags :

https://github.com/xolox/vim-easytags

<Ctrl-]> : aller à la définition
<Ctrl-W> <Ctrl-]> : aller à la définition dans une nouvelle fenêtre
<Ctrl-t> : revenir à la position initiale

ajouter map <C-\> :tab split<CR>:exec("tag ".expand("<cword>"))<CR> dans ~/.vimrc et <Ctrl-\> ouvre la définition dans un nouvel onglet.

~/.vimrc et Macros :

:set nu : affiche les numéros de ligne
:set autoindent : active l'indentation automatique
:set noautoindent : désactive l'indentation automatique
:set tabstop=[x] : régler la taille des tabulations

:UltiSnipsEdit! : edite les snippets pour le type de fichier courant (retirer ! pour éditer les scripts locaux)
<trigger word> <tab> : charge le snippet
<Ctrl-j> / <Ctrl-k> : va au prochain / précédent tabstop

Pour utiliser le traditionnel <tab> / <Shift-tab> pour naviguer les tabstops:

:let g:UltiSnipsExpandTrigger="<tab>"
:let g:UltiSnipsJumpForwardTrigger="<tab>"
:let g:UltiSnipsJumpBackwardTrigger="<s-tab>"

Calculs

Calcule des expressions et insère le résultat (utiliser en mode insertion), fonctionne également en hexadécimal.

i<Ctrl-r>=12 * 2 : (mode insertion) insère le résultat de 12 * 2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment