Come si fa a incollare Vim da (e copiare su) gli appunti del sistema?

A differenza di altri editor, vim memorizza il testo nei propri appunti. Quindi, è molto difficile per me copiare del testo da una pagina web e incollarlo nel file di lavoro corrente. Accade così che devo aprire gedit o scriverlo manualmente.

Posso fare la pasta di vim da e agli appunti del sistema?

I registri "* e "+ sono per gli appunti del sistema ( :help registers ). A seconda del sistema, possono fare cose diverse. Ad esempio, su sistemi che non usano X11 come OSX o Windows, il registro "* viene utilizzato per leggere e scrivere negli Appunti di sistema.Per i sistemi X11 è ansible utilizzare entrambi i registri. Vedere :help x11-selection per maggiori dettagli, ma in pratica "* è analogo alla selezione PRIMARY di X11 (che di solito copia le cose che selezioni con il mouse e incolla con il pulsante centrale del mouse) e "+ è analogo alla selezione CLIPBOARD di X11 (che è il blocco appunti appropriato).

Se tutto ciò ti è passato sopra, prova a utilizzare "*yy o "+yy per copiare una linea negli appunti del sistema. Supponendo che tu abbia le opzioni di compilazione appropriate, l’una o l’altra dovrebbe funzionare. Ti potrebbe piacere rimappare questo per qualcosa di più conveniente per te. Ad esempio, puoi inserire vnoremap "*y nel tuo ~ / .vimrc in modo da poter selezionare visivamente e premere Ctrl + c per scorrere negli appunti del sistema.

Tieni presente che copiare / incollare dagli Appunti di sistema non funzionerà se :echo has('clipboard') restituisce 0. In questo caso, vim non è compilato con la funzione +clipboard e dovrai installare una versione diversa o ricompilare esso. Alcune distribuzioni di Linux forniscono un’installazione minima di Vim di default, ma generalmente se si installa il pacchetto vim-gtk è ansible ottenere le funzionalità extra.

Si consiglia inoltre di dare un’occhiata all’opzione 'clipboard' descritta in :help cb . In questo caso puoi :set clipboard=unnamed o :set clipboard=unnamedplus per fare in modo che tutte le operazioni di :set clipboard=unnamedplus / eliminazione :set clipboard=unnamedplus copiate automaticamente negli Appunti di sistema. Questo potrebbe essere un inconveniente in alcuni casi in cui si sta archiviando qualcos’altro negli Appunti poiché esso lo sovrascriverà.

Per incollare puoi usare "+p o "*p (di nuovo, a seconda del tuo sistema e / o della selezione desiderata) o puoi mapparli a qualcos’altro. Li digito esplicitamente, ma spesso mi trovo in modalità di inserimento. Se sei in modalità di inserimento puoi ancora incollarli con il rientro appropriato usando * o + . Vedi :help i_CTRL-R_CTRL-P .

Vale anche la pena menzionare l’opzione paste di vim ( :help paste ). Questo mette in una speciale “modalità incolla” che disabilita molte altre opzioni, consentendo di incollare facilmente in vim utilizzando l’emulatore di terminale o il collegamento di pasta familiare del multiplexer. Basta digitare :set paste per abilitarlo, incollare il contenuto e quindi digitare :set nopaste per disabilitarlo. In alternativa, è ansible utilizzare l’opzione pastetoggle per impostare un codice chiave che alterna la modalità ( :help pastetoggle ). Raccomando di usare i registri al posto di queste opzioni, ma se sono ancora troppo spaventosi questa può essere una soluzione comoda mentre stai perfezionando le tue trame vim.

Vedi :help clipboard per informazioni più dettagliate.

Puoi copiare in vim. Crea il file in modalità di inserimento e usa Ctrl + Maiusc + v . Ricorda in anticipo a

  :set paste 

per evitare di incasinare l’identificazione …

Linux

Sul mio sistema Linux, i registri + e * associano a una selezione X11, che può essere incollata con il pulsante centrale del mouse. Quando :set clipboard=unnamed e :set clipboard=unnamedplus vengono utilizzati, quindi i registri vengono :set clipboard=unnamedplus negli Appunti e possono essere incollati con CTRL-V.

Le specifiche sembrano essere in qualche modo configurabili e dipendenti dal sistema, quindi il tuo chilometraggio varierà sicuramente. Dovrebbe sicuramente farti indicare nella giusta direzione, però.

Guarda anche

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

Per il mio quella configurazione funziona per copiare e incollare

 " copy and paste vmap  "+yi vmap  "+c vmap  c"+p imap  "+pa 

