Esiste un modo per copiare un blocco di testo negli appunti di sistema, in modo da poterlo incollare in un altro programma?
Commenti
Risposta
Per X11 sistemi basati su (ad esempio Linux e molti altri UNIX -like) ci sono due appunti indipendenti luno dallaltro:
- PRIMARIO – Questo è copy-on-select e può essere incollato con il pulsante centrale del mouse.
- APPUNTI – Questo viene copiato (di solito) con
^C
e incollato con^V
(è come MS Windows).
OS X e Windows hanno solo un appunti.
Per X11 ci sono anche numerosi strumenti che sincronizzano questi appunti per te; quindi se sembrano essere gli stessi, potresti averne uno in esecuzione.
Vim ha due regis speciali ters corrispondenti a questi appunti:
-
*
usa PRIMARY; mnemonico: S tar è S elezione (per copy-on- s elezione) -
+
utilizza APPUNTI; mnemonico: CTRL PLUS C (per la combinazione di tasti comune)
Su Windows & OS X non cè differenza tra +
e *
, poiché questi sistemi hanno solo un singolo appunti, ed entrambi i registri si riferiscono alla stessa cosa (non importa quale usi).
Puoi usare questi registri come qualsiasi registro. Ad esempio, usando gli appunti PRIMARI *
con i comandi y
e p
:
-
"*yy
-
"*p
Potresti forse usarlo come combinazioni di tasti più convenienti:
noremap <Leader>y "*y noremap <Leader>p "*p noremap <Leader>Y "+y noremap <Leader>P "+p
Se desideri ” automaticamente ” interfaccia con il sistema “s appunti invece di fare sempre riferimento ad esso manualmente, puoi impostare la variabile clipboard
:
- Impostalo su
unnamed
per utilizzare*
(PRIMARIO, su selezione) - Impostalo su
unnamedplus
per utilizzare+
(APPUNTI,^C
)
Ora, usando solo yy
andrà negli appunti di sistema, invece del registro senza nome di Vim, e p
incollerà il sistema “s appunti.
Puoi anche assegnare a questi registri proprio come qualsiasi registro con let
:
-
:let @+=42
-
:let @*=42
Il clipboard
limpostazione ha alcune opzioni in più (come escludere filtri); ma queste sono le basi. Vedi :help "clipboard"
per la storia completa 😉
gVim
Se usi gVim, puoi ottenere un comportamento copy-on-select quando utilizzando :set guioptions+=a
.
Questa opzione è abilitata per impostazione predefinita sui sistemi X11 (copie su PRIMARY), ma non su MS Windows & OSX (poiché la selezione di qualsiasi testo sovrascriverebbe i tuoi appunti).
No +clipboard
?
Vim richiede +clipboard
flag della funzione affinché tutto ciò funzioni; puoi controllare se il tuo Vim ha questo utilizzando :echo has("clipboard")
da Vim (se loutput è 0
, “s no presente, se “s 1
, lo è) o controllando loutput di vim --version
per +clipboard
.
La maggior parte delle distribuzioni Linux viene fornita con un ” minimo ” build Vim di default, che non ha +clipboard
, ma di solito puoi installarlo:
- Debian & Ubuntu: Installa
vim-gtk3
. - Fedora: installa
vim-X11
ed eseguivimx
invece divim
( ulteriori informazioni ). - Arch Linux: installa
gvim
(questo abiliterà+clipboard
anche pervim
).
Potresti anche utilizza xclip
, xcopy
o xsel
per copiare il testo negli appunti; vedi quanto segue domande per le soluzioni:
- Definisci comandi personalizzati per i registri * e +
- Come posso copiare su una sessione ssh senza + clip board?
SSH
Puoi anche usare gli appunti su macchine remote se abiliti linoltro X11 su SSH. Ciò è particolarmente utile con il suggerimento di cui sopra poiché puoi utilizzare xclip
per accedere agli appunti del tuo desktop. Il Vim sulla macchina su cui stai “re sshing” avrà ancora bisogno del +clipboard
funzione.
Ciò richiede limpostazione ForwardX11Trusted
e dovrebbe può essere eseguito solo con server affidabili , poiché ciò fornisce al server il controllo quasi completo sulla sessione X11:
$ ssh -XY myhost
Per rendere persistenti queste impostazioni (quindi non è necessario aggiungere -XY
ogni volta), potresti fare qualcosa di simile nel tuo ~/.ssh/config
:
# Do **NOT** set this globally; it gives the server complete control over # your X11 session. Host myhost ForwardX11 yes ForwardX11Trusted yes
Neovim
Neovim ha rinnovato il supporto degli appunti. Linterfaccia integrata è stata rimossa e sostituita con un sistema che chiama unutilità esterna come xclip
, xsel
o pbcopy
/ pbpaste
.
Dovrebbe autom prendere aticamente queste utilità e usarle. Su OS X pbcopy
e pbpaste
dovrebbero essere disponibili per impostazione predefinita, su Linux probabilmente vorrai installare xclip
, poiché “è la più ampiamente disponibile (in realtà ci sono due versioni di xsel
con flag incompatibili . è davvero stupido).
Vedi anche :help clipboard
in Neovim.
Commenti
- ssh -Y implica -X quindi -X può essere omesso.
- Un effetto collaterale molto interessante dellapprendimento di questo (alcuni anni fa) per me è stata la consapevolezza che
"
può selezionare molti registri con nome."+
non è magico, è ‘ è sufficiente registrare+
. Quindi, ad esempio, se desideri copiare tre elementi contemporaneamente e incollarli uno per uno, puoi"1y
,"2y
e"3y
e l ater"1p
,"2p
e"3p
. Questo è davvero potente e inesistente in quasi tutti gli altri editor. Un altro utilizzo interessante è guardare le macro archiviate. Ad esempio, se registri conqq
, ma ti rendi conto di dover risolvere il problema, puoi: in una riga temporanea"qp
, correggere it e"qd
. - Solo una nota: OS X ha due appunti separati. Uno è accessibile usando Cmd-C e Cmd-V e laltro usando le scorciatoie da tastiera di emacs Ctrl-K e Ctrl-Y.
- @shahbaz – probabilmente è meglio usare i registri delle lettere per tale scopo, poiché quelli numerati vengono modificati ogni volta che viene eliminato del testo.
- Copia & incolla come descritto nella domanda è inteso per desktop. È vero che linstallazione del pacchetto
gvim
insieme avim
fornisce funzionalità per gli appunti. ma nei browser di file ti vengono quindi offerti due editor di testo per aprire i file! E questo sembra brutto. Questo è il motivo per cui è meglio installare solo i pacchettivim
evim-gui-common
. Successivamente si forniscono le funzionalità degli appunti senza la necessità di installaregvim
. Questo è su Linux Debian 10.
Risposta
Da http://vim.wikia.com/wiki/Accessing_the_system_clipboard
set clipboard=unnamedplus
Questo cambia il registro Vim predefinito in +
register, che è collegato agli appunti di sistema.Da :h clipboard-unnamedplus
:
clipboard-unnamedplus unnamedplus A variant of the "unnamed" flag which uses the clipboard register "+" (quoteplus) instead of register "*" for all yank, delete, change and put operations which would normally go to the unnamed register. When "unnamed" is also included to the option, yank operations (but not delete, change or put) will additionally copy the text into register "*". Only available with the +X11 feature. Availability can be checked with: if has("unnamedplus")
Commenti
- Perché questo non funziona per me quando yank & incolla tra istanze di vim (ciascuna in un terminale di terminazione separato)?
- Se sei su Linux e Vim è stato compilato con la funzione + X11 e hai impostato clipboard = unnamedplus, dovresti essere in grado di strappare una riga in unistanza di vim e incollarla in unaltra istanza di vim. Dovresti anche essere in grado di incollarlo in qualsiasi altra applicazione con CTRL + V o MAIUSC + INSERT. Puoi utilizzare
:version
in Vim per vedere se + X11 appare nellelenco delle funzionalità incluse. Puoi anche verificare se la funzione ‘ unnamedplus ‘ è disponibile con:if has('unnamedplus')⏎ echo 'yes'⏎ endif
se lo sei non su Linux, dovresti usare senza nome invece di senza nomeplus.
Risposta
Le altre risposte spiegano come copiare testo dal buffer negli appunti di sistema. Unaltra operazione comune è copiare il testo da un altro registro negli appunti. Ad esempio, se hai già inserito del testo in "
(il registro predefinito), potresti voler caricare quel registro negli appunti.
Puoi fallo con :let
:
-
let @+=@"
— copia il registro predefinito negli appunti -
let @*=@"
— copia il registro predefinito nella selezione primaria di X11 (“mouse appunti “) -
let @+=@a
— copia dal registroa
a gli appunti - ecc.
Nota che questo funziona per i registri in generale: let @a=@b
copia il registro b
per registrare a
.
Rispondi
Attivo build che lo supportano, il registro denominato *
è gli appunti di sistema. Per copiare il testo da Vim negli appunti di sistema, puoi selezionare il testo utilizzando la modalità visuale, quindi premere "* y per copiarlo negli appunti di sistema.
Al contrario, usa "* p per incollare il testo dagli appunti di sistema in Vim.
Risposta
Se non riesci a “capire come far funzionare +clipboard
, cosa che non ho potuto” t “per qualche motivo, puoi fare questo.
Supponendo che tu voglia copiare solo una sezione del file, faccio shift
+ v
per andare in modalità visuale ed evidenzia solo le linee che voglio copiare. Poi lo faccio.
# Linux Wayland :"<,">w !wl-copy # Linux Xorg :"<,">w !xclip -selection clipboard
Spiegazione
-
"<,">
– significa che ha utilizzato la modalità visiva per selezionare un intervallo (non lo si digita) -
w !{cmd}
– scrivi lintervallo nello stdin dicmd
, ulteriori informazioni su:help w_c
-
wl-copy
exclip
sono programmi a cui puoi reindirizzare il testo e loro lo aggiungeranno agli appunti di sistema
Inoltre, una volta che questoènella tua cronologia, non devi digitare tutto Basta selezionare con la modalità visuale, digitare w
quindi premere verso lalto e il comando dovrebbe completarsi automaticamente. Inoltre, non è necessario utilizzare la modalità visuale. Puoi impostare qualsiasi intervallo tu voglia.
Commenti
- Upvoting questo (rispetto allaltra risposta simile) perché questa fornisce una spiegazione. A proposito, una nota per me o per altri lettori: quando usi
xclip
, NON devi aggiungere quel parametro-selection clipboard
, che è troppo moooolto per scrivere. Limpostazione predefinita:'<,'>w !xclip
copia il contenuto nella ” primaria “, ad esempio copy-on- seleziona gli appunti, che possono essere incollati con il pulsante centrale del mouse.
Risposta
Ti consiglio di usare Gvim, e aggiungilo al tuo .vimrc
:
source $VIMRUNTIME/mswin.vim behave mswin
Ciò abilita il supporto per Ctrl C , Ctrl X , Ctrl V come il blocco note in Windows.
Tieni presente che in questo modo verranno aggiunte anche altre scorciatoie comuni di Windows, come Ctrl S per :w
, Ctrl A per seleziona tutto, ecc.
Risposta
Stavo lottando con gli appunti di sistema e vim
allinterno di tmux
.
È stato risolto utilizzando xsel
o xclip
, come in questo esempio:
1.) visu seleziona un blocco di testo in modalità normale: V<motionkey>
2.a) con xsel
esegui ex: :"<,">w !xsel -b
2.b) con xclip
esegui ex: :"<,">w !xclip -selection clipboard
3.) incolla in un altro programma
… e ora nmap come preferito.
Queste opzioni (-b o -selection clipboard) in pratica significano che il programma (xsel o xclip) viene inviato in background e aspetta che un altro programma incolla il contenuto, in modo che possa “interferire”.
(su manjaro con i3, xfce4-terminal, tmux)
Answer
Questo è il comportamento Volevo quando si trattava degli appunti di sistema:
- Fare lo strappo di una riga con i lavori di ritorno a capo
- Fare lo strappo di una linea senza il ritorno a capo funziona
- Fare lo strappo a tutto ciò che è visivamente lavori selezionati
- Taglia lavori
- Tagliare una linea con lavori di ritorno a capo
- Tagliare una linea senza lavori di ritorno a capo
Per lavori Voglio dire: sono ancora in grado di usare p
per incollare mentre sono in vim e posso usare anche gli appunti di sistema. Fondamentalmente voglio che copia e incolla funzioni come previsto e non lho fatto ” Non voglio ingombrare i miei appunti di sistema più del necessario.
La mia tecnica era quella di mappare i comuni comandi di strappo, taglio ed eliminazione per utilizzare gli appunti di sistema aggiungendo queste righe al mio ~/.vimrc
:
" use system clipboard " https://anuragpeshne.github.io/essays/vim/7.html noremap y "*y noremap yy "*yy noremap Y "*y$ noremap x "*x noremap dd "*dd noremap D "*D
Le informazioni chiave da https://anuragpeshne.github.io/essays/vim/7.html il post del blog è:
La mappatura ricorsiva è dannosa, usa sempre la mappatura non ricorsiva. (noremap)
Commenti
- Cosa significa
"
fare? La prima risposta ha già spiegato a cosa serve*
(facendo riferimento agli appunti principali), ma ‘ non vedo alcuna spiegazione per a cosa serve"
e perché fa funzionare il comando. - ‘ non è immediatamente ovvio perché tu ‘ è probabilmente abituato alla citazione usata per aggirare le parole, come
"foo"
; tuttavia, per vim"*
è in realtà il nome del ” register ” (un vim concept) che si collega agli appunti di sistema. Se apri vim e digiti:registers
puoi vedere i nomi di altri registri come:""
,"0
,"1
e così via. Ho trovato questo articolo utile per conoscere i registri: brianstorti.com/vim-registers
Risposta
Se il tuo vim non supporta +clipboard
puoi utilizzare fakeclip plugin per Linux, Mac, Windows, tmux, screen, …
Answer
Ogni altra risposta ha coperto tutte le cose importanti sui registri. Vorrei aggiungere unaltra cosa che uso.
Cè un modo in Vim per copiare direttamente il selezionato visivamente testo negli appunti. Mettilo semplicemente nel tuo file vimrc :
set guioptions+=a
E, con questo ogni volta che selezioni visivamente del testo, verrà copiato nel tuo appunti. Per ulteriori informazioni su questo, :help guioptions
BTW, questo è solo per gVim.
Commenti
-
guioptions+=a
è menzionato anche nella risposta di Carpetsmoker ‘. - @muru Sì, scusa . ‘ non lavevo mai visto prima. Lho appena visto.
Answer
Puoi anche utilizzare un comando globale per inserire un pattern specifico sul appunti. Può essere utile in situazioni in cui si hanno informazioni sparse in un file e la copiatura manuale è soggetta a errori e stancante.
Per prima cosa pulire il registro che riceverà le informazioni
:let @a=""
Quindi copia tutte le righe che contengono il modello
:g/pattern/yank A
Infine trasferendo (copiando) le informazioni negli appunti di sistema
:let @+=@a
se provi a copiare ogni riga contenente un “modello” direttamente negli appunti non funzionerà perché gli appunti non hanno la capacità di aggiungere nuovi contenuto, quindi stiamo usando qui un normale registro vim per memorizzare tutte le righe contenenti il pattern in una volta e poi metterlo negli appunti.
OBS: è necessario pulire il registro prima di usarlo, e il luso della versione MAIUSCOLA del registro ci permette di aggiungere contenuto, altrimenti non funzionerà.
Risposta
MacVim Cmd + x/c/v
per taglia / copia / incolla
Se utilizzi MacVim, i soliti Cmd+x/c/v
sono definiti in $ VIMRUNTIME / macmap.vim che viene fornito per impostazione predefinita e quindi sono disponibili senza configurazione:
vnoremap <special> <D-x> "+x vnoremap <special> <D-c> "+y cnoremap <special> <D-c> <C-Y> nnoremap <special> <D-v> "+gP cnoremap <special> <D-v> <C-R>+ execute "vnoremap <script> <special> <D-v>" paste#paste_cmd["v"] execute "inoremap <script> <special> <D-v>" paste#paste_cmd["i"]
Tuttavia, il loro utilizzo può portare a utenti vim che non conoscono il vim way e si perdono su un computer / ambiente esterno.
cpip
,cpi{
.sed
:).sed -n 5p file
; solo 5a riga.sed -n -e 5p -e 8p file
; solo 5a e 6a linea.sed -n 5,8p file
; linee tra il 5 ° e l8 °. Stamperà le righe nella console. Puoi copiare facilmente selezionando il testo.