Esiste un modo per copiare tutte le righe da file aperto a appunti nell'editor VI. Ho provato yGma non sta usando gli Appunti per memorizzare quelle righe.
Quindi è possibile?
Esiste un modo per copiare tutte le righe da file aperto a appunti nell'editor VI. Ho provato yGma non sta usando gli Appunti per memorizzare quelle righe.
Quindi è possibile?
Risposte:
Dovresti spostare il testo nei registri*
o :+
gg"*yG
Spiegazione:
gg
per portare il cursore sul primo carattere del file"*y
per avviare un comando yank nel registro *
dalla prima riga, fino a ...G
per andare alla fine del file"
.
:version
vim e cerca la +xterm_clipboard
bandiera. Se è preceduto da un segno meno, non avrai questa funzionalità. In questo caso, potresti voler compilare vim da solo o eseguire gvim che di solito ha questa funzione abilitata.
Uso:
:%y+
strappare tutte le linee.
Spiegazione:
%
per fare riferimento al comando successivo per lavorare su tutte le lineey
strappare quelle righe+
per copiare negli appunti di sistemaNB : in Windows, +
e *
sono equivalenti vedi questa risposta .
:help
per assicurarti di essere effettivamente in vim.
set clipboard=unnamed
, ma poi ha funzionato alla grande!
E850: Invalid register name
:(
su Mac
copia parte selezionata: seleziona visivamente il testo (digita v
o V
in modalità normale) e digita:w !pbcopy
copia l'intero file :%w !pbcopy
passato dagli appunti :r !pbpaste
pbcopy
è un'utilità per Mac. Su Linux, xsel
invece , potrebbe funzionare o clip
su Windows.
:%w !pbcopy
funziona ancora se il file è più lungo dell'altezza del terminale.
Gli appunti sono buffer +. Per copiare negli appunti, fare "+ye [movimento].
Quindi, gg"+yGcopierà l'intero file.
Allo stesso modo, per incollare dagli appunti, "+p
Un altro modo semplice per copiare l'intero file in caso di problemi con VI, è semplicemente digitando "cat nomefile". Riecheggerà il file sullo schermo e quindi potrai semplicemente scorrere su e giù e copiare / incollare.
:!cat %
. E per copiare il contenuto del file programmaticamente negli Appunti su Mac OS::!cat % | pbcopy
Questo è quello che faccio per strappare l'intero file:
ggVGy
clipboard
set in cui copiare il testo strappato +
.
Puoi usare il comando "cat" per aprire il file e usare il mouse per copiarlo
reset
il terminale in anticipo, quindi selezionare tutto e copiare. Questo funziona attraverso la ssh
sessione.
(in risposta a @rshdev, e per evitare di dover ricompilare vim con + xterm_clipboard per @nelstrom nei commenti su OP)
c'è un programma chiamato xclip che funziona come putclip su Ubuntu 11:
:%!xclip -sel clip
u
non è installato per impostazione predefinita. per installare, utilizzare:
sudo apt-get install xclip
Su Ubuntu 12
potresti provare a installare il vim-gnome
pacchetto:
sudo apt-get install vim-gnome
L'ho provato, perché vim --version
mi ha detto che avrebbe disabilitato il flag xterm_clipboard (indicato da - ), necessario per utilizzare la funzionalità degli Appunti.
-> l'installazione del pacchetto vim-gnome su Ubuntu 12 ha anche installato una versione di vim basata su console, con questa opzione abilitata (indicata da un + prima del flag xterm_clipboard)
Su Arch Linux
è possibile installare vim-clipboard
per lo stesso motivo.
Se esegui neovim, dovresti installare xclip
(come spiegato da help clipboard-tool
)
Se stai usando Vim in modalità visiva, si applicano anche i tasti taglia e incolla standard, almeno con Windows.
Sotto almeno il terminale Ubuntu (Gnome), funziona anche la copia standard ( CTRLSHIFTCanche se non sembra esserci una scorciatoia da tastiera standard select all
(diversa da quella ALTEseguita da A).
Ho provato alcuni dei comandi che la gente ha menzionato sopra. Nessuno ha funzionato. Poi mi sono procurato il più semplice di tutti.
Passaggio 1: vi <filename>
Passaggio 2: fare clic con il tasto destro sulla barra del titolo della finestra di Putty
Passaggio 3: selezionare "Cancella scorrimento" (per evitare di copiare il resto della sessione SSH)
Passaggio 4: fare nuovamente clic con il tasto destro del mouse e selezionare "Copia tutto negli Appunti".
Window > Settings > lines of scrollback
a 40000 (disponibile anche facendo clic con il tasto destro sulla barra del titolo). Aiuta anche a usare al cat
posto di vi poiché scorre tutto il testo.
:set go=a
ggVG
Vedi :help go-a
:
'a' Autoselect: If present, then whenever VISUAL mode is started,
or the Visual area extended, Vim tries to become the owner of
the windowing system's global selection. This means that the
Visually highlighted text is available for pasting into other
applications as well as into Vim itself. When the Visual mode
ends, possibly due to an operation on the text, or when an
application wants to paste the selection, the highlighted text
is automatically yanked into the "* selection register.
Thus the selection is still available for pasting into other
applications after the VISUAL mode has ended.
If not present, then Vim won't become the owner of the
windowing system's global selection unless explicitly told to
by a yank or delete operation for the "* register.
The same applies to the modeless selection.
Bene, tutti questi approcci sono interessanti, tuttavia come programmatore pigro uso yank all line usando la combinazione di numero + y
ad esempio hai un file di codice sorgente con un totale di 78 righe, puoi fare come di seguito:
gg
per ottenere il cursore sulla prima riga y
-> strappa 78 righe sotto il cursore e la riga corrente Non c'era un concetto di "appunti" nel vi di Bill Joy, quindi non credo che ci sia un modo integrato per farlo.
La funzione automatica copia-qualsiasi-evidenziata-negli-appunti di gVim è più semplice o usa un programma esterno tramite:!
Per Cygwin's Vim che uso
:%!putclip
u
Forse Ubuntu ha un'app CLI come putclip ??
Se le tue dita sono predefinite CTRL-A CTRL-C
, prova le mappature da $VIMRUNTIME/mswin.vim
.
" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y
" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG
Li ho mappati su <Leader><C-a>
e <Leader><C-c>
.
Copia l'intero file all'interno di vim o delle sue schede
y G
quindi passare a una scheda e incollare
p
e per tagliare l'intero file utilizzare
d G
So che dieci anni su questo dovrebbero essere risolti, ma le prime due risposte non hanno funzionato per me, quindi ho continuato a scavare. Su un Redhat (server remoto) - Windows 10 (macchina locale), se non riesci a selezionare tutto con un mouse, rimani bloccato perché le normali copie non funzionano tra il telecomando e gli appunti della macchina locale.
Quindi, per copiare su Linux remoto e incollare su Windows locale, specificare il buffer primario con * e fare un bel doppio tiro
Usa gg" * yy.
Ho creato una funzione per eseguire questa azione, posizionarla sul tuo ~/.vimrc
.
fun! CopyBufferToClipboard()
%y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()
OBS: Se stai usando Neovim hai anche bisogno di un gestore di appunti come xclip. per ulteriori informazioni digitare in neovim:h checkhealth
E 'anche importante ricordare che non sempre una semplice y
copierà negli appunti, in modo da rendere ogni avanzamento copia +
wich è "Appunti Register" cerca di impostare: :set clipboard=unnamed,unnamedplus
. Per ulteriori informazioni, consultare::h unnamed
.
Qui maggiori informazioni su vim wikia.
Puoi usare una scorciatoia, come questa:
noremap <F6> :%y+<CR>
Significa che quando premi F6 in modalità Normald, copierà l'intero file e lo aggiungerà negli Appunti. Oppure puoi semplicemente digitare in modalità normale :%y+
e poi premere Enter
.
Fai clic con il pulsante sinistro del mouse, trascina attraverso la sezione che desideri copiare e rilasciare. Il codice viene automaticamente copiato negli appunti.
vi
modo).
Non sono riuscito a copiare i file usando le risposte sopra ma ho del mastice e ho trovato una soluzione alternativa su Quora.
Nota: copia tutti i caratteri stampati di quella sessione nel file di registro, quindi alla fine diventerà grande. In tal caso, elimina il file di registro e inserisci il file di destinazione in modo da ottenere il contenuto di quel particolare file copiato sul tuo computer.