Come copiare il testo da VIM a un programma esterno?


84

Sto cercando di copiare e incollare del testo da VIM. Sto facendo v per accedere alla modalità visiva, quindi y una volta selezionato il mio blocco.

Sembra copiare il testo negli appunti di Vim, perché p lo incollerà. Ma in un altro programma (ad es. Chrome), fare clic con il pulsante destro del mouse-> incolla non incolla il testo corretto. Come copio il testo negli Appunti corretti?

Risposte:


63

Quanto segue funzionerà solo se vim --versionindica che hai +xterm_clipboardfunzionalità. In caso contrario, dovrai installare pacchetti aggiuntivi o ricompilare vim con quella funzione aggiunta.


In realtà ci sono due opzioni per questo:

"+y

copia nel "normale" buffer degli appunti (in modo da poterlo incollare usando Ctrl + V, tasto destro e selezionare "Incolla" ecc.), mentre

"*y

copie nella selezione X11: è possibile incollare da questo buffer usando il clic centrale.

Nota che "*e "+funziona in entrambi i modi. Quindi, se hai selezionato del testo in un'altra applicazione, puoi incollarlo in vim usando "*pe se hai copiato del testo (usando, diciamo, Ctrl-C), puoi incollarlo in vim usando "+p.


@Tshepang non funziona dallo stucco. cosa dovrei fare ?
Rahul Patil,

@RahulPatil Non lo so; forse fai una domanda separata, forse su Super User (dal momento che è uno strumento di Windows, sarebbe più gradito lì).
Tshepang,

@RahulPatil: se stai usando putty, stai modificando il file su un server remoto, non sul tuo computer locale. Generalmente il server remoto non conoscerà gli appunti sul tuo computer locale. Se stavi usando un desktop Linux, puoi ssh con X forwarding (a condizione che tu abbia installato le librerie X sul server), ma poiché putty gira su Windows non hai X in esecuzione, quindi non puoi inoltrarlo.
Hamish Downer,

1
Ciao a tutti, Come digitare "+ y? Dovrei digitarlo in modalità Visual o in modalità comando? Cosa sciocca, ma non sono in grado di capirlo.
Alind Billore,

@AlindBillore: in modalità comando. Letteralmente, premere i tasti shift'quindi shift=poi y(non tutti in una volta, uno dopo l'altro, ad eccezione dei turni di corso).
Reid

31

Se stai usando vim> = 7.3.74, puoi effettivamente inserirlo nel tuo vimrc:

set clipboard=unnamedplus

Che utilizzerà automaticamente il +buffer (gli Appunti di sistema) per impostazione predefinita. Quindi per strappare (copiare), basta usare il ycomando normale , ecc.

Ho trovato questo comportamento abbastanza fastidioso, però, dato che comandi come dmettere il testo su cui operano nel buffer predefinito, il che significa che non potevo fare un veloce dde incollare una linea da Internet, per esempio.


2
+ è un registratore di appunti
Kit Ho

1
Per quanto riguarda il tuo ultimo punto, ddsignifica "tagliare una riga", quindi sarebbe il comportamento previsto. Nel raro caso in cui desideri effettivamente eliminare una linea nell'oblio, "_ddfarà il trucco.
user7089

anche come osserva @HamishDowner nella sua risposta: Quanto segue funzionerà solo se vim --versionindica che hai +xterm_clipboardfunzionalità. In caso contrario, dovrai installare pacchetti aggiuntivi o ricompilare vim con quella funzione aggiunta.
rudolph9,

24

Tenere premuto il tasto Maiusc e selezionare il testo con il cursore del mouse.
Il testo verrà copiato negli appunti.

Questo funziona anche per incollare dagli Appunti su VIM.

Per essere chiari, questo funziona per l' vimesecuzione in un terminale come xterm.


Intendi tenere premuto il tasto Maiusc durante la selezione del testo? È così che lo faccio xterm.
Nozimica,

@nozimica: Sì.
Loop Space

