J'apporte souvent des modifications au milieu d'un fichier volumineux, j'utilise l' gg
habitude de sauter au sommet pour vérifier quelque chose, puis je réalise que j'ai oublié de définir une marque à l'endroit où j'étais en train de l'éditer. Existe-t-il un moyen intégré pour accéder à l'emplacement de la dernière ligne modifiée?
la source
g;
etg,
pour passer d’une position à l’autre dans la liste des modifications. Voir:h g;
et:h g,
'
(apostrophe) au lieu de`
(backtick).Voici une autre approche qui correspond à votre scénario, et qui ira à l’endroit précédent
gg
(pas à la dernière ligne modifiée).Utilisation CtrlO
Lorsque vous appuyez sur
gg
, votre ancienne position de curseur est ajoutée à la liste de sauts . De:help jumplist
:Cela nécessite que vous utilisiez Vim (pas vi) avec la
+jumplist
fonctionnalité. Si vous:echo has('jumplist')
imprimez1
, vous pouvez l'utiliser.la source
Pour ajouter à la réponse de dnetserr et au commentaire de Peter Rincker, Vim tient à jour une liste de modifications et dispose de certaines commandes associées.
listera les changements, en vous indiquant où ils étaient et ce qu’ils étaient. Par exemple:
La ligne avec les
>
spectacles où vous vous trouvez dans la pile de modifications, un peu comme la liste de sauts (:jumps
) ou la pile de balises (:tags
). De même que la liste de sauts et la pile de balises, vous pouvez parcourir cette liste.En mode normal, les mouvements doivent
g;
aller à un emplacement de changement précédent etg,
au suivant. Vous pouvez également saisir le numéro de la modification avantg;
oug,
pour accéder à cette modification dans la liste. Ci-dessus,2g;
m'emmènerait à l'endroit où le changement impliquant stdio.h s'est produit.Lorsque vous êtes au milieu de la pile, les numéros des
:changes
mises à jour indiquent les distances relatives. Par exemple:Cela montre que je peux revenir en arrière (
1g;
ou tout simplementg;
) ou avancer (1g,
ou tout simplementg,
).C’est génial si le changement que vous voulez obtenir s’est produit il ya quelques modifications.
L'inconvénient est qu'il ne semble pas agir comme un mouvement normal. Par exemple, vous ne pouvez pas
dg;
supprimer du curseur le point de changement précédent, alorsd'.
qued'^
vous travaillez en tant que mouvements.la source
g;
ira à la ligne précédemment modifiée.la source
Étant donné que la commande d'annulation dans Vi agira comme une répétition lorsque la dernière commande était annulée, j'ai utilisé
uu
comme moyen de revenir à l'endroit où j'ai édité pour la dernière fois.Si vous utilisez Vim avec
nocompatible
set (comme la plupart des gens), vous souhaitez utiliseru
suivi deCTRL+R
pour annuler et rétablir. Sinon,uu
cela fonctionnera comme dans Vi.la source
:set nocompatible
n'est pas utilisé.vim
(avecnocompatible
) fait deux annulations avecuu
, mais j'utiliseu
etCTRL+r
pour le même effet.