Comment copier de la position actuelle à la fin de la ligne dans vi

106

J'utilise gvim dans Windows. Comment copier du texte de la position actuelle à la fin de la ligne dans vi et le coller dans un autre fichier ouvert dans vi. Je l'ai googlé mais je ne trouve aucune solution pour cela. J'apprécie toute aide à ce sujet. Je vous remercie.

javalearner
la source

Réponses:

160

La commande en mode normal pour passer à la fin de la ligne est $.

Vous pouvez copier à la fin de la ligne avec y$et coller avec p.

Pour copier / coller entre différentes instances, vous pouvez utiliser le presse-papiers système en sélectionnant le *registre, de sorte que les commandes deviennent "*y$pour copier et "*pcoller.

$ saut de ligne

$

y$ saut de ligne

y,$

"*y$ sélectionner le clipboard-register yank-to-linebreak

", *, y,$

"*p sélectionnez coller le registre du presse-papiers

", *,p

Vérifiez :h registerspour plus d'informations.

Don Reba
la source
Merci. mais je veux coller le contenu dans «un autre fichier» ouvert dans vi. Cela fonctionne uniquement avec le même fichier.
javalearner
4
Cela fonctionnera pour tout fichier ouvert dans la même instance. Vous pouvez copier dans le presse-papiers du système en sélectionnant le registre *(ou +).
Don Reba
Pourquoi les registres du système ne peut pas fonctionner ... je ne peux pas copier le contexte file1de file2. J'ai encore besoin d'utiliser la souris. Quelle pourrait être la raison probablement?
Alston
8
J'utilise généralement Dpour couper de la position actuelle à la fin et ppour coller (récupérer) les données d'origine, puis me déplacer ailleurs pour coller les données extraites. Tout simplement parce qu'il est beaucoup plus facile à taper Dque y$.
neevek
1
@PhilipRego, c'est y$, sans point-virgule.
Don Reba
45

Si vous ne souhaitez pas inclure le saut de ligne avec le yank, vous pouvez utiliser yg_. (Ou dans votre cas, "*yg_)

En gros, reconnaissez simplement qu'il y a une différence entre $ et en g_termes de mouvement. Cela m'a aidé à de nombreuses reprises.

Kenny
la source
3
Est-il possible d'échanger g_et $? Je me retrouve rarement, voire jamais, à inclure le saut de ligne dans les mouvements.
Jonathan Dumaine
1
OUI! la nouvelle ligne supplémentaire me rend fou. Ce sont les informations nécessaires.
javadba
6
@JonathanDumaine dans votre $MYVIMRCajouter la lignenmap $ g_
thedanotto
@thedanotto vous belle personne
Jonathan Dumaine
10

Ajoutez cette ligne à votre .vimrc

" Make Y yank till end of line
nnoremap Y y$

Plus à mon vimrc .

Andy Ray
la source
3

Une autre solution: Dpet collez-la avec p. En fait, cela supprime d'abord à la fin de la ligne et la re-colle au même endroit. Collez-le ailleurs avec p.

Daniel Porumbel
la source
1
Pourquoi ne pas Du et laisser le fichier inchangé? (note: ceci inclut une nouvelle lignée)
gene