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
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 …
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ò.
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.
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
Lasciando la modalità Incolla
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
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
per la modalità di inserimento"+p 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.
v
:
(si espanderà automaticamente per mostrare :'<,'>
) 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
è:
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)
Aggiungi le seguenti righe al tuo .vimrc
:
set clipboard=unnamedplus set paste
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