Queste sarebbero le linee di cui hai bisogno nel tuo vimrc per questo scopo:

 set clipboard+=unnamed " use the clipboards of vim and win set paste " Paste from a windows or from vim set go+=a " Visual selection automatically copied to the clipboard 

appunti

C’è un registro speciale per l’archiviazione di questa selezione, è il registro “*. Qui non viene inserito nulla a meno che le informazioni su quale testo sia selezionato stiano per cambiare (ad esempio con un clic del mouse sinistro da qualche parte) o quando un’altra applicazione vuole incollare il testo selezionato, quindi il testo viene inserito nel registro “*. Ad esempio, per tagliare una linea e renderla la selezione corrente / metterla in CLIPBOARD:

  "*dd 

Allo stesso modo, quando si desidera incollare una selezione da un’altra applicazione, ad esempio facendo clic sul pulsante centrale del mouse, la selezione viene inserita nel registro “*” e quindi “inserita” come qualsiasi altro registro. Ad esempio, per inserire la selezione (contenuto del CLIPBOARD):

  "*p 

registra E354

 > There are nine types of registers: > 1. The unnamed register "" > 2. 10 numbered registers "0 to "9 > 3. The small delete register "- > 4. 26 named registers "a to "z or "A to "Z > 5. four read-only registers ":, "., "% and "# > 6. the expression register "= > 7. The selection and drop registers "*, "+ and "~ > 8. The black hole register "_ > 9. Last search pattern register "/ 

Incolla dagli appunti

 1. Clipboard: Copy 2. Vim insertmode, middle mouse key 

Controlla il supporto per X11-clipboard nel terminale

Quando ti piace eseguire Vim in un terminale, devi cercare una versione di Vim compilata con supporto per gli appunti. Cerca il supporto per X11-clipboard, dalla console, digita:

 % vim --version 

Se vedi “+ xterm_clipboard”, sei a posto.

http://vim.wikia.com/wiki/Accessing_the_system_clipboard

Il server X mantiene tre selezioni, chiamate:

PRIMARY, SECONDARY e CLIPBOARD

La selezione PRIMARY viene convenzionalmente utilizzata per implementare la copia e incolla tramite il pulsante centrale del mouse. Le selezioni SECONDARY e CLIPBOARD vengono utilizzate meno frequentemente dai programmi applicativi.

http://linux.die.net/man/1/xsel

Ho provato i suggerimenti sopra e nessuno di loro ha funzionato nel mio ambiente. (Clone di Windows PuTTY su ssh)

Sono state visualizzate alcune ricerche su google aggiuntive: https://unix.stackexchange.com/questions/110684/copy-paste-into-sshd-vim-from-local-windows-clipboard

Uno dei commenti suggerito usando SHIFT+INSERT che ha fatto il trucco per incollare dagli appunti del mio desktop nel buffer di Vim. Ctrl-C stava già lavorando per copiare negli appunti del desktop da Vim.

Credo che questa domanda meriti una risposta più obiettiva.

Accesso alla modalità Incolla

  • ESC
  • : set paste
  • premi i
  • MAIUSC + Inserisci (con un testo copiato negli Appunti)

Lasciando la modalità Incolla

  • ESC
  • : imposta nopaste
  • premi i

Hai incollato il testo e riesci a digitare di nuovo.

Non avevo + appunti, quindi ho trovato questa soluzione alternativa usando xsel:

Aggiungi al tuo ~ / .vimrc:

vnoremap :w !xsel -b

Una breve nota per le persone la cui installazione di vim non supporta i registri * e +. Non è necessario scaricare una nuova installazione di vim da incollare dagli Appunti. Ecco un metodo alternativo:

1) Installa parcellite (un gestore di appunti con un footprint di memoria basso);

2) Nel tuo file .vimrc, aggiungi quanto segue:

 command Clip r !parcellite -c 

3) Riavvia vim.

Ora quando digiti: Clip come un comando ex, il contenuto degli appunti verrà incollato sul cursore. È inoltre ansible associare il nuovo comando a un tasto funzione in modo da poterlo fare con un solo tasto.

Funziona per me: CTRL + MAIUSC + V

A seguito della risposta di Conner, che è stata ottima, ma CR Cp + e CR Cp * in modalità di inserimento è un po ‘scomodo. Ditto "*p e "+p dalla modalità comando.

un guru di VIM ha suggerito quanto segue per mappare Cv su cosa fa Cr Cp + .

È ansible avere :inoremap "+p per la modalità di inserimento

se vuoi davvero scavalcare la modalità visuale a blocchi (non consigliato da lui in quanto la modalità visiva è buona) potresti avere la map "+p

In cima all’impostazione :set clipboard=unnamed , dovresti usare mvim -v che puoi ottenere con brew install macvim se stai usando vim su Terminal.app su Mac OS X 10.9. Vim predefinito non supporta l’opzione degli appunti.

Potrebbe anche essere utile menzionare, su OSX usando Vim, è ansible selezionare il testo con il mouse, Cmd-C per copiare negli appunti del sistema OSX, e il testo copiato sarà disponibile negli appunti al di fuori di Vim.

In altre parole, OSX lo considera come se fosse una finestra normale, ed è qui che il tanto agognato pulsante “Command” di Apple è molto utile.

B-30

In base alla risposta @ lis2, utilizzo una configurazione più semplice che non imporrà la modalità di inserimento alla fine:

 " Copy and paste if has('clipboard') && !has('gui_running') vnoremap  "+y vnoremap  "+d vnoremap  "+p inoremap  + endif 

Ricorda che tutti questi sovrascrivono i mapping Vim predefiniti:

  • v_CTRL-C : interrompe la modalità visiva
  • v_CTRL-X : sottrarre [contare] dal numero
  • v_CTRL-V : modalità visiva a blocco
  • i_CTRL-V : inserisce la successiva non cifra letteralmente, che viene anche mappata a i_CTRL-Q

In alternativa, è ansible utilizzare i tasti ispirati ai verbi Vim: “yank”, “delete” e “put”: , e rispettivamente. Queste sostituiranno solo una mapping predefinita:

  • i_CTRL-P : parola chiave di ricerca all’indietro per il completamento

Quello di cui hai veramente bisogno è EasyClip . Farà solo questo e molto altro ancora …

Quando uso il mio Debian vim che non è integrato con Gnome (vim –version | grep clip # non mostra alcun supporto per gli appunti), posso copiare negli appunti dopo aver premuto il tasto Shift e aver selezionato il testo con il mouse, proprio come con qualsiasi altro programma di maledizione. Come ho capito da un commento di @Conner, è il terminale (gnome-terminal nel mio caso) che distriggers il suo report sugli eventi del mouse quando avverte la mia pressione di Shift. Suppongo che i programmi basati su curses possano ricevere eventi del mouse dopo aver inviato una certa sequenza di escape al terminale.

Se si è su Windows e si desidera incollare il contenuto degli Appunti di sistema usando p digitare questo comando.

 :set clipboard = unnamed 

Questo ha risolto il mio problema.

Ci sono due semplici modi per farlo. Crea il tuo file in modalità inserimento e 1) premi il pulsante centrale (la rotella di scorrimento) nel tuo mouse, oppure 2) Ctrl + Maiusc + V

Per alcune tastiere internazionali, potrebbe essere necessario premere " + Spazio per ottenere un " .

Quindi in tal caso dovresti premere " Spazio + y " o " Spazio * y per copiare”.

E " Spazio + p o " Spazio * p per incollare.

Se si utilizza vim in MAC OSX, sfortunatamente viene fornito con versioni precedenti e non è conforms alle opzioni degli Appunti. Fortunatamente, l’homebrew può facilmente risolvere questo problema.

installa vim:

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

installa gui verion di vim:

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

riavviare il terminale per avere effetto.

aggiungi la seguente riga a ~/.vimrc
set clipboard=unnamed

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

Le altre soluzioni sono buone se vuoi cambiare il tuo vimrc, ecc … Comunque volevo un modo semplice per copiare da vim alla mia tastiera di sistema. Questo è quello che mi è venuto in mente.

  • Seleziona il testo che vuoi copiare con la modalità visiva v
  • Premere : (si espanderà automaticamente per mostrare :'<,'> )
  • Digitare y * o y + (a seconda del sistema) per trascinare il testo selezionato negli Appunti di sistema

La soluzione più semplice a questo, che funziona anche tra diverse macchine Linux tramite ssh è:

  1. Controlla se vim supporta gli appunti X-11: vim --version | grep clipboard vim --version | grep clipboard . Se riporta back -clipboard e -xterm_clipboard dovresti installare vim-gtk o vim-gnome (gvim su arch linux)

  2. Aggiungi le seguenti righe al tuo .vimrc :

 set clipboard=unnamedplus set paste 
  1. Se si effettua il login su una macchina diversa tramite ssh, utilizzare l’opzione -Y: ssh -Y machine

Ora copiare e incollare dovrebbe funzionare esattamente come previsto su un singolo e su macchine diverse usando solo y per yank e p per paste. NB modificare .vimrc su tutte le macchine in cui si desidera utilizzare questa funzione.

Se stai usando un mouse, fallo prima

  :set paste 

Quindi right click mouse e il contenuto nel buffer verrà incollato