it-swarm.it

Come copiare il testo da VIM a un programma esterno?

Sto cercando di copiare e incollare del testo da VIM. Sto facendo v per entrare in 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 esempio Chrome), fare clic con il pulsante destro del mouse-> incolla non incolla il testo corretto. Come copio il testo negli Appunti corretti?

91
ripper234

Quanto segue funzionerà solo se vim --version indica che hai +xterm_clipboard funzione. 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 utilizzando 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 "*p e se hai copiato del testo (usando, diciamo, Ctrl-C), puoi incollarlo in vim usando "+p.

70
Hamish Downer

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 copiare (copiare), basta usare il normale comando y, ecc.

Ho trovato questo comportamento abbastanza fastidioso, però, poiché comandi come d inseriscono il testo sul quale operano nel buffer predefinito, il che significa che non potrei fare un veloce dd e incollare una riga da internet, per esempio.

35
Reid

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 negli appunti a vim.

Per essere chiari, questo funziona per vim in esecuzione in un terminale come xterm.

31
Andrew Stacey

Trovo lo standard "+gP e "+y comandi molto difficili da usare. Quindi ho rimappato Ctrl-Y per trascinare negli appunti e Ctrl-P per incollare dagli appunti. Aggiungi questo a .vimrc

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

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

"+y

Molto intuitivo.

6
ripper234

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

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

4
crazy2be

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 gvim e di altri sistemi.

enter image description here

4
Andrzej Rehmann

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 verificato 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.

3

Per impostazione predefinita, se installi la versione light di vim, non avrai il +xterm_clipboard funzione attivata (vim --version | grep xterm), necessario per l'utilizzo di * e + registra 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 esegui vim --version | grep xterm, vedrai che ora è +xterm_clipboard.

Ora prova a copiare su + e * e dovrebbe funzionare.

2
laughing_man

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.

0
gc5