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 recherchera the , The , ThE , etc. tout /The seule recherchera The .

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.

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

entrer la description de l'image ici

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 ; ;

entrer la description de l'image ici

À 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

entrer la description de l'image ici

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

entrer la description de l'image ici

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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow