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
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
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.
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]
Ajouterg
collé au dernier/
remplacera TOUTES les occurences
Ajouterc
à la fin de la commande (commeg
) demandera l'autorisation avant de remplacer
## Trucs additionnels :
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$
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
Créer une nouvelle abréviation :
Fonctionne en mode commande et insertion.
Pour insertion uniquement, remplacerab
paria
.
Pour commande-line uniquement, remplacerab
parca
.
:ab <abréviation> <correspondance>
:ab sop System.out.println( "" ) ;
: Ecrire sop<espace>
et sop
devient : System.out.println( "" ) ;
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.
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
.
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
.
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
.
: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).
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.
: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>"
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