Mon curseur se trouve au milieu d'un paragraphe lorsque je décide que je dois soudainement copier ce paragraphe:
Je tape donc vip
pour sélectionner visuellement le paragraphe:
Maintenant, je clique cmd+C
pour copier dans le presse-papiers (cela peut varier sur votre système, mais ne devrait pas être pertinent pour la question centrale de mon message), ce qui laisse mon curseur au début du paragraphe:
plutôt que la position souhaitée, qui était là où elle était quand j'ai commencé.
Notez que le même problème se produit lorsque vous tirez la sélection non visuellement avec yip
.
Je voudrais que le comportement par défaut soit "revenir à la position d'origine du curseur" après avoir effectué des actions de sélection / copie comme ceci. Existe-t-il une configuration qui rend cela possible?
mm "+yap `m
(Notez que vous"+y
appuierez sur le presse-papiers de votre système)Réponses:
Une solution possible consiste à utiliser des sauts:
Avant de tirer ou de sélectionner visuellement, vous pouvez définir un nouveau saut auquel vous pourrez accéder après le déplacement de votre curseur. Pour ce faire, utilisez m`.
Ensuite, après que votre curseur se soit déplacé à cause de l'utilisation de tir ctrlopour revenir dans la liste de sauts. Vous pouvez également voir la liste des sauts disponibles avec
:jumps
et naviguer dans cette liste avec ctrloetctrliPour résumer votre flux de travail serait:
Comme l'utilisation m` définit une marque, vous pouvez y accéder avec ``au lieu de ctrlo.
Vous pouvez lire
:h mark-motions
et:h :jumps
pour plus d'informations.la source
<leader>'
pour être`
, ce qui fonctionne très bien pour moi. (J'utilise<space>
comme mon chef.):h 'langmap'
. Je ne dis pas que c'est la solution idéale, mais cela pourrait peut-être être intéressant pour vous.noremap ' `
noremap ` '
... C'est dans mon vimrc et fonctionne très bienVous pouvez éviter de déplacer le curseur avec:
Voir
:help range
,:help mark-motions
et:help :y
.la source
:nmap <key> :'{,'}y<CR>
ça devrait faire l'affaire.Si vous venez de g ;le modifier , la solution la plus simple est de taper qui positionnera votre curseur sur la dernière position de modification.
Et si vous n'avez pas modifié le paragraphe, vous pouvez effectuer une opération de remplacement simple avec le même caractère que vous (par exemple, vous êtes sur
h
, vous tapezrh
) pour déclencher un "événement" d'édition sans réellement modifier quoi que ce soit.la source
'.
, mais il peut être très utile de naviguer entre les derniers changements avecg;
etg,
.g;
qui vous amène également à la position de colonne correcte?Le plugin vim-easyclip a un paramètre pour cela:
C'est un peu trop pour moi d'installer un plugin entier juste pour cette petite fonctionnalité, donc je préfère utiliser les marques selon mon commentaire.
la source
En étendant la réponse d'Al.G., Nous pouvons aller à l'emplacement requis sans modification. La solution est gi. Nous atteindrons la même position où nous étions en dernier mode d'insertion auparavant.
Si nous voulons aller au début ou à la fin du texte en surbrillance.
Lorsque vous tirez sur le texte en surbrillance, vous revenez également au mode normal et vous pouvez ou non conserver la position d'origine du curseur.
Revenir à l'emplacement d'origine après avoir tiré:
gv pour obtenir le surlignage précédent.
Vous pouvez maintenant basculer entre l'emplacement d'origine et l'emplacement actuel en mode visuel avec la touche
oou O.
Le numéro de ligne et de colonne de la ligne d'état aidera à connaître la position exacte du curseur.
Documentation:
la source
vip
lorsque le curseur démarre au milieu d'un paragraphe.vip
vérifier ma modification.