Come copiare le righe selezionate negli appunti in vim


Risposte:


107

SHIFTVti mette in modalità di selezione delle linee. Quindi "*ytrascina le righe attualmente selezionate nel *registro che è la clipboard. Ci sono molti registri diversi, per scopi diversi. Vedere la sezione su selection and drop registersper i dettagli sulle differenze tra *e +registri su Windows e Linux.


10
In Linux, + è appunti globali, * è appunti di selezione, mentre in Windows entrambi mappano negli appunti globali.
Mohnish,

74

Se sei su Linux e stai utilizzando una versione VIm 7.3.74 o successiva (la versione che viene installata in Ubuntu 11.10 in poi lo soddisfa), puoi farlo

set clipboard=unnamedplus

che posizionerà il testo strappato negli appunti globali e ti consentirà di incollare dagli appunti globali, senza dover utilizzare alcun registro speciale. A differenza della soluzione di ldigas, funzionerà anche su versioni non gui di VIm.


8
Funziona solo se installo il vim-gnomepacchetto invece di vim.
dan-klasson

4
@ dan-klasson: questa opzione richiede un vim che è stato compilato con il supporto per gli appunti. Puoi verificare se questo è il caso digitando vim --version | grep "+xterm_clipboard".
BenC

Questo sembra funzionare per copiare in altri programmi non vim, ma quando entro in modalità di inserimento in vim e uso "shift + insert" per incollare dagli appunti, vengono incollate solo le prime due righe ... ho installato vim-gnome ; mi manca qualcos'altro?
t2k32316

2
Se sei su macOS, probabilmente dovrai usare clipboard=unnamed( vim.wikia.com/wiki/Accessing_the_system_clipboard )
streof

13
set guioptions+=a

... uhmm, in breve, ogni volta che selezioni / strappi qualcosa lo metti anche negli appunti (non quello di Vim, ma la tastiera globale del sistema a finestre). In questo modo non devi pensare di trascinare le cose in un registro speciale.


2
//, A quali sistemi operativi e / o versioni di Vim si applica questo consiglio?
Nathan Basanese

10

Per GVIM, premi vper entrare in modalità visuale; seleziona il testo e premi Ctrl+Insertper copiare la selezione negli appunti globali.

Dal menu puoi vedere che il tasto di scelta rapida è "+ycioè tenere premuto il tasto Maiusc, quindi premere ", +quindi rilasciare Maiusc e premere y(ingombrante rispetto a Maiusc + Inserisci).


Perché questa risposta non è popolare? :(
Ankit Shubham

6

Se stai usando vim in MAC OSX, sfortunatamente viene fornito con la versione precedente e non è conforme alle opzioni degli appunti. Fortunatamente, l'homebrew può facilmente risolvere questo problema.

installa vim:

brew install vim --with-lua --with-override-system-vim

installa la versione gui di vim:

brew install macvim --with-lua --with-override-system-vim

riavviare il terminale per avere effetto.

aggiungere la riga seguente a ~ / .vimrc

set clipboard=unnamed

ora puoi copiare la riga in vim con yy e incollarla a livello di sistema.


//, l'ho appena testato su OSX 10.12.3 e ha funzionato correttamente dopo aver installato sia l'ultima versione di Vim che quella della GUI latets di Vim, come consigliato qui. Grazie, @anonymous.
Nathan Basanese

4

Installa "xclip" se non hai ...

sudo apt-get install xclip

Xclip inserisce i dati negli appunti "selezione / evidenziati" che fai clic con il pulsante centrale per incollare anziché "ctrl + v"

Mentre in vim usa i comandi ex:

7w !xclip

o

1,7w !xclip

o

%w !xclip

Quindi fai clic con il pulsante centrale per incollare in qualsiasi altra applicazione ...


4

Se vim è compilato con il supporto degli appunti, puoi usare il "*ysignificato: trascina il testo selezionato visivamente nel registro *('*' è per gli appunti)

Se non c'è il supporto per gli appunti, penso che solo un altro modo sia quello di usare Ctrl+Insertdopo aver selezionato visivamente il testo in vim.


3

Ho aggiunto la seguente riga al mio .vimrc

vnoremap <F5> "+y<CR>

Ciò consente di copiare il testo selezionato negli appunti premendo F5. Devi essere in modalità visuale affinché funzioni.


1
Aggiungi a ~/.vimrcGrazie, questo è molto meglio.
jaggedsoft

2

Aggiungi il seguente codice nel tuo .vimrc:

if has('clipboard')
    if has('unnamedplus')  " When possible use + register for copy-paste
        set clipboard=unnamed,unnamedplus
    else         " On mac and Windows, use * register for copy-paste
        set clipboard=unnamed
    endif
endif
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.