À Vim, comment puis-je retourner là où j'étais avant une recherche?

258

Programmation dans vim Je vais souvent chercher quelque chose, je le tire, puis je reviens où j'étais, je l'insère, je le modifie.

Le problème est qu'après avoir cherché et trouvé, je dois retrouver MANUELLEMENT mon chemin vers l'endroit où j'étais.

Existe-t-il un moyen automatique de revenir à l'endroit où j'étais lorsque j'ai lancé ma dernière recherche?

Edward Tanguay
la source
duplication possible du curseur
Simone Carletti

Réponses:

393

Ctrl+ Om'emmène à l'emplacement précédent. Je ne connais pas l'emplacement avant la recherche.

Modifier: `.vous amène également à la dernière modification que vous avez apportée.

Agnel Kurian
la source
Il semble également que le fait d'appuyer sur CTRL + O suffisamment de fois commencera également à vous faire parcourir les fichiers précédemment ouverts.
Mark Biek
1
Ctrl + O est également ma méthode préférée. Je l'utilise constamment et je souhaite que d'autres éditeurs reproduisent son comportement.
amrox
45
Oui, CTRL-O et CTRL-je semble vous emmener d'avant en arrière où vous étiez, chouette.
Edward Tanguay
8
Ctrl + T ne vous ramènera que si vous y êtes arrivé en utilisant une balise. Si vous l'avez recherché sans utiliser de balises, Ctrl + T vous ramènera à l'endroit où vous étiez avant de rechercher votre dernière balise
Nathan Fellman
1
J'ai constaté que si je saute vía :70puis :100, en appuyant ctrl+oune fois, on revient à l'emplacement d'origine, pas à la ligne 70. :(
WhyNotHugo
91

Utilisez ``pour revenir à la position exacte dans laquelle vous vous trouviez avant de chercher / sauter, ou ''pour revenir au début de la ligne sur laquelle vous vous trouviez avant de chercher / sauter.

Max Cantor
la source
4
Ne voit à fonctionner que si vous êtes sur le premier match, n-ing aux matchs suivants signifie que vous ne revenez pas à l'endroit où vous avez commencé.
Kris
Et si vous cherchiez et apportiez un changement?
Costa
1
Vous pouvez également utiliser g;et g,, il va à la position du changement précédent / suivant.
goetzc
39

Je l'ai toujours fait en établissant une marque.

  1. En mode commande, appuyez sur m[lettre] . Par exemple, madéfinit une marque sur la ligne actuelle en utilisant a comme identificateur de marque.

  2. Pour revenir à la marque, appuyez sur '[lettre] . Par exemple, 'avous ramène à la marque de ligne définie à l'étape 1. Pour revenir à la position de la colonne de la ligne où vous avez marqué la ligne, utilisez `a( coche arrière [lettre] ).

Pour voir toutes les marques actuellement définies, tapez :marks.


Sur une note légèrement indépendante, je viens de découvrir une autre chose intéressante sur les marques.

Disons que vous sautez pour marquer b en faisant mb. Vim définit automatiquement la marque '(c'est-à-dire un guillemet simple) sur la ligne sur laquelle vous vous trouviez avant de passer à la marque b .

Cela signifie que vous pouvez faire 'bpour sauter à cette marque, puis faire ''(2 guillemets simples) pour revenir à l'endroit où vous étiez auparavant.

J'ai découvert cela accidentellement en utilisant la :markscommande, qui affiche une liste de toutes les marques.

Mark Biek
la source
6
heureusement, une marque est souvent inutile car vim garde une trace spéciale de certaines positions et vous donne accès à celles-ci avec ``, ^ O, etc.
aehlke
la marque ne semble que m'emmener au début de la ligne sur laquelle elle était posée. ):
Fzs2
1
@HermannIngjaldsson Vous l'avez peut-être déjà compris, mais en utilisant "vous amènera à la ligne marquée", vous amènera à l'emplacement exact.
azmr
38

Vous devriez vraiment le lire, :help jumplistcela explique très bien tout cela.

André
la source
J'aime le mieux cette réponse, il y a BEAUCOUP d'informations dans: de l'aide que la plupart des gens ne connaissent pas (et je ne le savais que récemment)
Christian Stewart
1
Quelle bonne lecture! C'est super utile. <Co> et <Ci> pour parcourir les lieux que vous avez récemment visités. Fonctionne sur les tampons par défaut:)
Costa
29

CTRL+Oet CTRL+I, pour sauter d'avant en arrière.

vente
la source
7

La façon la plus simple est de définir une marque, avec m[letter], puis d'y revenir avec'[letter]

Paul Tomblin
la source
C'est un plaisir de vous voir lorsque je recherche des astuces Vim. J'ai utilisé ctrl-o plus avec ctrl-i car il va et vient plus facilement et plus automatiquement.
MattK
7

J'utilise celui-ci:

nnoremap / ms/
nnoremap ? ms?

Ensuite, si je recherche quelque chose en utilisant /ou ?, je peux revenir rapidement en arrière `s. Vous pouvez remplacer la lettre spar n'importe quelle lettre que vous aimez.

Ethan Zhang
la source
La seule mise en garde ici est qu'elle interrompt la recherche dans une fenêtre telle que NerdTree où mest définie comme autre chose que mark, dans le cas de NerdTree, c'est le menu.
Kris