Questa risposta dovrebbe avere più voti ...
whoan

@LoopSpace per le selezioni multilinea anche questo copia i numeri di riga quando set nuè abilitato. Quindi probabilmente vorrai alternare i numeri di riga con qualche scorciatoia o eseguire il :set nonucomando prima di ogni selezione
Steven Pribilinskiy,

Su MAC tieni premuto il tasto opzione e seleziona il testo con il cursore del mouse
abreschi il

10

Trovo lo standard "+gPe i "+ycomandi molto difficili da usare. Quindi ho rimappato Ctrl-Yper averlo trascinato negli appunti e Ctrl-Pincollato dagli appunti. Aggiungi questo a.vimrc

nnoremap <C-y> "+y
vnoremap <C-y> "+y
nnoremap <C-p> "+gP
vnoremap <C-p> "+gP

6

Non importa, ho trovato la risposta: è scritta nei menu di VIM.

"+y

Molto intuitivo.


Stai usando gvim?
Nozimica,

@ nozimica- yeah
ripper234

1
È disponibile anche in vim in esecuzione in un xterm o in un emulatore di terminale simile in X (se vim è compilato con la +xterm_clipboardfunzione).
Gilles,

3

Solo per aggiungere una risposta non specifica per Vim: puoi usare Ctrl+Shift+Cper copiare negli appunti di sistema in Ubuntu (se la funzionalità è fornita dal tuo emulatore di terminale, gnome-terminal per uno lo fornisce). Ctrl+Shift+Vincollare in un'altra finestra del terminale, Ctrl+Vincollare regolarmente in un'app GUI.

Inoltre, se si seleziona il testo nel terminale, quindi si fa clic con il pulsante centrale, verrà incollato dagli Appunti X11.


Per qualche motivo non funziona. Basta selezionare con la modalità visiva, copiare con ctrl-shift-C, quindi incollare in un'altra app usando Ctrl-shift-V? Il testo non viene copiato per me.
ripper234,

2
@ ripper234: questo non funziona se stai usando gvim. Come dice crazy2be, questa funzionalità proviene dal tuo emulatore di terminale.
Reid

@ ripper234: 1) È la funzionalità fornita dall'emulatore di terminale (gnome-terminal per uno lo fornisce), 2) Ctrl + Maiusc + V è per incollare sul terminale , le app GUI usano ancora Ctrl + V come al solito. Modificherò la risposta per renderlo più chiaro.
crazy2be

se si utilizza mousedrag con controllo a scorrimento: selezionare il testo, copiare e incollare da una finestra dei buffer diventa semplice.
Stephan,

2

Per impostazione predefinita, se installi la versione light di vim, non avrai la +xterm_clipboardfunzione on ( vim --version | grep xterm), necessaria per usare i registri *e +al di fuori di vim.

Per abilitarlo, è necessario compilare vim da soli o installare una versione di vim fornita con pre-abilitato. Ho usato vim-gnome: sudo apt-get install vim-gnome. Se ti esibisci vim --version | grep xterm, vedrai che è adesso +xterm_clipboard.

Ora, provate la copia al +ed *e dovrebbe funzionare.


2

Quando ho controllato il mio vim non supportava gli appunti:

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Ho installato vim-gnome e poi ho controllato di nuovo

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Ora sono in grado di copiare e incollare usando rispettivamente "+ y e" + p.


1

Tenere premuto il tasto MAIUSC e il mouse selezionare il testo per copiarlo.

Quindi incollare in un altro programma con CTRL + v.

Funziona nel terminale sul mio Ubuntu 16.04. Non sono sicuro di gvime altri sistemi.

inserisci qui la descrizione dell'immagine


Questo non funziona
Astrid,

risposta creativa
vidur punj

0

Solo per aggiungere, se qualcosa funziona, prova a cambiare il terminale che avvolge vim (se stai usando vim dal terminale). Ho scoperto che, ad esempio, gli Appunti sono inaccessibili per errore mentre sono accessibili da gnome-terminal.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.