Comment faire pour coller sur sans écraser registre
Personne ne sait de façon à coller sur un visuel de la zone choisie sans avoir la sélection placés par défaut dans le registre?
Je sais que je peux résoudre le problème en toujours coller à partir d'un registre explicite. Mais c'est une douleur dans le cou de type "xp au lieu de simplement les p
Vous devez vous connecter pour publier un commentaire.
"{register}p
ne fonctionne pas comme vous le décrivez. Il va remplacer la sélection par le contenu d'un registre. Vous aurez de la place pour faire quelque chose comme:Qui doit être très bien aussi longtemps que vous n'utilisez pas un plugin qui a un non-nore vmap à p, et qui s'attend à un registre de l'être remplacé.
Ce code est disponible sous forme de script il y. Ingo Karkat a également défini un plugin résoudre le même problème.
regtype
(linewise?) et que de reconfiguration p pourpgvy
est suffisant."xp
, cela ne remplace pas@"
contenu avec@x
contrairement àpgvy
:xnoremap p pgv@=v:register.'y'<cr>
?:verbose vmap p
et:verbose vmap x
dites-vous ? BTW, avez-vous vérifié ce patch stackoverflow.com/a/4446608/15934 ?Je n'aime pas la valeur par défaut vim comportement de copie tout le texte supprimé avec
d
,D
,c
, ouC
par défaut dans le registre.Que j'ai eu autour de la cartographie des
d
à"_d
,c
à"_c
, et ainsi de suite.De mon .vimrc:
Utiliser les éléments suivants:
cela permettra de sélectionner à nouveau et re-copier le texte est collé dans le mode visuel.
Edit: pour que cela fonctionne avec
"xp
que vous pouvez faire:v:register
se développe pour le dernier registre nom utilisé dans une commande mode normal."xp
, cette approche remplace@"
avec@x
.xnoremap p pgv"@=v:register.'y'<cr>
ne fonctionne pas pour moi. Ceci, cependant, ne:xnoremap <expr> p 'pgv"'.v:register.'y'
g
n'? Je ne l'ai pas vu avant.z
. Par exemple,go
va à la n-ième octet dans la mémoire tampon,gj
etgk
aller à la page suivante et page précédente affiche la ligne (diffèrent dejk
lorsque les lignes sont enveloppés),ga
affiche des informations sur le caractère sous le curseur,gJ
rejoint les lignes sans espace, et icigv
restaure dernière sélection visual. Vous pouvez utiliser:help gv
.Dans votre
.vimrc
J'ai trouvé ce à partir d'une réponse sur un fil similaire, mais la source d'origine a été http://vim.wikia.com/wiki/Replace_a_word_with_yanked_text. Il mentionne quelques inconvénients, cependant, il fonctionne très bien pour moi.
.vimrc.local
est OK aussi.Luc hermitte (en) la solution fonctionne comme un charme. Je l'utilise pour environ une semaine. Puis j'ai découvert une solution de Steve Losh du .vimrc qui fonctionne très bien, si YankRing est une partie de votre plugin/bundle gamme:
Essayer dans votre
~/.vimrc
:xnoremap
signifie que ce est seulement pourVisual
mode, pasVisual + Select
modes.<expr>
signifie que{rhs}
de laxnoremap {lhs} {rhs}
paramètre est évalué comme une expression.Dans ce cas, notre expression de
'pgv"'.v:register.'y'
est à l'aide de.
pour la concaténation.v:register
est évaluée pour le registre utilisé lors de la réalisation de la cartographie.Le résultat de
"xp
permettrait d'évaluer àpgv"xy
, oùx
est le registre.J'ai été aidé par une réponse à cette stackoverflow question: Vim - mapping avec un registre optionnel préfixe
en collaboration avec Benoit's réponse sur cette page
Luc fonction a bien fonctionné pour moi après j'ai fait un changement pour appuyer le fait que j'ai du presse-papiers=sans nom jeu:
clipboard=unnamedplus
ce doit être@+
au lieu de@*
.Luc hermitte (en) l'a fait l'affaire! Vraiment bonne. Voici sa solution, le mettre dans une fonction de bascule, de sorte que vous pouvez basculer entre un comportement normal et le non-remplacement-registre mis.
la commande ,u bascule le comportement
silent! vunmap
au lieu devnoremap <silent> <expr> p p
essayez -