vim
Mouvement
Recherche…
Recherche
Sauter aux personnages
f {char} - passe à la prochaine occurrence de {char} à droite du curseur sur la même ligne
F {char} - passe à la prochaine occurrence de {char} à gauche du curseur sur la même ligne
t {char} - se déplace vers la gauche de l'occurrence suivante de {char} à droite du curseur sur la même ligne
T {char} - se déplace vers la droite de l'occurrence suivante de {char} à gauche du curseur sur la même ligne
Avancer / reculer entre les résultats via ; et,.
De plus, vous pouvez rechercher des mots entiers via /<searchterm>
Enter .
Recherche de chaînes
* - passer à l'occurrence suivante du mot sous le curseur
# - déplacer à l'occurrence précédente du mot sous le curseur
/ searchterm
Enter vous amène au prochain match (recherche avancée). Si vous utilisez ? au lieu de / , la recherche recule.
Sautez entre les matchs via n (suivant) et N (précédent).
Pour afficher / modifier vos recherches précédentes, tapez / et appuyez sur la touche fléchée vers le haut .
Utiles sont aussi ces paramètres: (note :se
est égal à :set
)
-
:se hls
HighLightSearch, met en évidence toutes les correspondances de recherche; utiliser:noh
pour désactiver temporairement la recherche / mise en surbrillance (:set noh
ou:set nohls
est désactivé.) -
:se is
ou:set incs
active la recherche incrémentielle, le curseur passe automatiquement à la correspondance suivante. (:se nois
désactive.) -
:se ic
IgnoreCase, désactive la sensibilité à la casse. (:se noic
s'allume à nouveau.) -
:se scs
SmartCaSe, peut être utilisé lorsque IgnoreCase est défini; rend la sensibilité à la casse intelligente ! par exemple ,/the
rechercherathe
,The
,ThE
, etc. tout/The
seule rechercheraThe
.
Mouvement de base
Remarques
- Chaque mouvement peut être utilisé après une commande d'opérateur, de sorte que la commande opère sur le texte compris dans la portée du mouvement.
- Tout comme les commandes d'opérateur, les mouvements peuvent inclure un décompte, vous pouvez par exemple vous déplacer par 2w ords .
Flèches
Dans Vim, les touches fléchées / curseur normales ( ← ↓ ↑ → ) fonctionnent comme prévu. Cependant, pour les retouches typers, il est plus facile d'utiliser les touches h j alternatives k l. Sur un clavier typique, ils sont situés l'un à côté de l'autre sur la même ligne et facilement accessibles avec la main droite. La technique mnémonique à retenir qui est celle qui parmi eux va comme ceci:
- h / l - ceux-ci sont situés "le plus à gauche / à droite" parmi les quatre lettres du clavier, ils sont donc équivalents à "aller à gauche / droite" respectivement;
- j - la minuscule "j" a sa queue allant "en bas" au-dessous des lettres typiques, comme une petite flèche - donc elle équivaut à "descendre";
- k - à l'inverse, les minuscules "k" ont leur "ascendeur" qui "monte" au-dessus des lettres typiques, comme un petit pointeur - ce qui équivaut à "monter".
Mouvements de base
Toutes les commandes ci-dessous doivent être effectuées en mode normal .
Commander | La description |
---|---|
h ou à gauche | aller [compter] caractères à gauche |
j ou vers le bas | aller [compter] caractères ci-dessous |
k ou en haut | aller [compter] caractères ci-dessus |
l ou droit | aller [compter] les caractères à droite |
gg | aller à la première ligne, ou [compter] la ligne, si elle est donnée |
H | aller à la première ligne de l'écran visible |
M | aller à la ligne médiane dans l'écran visible |
L | aller à la dernière ligne de l'écran visible |
g | aller à la dernière ligne, ou [compter] la ligne, si donnée |
Maison ou 0 | aller au premier caractère de la ligne |
^ | aller au premier caractère non vide de la ligne |
+ | descendre une ligne au premier caractère non vide |
- | remonter d'une ligne au premier caractère non vide |
$ ou fin | aller à la fin de la ligne (si [count] est donné, aller [count - 1] lignes vers le bas) |
| | aller au [comte] 'e caractère ou aller au début de la ligne si count non spécifié |
f {char} | aller à [count] 'occurrence de {char} à droite inclusivement |
F {char} | aller à [count] 'occurrence de {char} à gauche inclus |
t {char} | aller à [count] 'occurrence de {char} à droite exclusive |
T {char} | aller à [count] 'occurrence de {char} à gauche exclusive |
; | répéter les dernières fois f , t , F ou T [count] |
, | Répéter les dernières f , t , F ou T , dans la direction opposée, [compter] fois |
w | aller au début du mot suivant |
b | aller au début du mot précédent |
e | aller à la fin du mot suivant |
ge | aller à la fin du mot précédent |
% De | aller aux paires correspondantes, par exemple (), [], {} , /* */ ou #if, #ifdef, #else, #elif, #endif |
{ } | paragraphe précédent / suivant |
[{ ]} | début / fin du bloc |
'{carboniser} | Aller à la marque (marquer avec m {char} ) |
<CB> <CF> | page précédente / suivante |
<CO> <CI> | Retournez ou foward dans la "liste de saut" (nécessite jumplist fonctionnalité de jumplist , voir :help jumps ) |
Remarque: b , e et w considèrent un mot comme étant des lettres, des chiffres et des traits de soulignement par défaut (cela peut être configuré avec le paramètre iskeyword
). Chacun de ces éléments peut également être mis en majuscule, ce qui les oblige à ignorer tout ce qui n’est pas non plus blanc.
Remarque: Vim reconnaît deux types de mouvements: le mouvement de l’opérateur ( :help movement
) et les sauts ( :help jumplist
). Les mouvements comme ceux exécutés avec g
( gg
, G
, g,
) comptent comme des sauts, tout comme les changements. Les changements obtiennent leur propre liste, qui est navigable comme mentionné ci-dessus via g,
et g;
(voir :help changelist
). Les sauts ne sont pas traités comme des commandes de mouvement par Vim
Lorsque vous vous déplacez vers le haut ou vers le bas sur plusieurs lignes, le curseur conserve sa colonne comme prévu. Si la nouvelle ligne est trop courte, le curseur se déplace à la fin de la nouvelle ligne. Si la colonne est au-delà de la fin de la ligne, le curseur est affiché à la fin de la ligne. Le numéro de colonne initial est conservé jusqu'à ce qu'une action soit prise pour le modifier (par exemple, modifier du texte ou déplacer explicitement une colonne).
Si la longueur d'une ligne dépasse la largeur de l'écran, le texte est encapsulé (sous les paramètres par défaut, ce comportement peut être configuré). Pour vous déplacer parmi les lignes affichées à l'écran, plutôt que sur les lignes du fichier, ajoutez g devant la commande habituelle. Par exemple, gj déplace le curseur sur la position affichée sur une ligne en dessous de sa position actuelle, même si celle-ci se trouve sur la même ligne du fichier.
Recherche de motif
Vim prend en charge l'utilisation d'expressions régulières lors de la recherche dans un fichier.
Le caractère pour indiquer que vous souhaitez effectuer une recherche est /
.
La recherche la plus simple que vous pouvez effectuer est la suivante
/if
Cela recherchera le fichier entier pour toutes les instances de if
. Cependant, notre recherche if
est en fait une expression régulière qui correspondra à toute occurrence du mot if
, y compris ceux à l' intérieur d'autres mots.
Par exemple, notre recherche dirait que tous les mots suivants correspondent à notre recherche: if
, spiffy
, endif
, etc.
Nous pouvons effectuer des recherches plus compliquées en utilisant des expressions régulières plus complexes.
Si notre recherche était:
/\<if\>
alors notre recherche ne renverrait que des correspondances exactes au mot complet if
. Le spiffy
ci-dessus et endif
ne seraient pas retournés par la recherche, seulement if
.
Nous pouvons également utiliser des plages. Donné un fichier:
hello1
hello2
hello3
hello4
Si nous voulons rechercher ces lignes contenant "bonjour" suivi d'un chiffre entre 1 et 3, nous dirions:
/hello[1-3]
Un autre exemple:
/(?:\d*\.)?\d+
trouverait tous les nombres entiers et décimaux dans le fichier.
Naviguer jusqu'au début d'un mot spécifique
Lors de l'édition de texte, une tâche courante consiste à naviguer jusqu'à un mot particulier à l'écran. Dans ces exemples, nous explorons comment nous pouvons accéder au mot updated
. Dans un souci de cohérence entre les exemples, nous visons la première lettre du mot.
Saut en plein écran
M $ B
Cette approche est rapide, en utilisant seulement 3 touches. L'inconvénient est que ce n'est pas très général, car il n'est pas courant que notre ligne cible se trouve au milieu de l'écran. Cependant, c'est un mouvement utile lorsque vous faites des mouvements moins granulaires.
Utiliser un compte
3j f u ; ;
À première vue, cela peut sembler être un pas en arrière par rapport à la première approche en raison du nombre de frappes. Mais comme nous utilisons un décompte ici au lieu de M , il est plus flexible. Nous pouvons rapidement identifier le nombre correct à utiliser si relativenumber est activé. Pour passer au mot cible, utilisez f en combinaison avec ; peut être étonnamment efficace - et certainement mieux que d'appuyer plusieurs fois sur w . Si vous dépassez votre cible avec ; , Vous pouvez revenir en arrière avec.
Recherche explicite
/ up Enter n n
Naviguer via / peut être très puissant. Nous pouvons souvent accéder directement à notre mot cible en le tapant. Ici, nous ne tapons que les deux premiers caractères dans l'espoir qu'il corresponde uniquement à notre mot. Malheureusement, il y a plusieurs matchs, mais nous pouvons rapidement passer au match suivant avec n .
Recherche implicite
/ y Espace Entrez w
Dans certains cas, il peut être plus efficace de sauter près de notre cible plutôt que de viser directement. Ici, nous observons qu'il y a une lettre peu fréquente, y
, juste à côté de la cible. Nous pouvons ajouter un espace à notre terme de recherche pour diminuer les chances que nous avons touché un autre y
caractère le long du chemin. Cela peut aussi être très utile avec f {char} , comme dans l'exemple Utilisation d'un décompte .
Utiliser les marques pour se déplacer
Les marques sont comme des signets; ils vous aident à trouver les endroits où vous êtes déjà allé.
TLDR
Définissez-les en mode normal avec m{a-zA-Z}
et m{a-zA-Z}
les en mode normal ou visuel avec '{a-zA-Z}
(guillemet simple) ou `{a-zA-Z}
(backtick). Les lettres minuscules sont destinées aux marques dans un tampon et les lettres majuscules et les chiffres sont globaux. Voir vos marques actuellement définies avec :marks
, et pour plus d'informations, voir :help mark
.
Définir une marque
L'aide intégrée de Vim dit:
m{a-zA-Z} Set mark {a-zA-Z} at cursor position (does not move
the cursor, this is not a motion command).
La marque gardera une trace de la ligne et de la colonne où elle a été placée. Il n'y a aucune confirmation visuelle qu'une marque a été définie ou si une marque avait une valeur antérieure et a été écrasée.
Aller à une marque
L'aide intégrée de Vim dit:
Jumping to a mark can be done in two ways:
1. With ` (backtick): The cursor is positioned at the specified location
and the motion is exclusive.
2. With ' (single quote): The cursor is positioned on the first non-blank
character in the line of the specified location and
the motion is linewise.
Backtick utilise la position de la colonne, alors que Single-quote ne le fait pas. La différence entre simplement vous permet d'ignorer la position de la colonne de votre marque si vous le souhaitez.
Vous pouvez sauter entre les marques non globales en mode visuel en plus du mode normal pour permettre la sélection du texte en fonction des repères.
Marques mondiales
Les marques globales (majuscules) permettent de passer d'un fichier à un autre. Cela signifie que si, par exemple, la marque A
est définie dans foo.txt
, puis à partir de bar.txt
(n'importe où dans mon système de fichiers), si je passe bar.txt
à la marque A
, mon tampon actuel sera remplacé par foo.txt
. Vim vous invitera à enregistrer les modifications.
Passer à une marque dans un autre fichier n'est pas considéré comme un mouvement, et les sélections visuelles (entre autres choses) ne fonctionneront pas comme des sauts de marques dans un tampon.
Pour revenir au fichier précédent ( bar.txt
dans ce cas), utilisez :b[uffer] #
(c'est-à-dire :b#
ou :buffer#
).
Remarque:
Marques spéciales
Vim définit automatiquement certaines marques (que vous pouvez écraser vous-même, mais que vous n'aurez probablement pas besoin).
Par exemple (paraphrasée de l'aide de Vim):
`[` and `]`: jump to the first or last character of the previously changed or
yanked text. {not in Vi}
`<` and `>`: jump to the first or last line (with `'`) or character (with
<code>`</code>) of the last selected Visual area in the current
buffer. For block mode it may also be the last character in the
first line (to be able to define the block). {not in Vi}.
Plus, de l'aide intégrée de Vim:
'' `` To the position before the latest jump, or where the
last "m'" or "m`" command was given. Not set when the
:keepjumps command modifier was used.
Also see restore-position.
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'. `. To the position where the last change was made. The
position is at or near where the change started.
Sometimes a command is executed as several changes,
then the position can be near the end of what the
command changed. For example when inserting a word,
the position will be on the last character.
{not in Vi}
'" `" To the cursor position when last exiting the current
buffer. Defaults to the first character of the first
line. See last-position-jump for how to use this
for each opened file.
Only one position is remembered per buffer, not one
for each window. As long as the buffer is visible in
a window the position won't be changed.
{not in Vi}.
'^ `^ To the position where the cursor was the last time
when Insert mode was stopped. This is used by the
gi command. Not set when the :keepjumps command
modifier was used. {not in Vi}
De plus, les caractères (
, )
, {
et }
sont des marques qui sautent à la même position que leurs commandes en mode normal - c'est-à-dire que '}
fait la même chose en mode normal que }
.
Aller à une ligne spécifique
Pour sauter à une ligne spécifique avec un nombre deux-points. Passer à la première ligne d'un fichier utiliser
:1
Passer à la ligne 23
:23