risposta-alla-domanda-sullo-sviluppo-web-bd.com

Copia tutte le linee negli appunti

C'è un modo per copiare tutte le linee dal file aperto negli appunti nell'editor VI. Provai yG ma non sta usando appunti per memorizzare quelle linee.

Quindi è possibile?

487
Xinus

Dovresti strattonare il testo su * o +registers :

gg"*yG

Spiegazione:

  • gg per portare il cursore sul primo carattere del file
  • "*y per avviare un comando di yank al registro * dalla prima riga, fino a ...
  • G per andare alla fine del file
564
CMS

Uso:

:%y+

per tirare tutte le linee.

Spiegazione:

  • % per riferirsi al prossimo comando per lavorare su tutte le linee
  • y per strattonare quelle linee
  • + per copiare negli appunti del sistema

NB: In Windows, + e * sono equivalenti vedi questa risposta .

612
Rook

su Mac

  • copia la parte selezionata: seleziona visivamente il testo (digita v o V nella modalità normale ) e digita :w !pbcopy

  • copia l'intero file :%w !pbcopy

  • passato dagli appunti :r !pbpaste

68
Brian

Gli appunti sono buffer +. Per copiare negli appunti, fare "+y e [movimento].

Così, gg"+yG copierà l'intero file.

Allo stesso modo, per incollare dagli appunti, "+p

48
Tordek

Un altro modo semplice per copiare l'intero file se si riscontrano problemi nell'utilizzo di VI, è semplicemente digitando "nomefile cat". Fa echeggiare il file sullo schermo e quindi puoi semplicemente scorrere su e giù e copiare/incollare.

33
Zack

Questo è quello che faccio per strattonare l'intero file:

ggVGy
25
EmilianoGNFNR

(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 di default. per installare, utilizzare:

Sudo apt-get install xclip
10
Stew

Su Ubuntu 12

potresti provare a installare il pacchetto vim-gnome:

Sudo apt-get install vim-gnome

Ho provato, perché vim --version mi ha detto che avrebbe il flag xterm_clipboard disabilitato (indicato da - ), che è necessario per utilizzare la funzionalità Appunti.

-> l'installazione del pacchetto vim-gnome su Ubuntu 12 ha anche installato una versione basata su console di vim, che ha questa opzione abilitata (indicata da un + prima del flag xterm_clipboard)

Su Arch Linux

puoi installare vim-clipboard per lo stesso motivo.

9
Arch Linux Tux

Ho provato alcuni dei comandi che le persone hanno menzionato sopra. Nessuno ha funzionato . Poi ho ottenuto il più semplice di tutti. 

Passaggio 1: vi <filename>
Passaggio 2: fare clic con il pulsante destro del mouse sulla barra del titolo della finestra PuTTY
Passo 3: Seleziona "Cancella scrollback" (per evitare di copiare il resto della sessione SSH)
Passo 4: Fare nuovamente clic con il tasto destro e selezionare "Copia tutto negli appunti". 

5

Se si utilizza Vim in modalità visiva, si applicano anche i tasti di copia e incolla standard, almeno con Windows.

  • CTRLA significa "Contrassegna l'intero file.
  • CTRLC significa "Copia la selezione.
  • ESC significa "Deseleziona, quindi la prossima pressione di un tasto non sostituisce l'intero file :-)

Sotto il terminale di Ubuntu (Gnome) almeno, la copia standard funziona anche (CTRLSHIFTC, anche se non sembra essere una scorciatoia da tastiera standard per select all (diverso da ALTE seguito da A).

5
paxdiablo

puoi premere gg per posizionare il cursore all'inizio del file, quindi premere yG per copiare tutto il contenuto dall'inizio alla fine (G localizzato) al buffer. Buona fortuna!

5
gameboy90

Puoi usare il comando "cat" per aprire il file e usare il mouse per copiare 

5
Luan Pham

gVim:

: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.
3
kev

:%y a Esegue il backup di tutto il contenuto nel buffer di vim, Premendo p in modalità comando, il contenuto stracciato viene incollato dopo la riga in cui si trova attualmente il cursore.

3
Ma'moon

Bene, tutti questi approcci sono interessanti, tuttavia come programmatore pigro io uso strattonare tutta la linea usando la combinazione di numero + y

per esempio hai un file di codice sorgente con un totale di 78 linee, puoi fare come di seguito:

  1. gg per ottenere il cursore sulla prima riga 
  2. inserisci 78 + y -> prende 78 linee sotto il cursore e la linea corrente 
2
arfo

Se le tue dita sono predefinite su CTRL-A CTRL-C, prova i mapping 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 a <Leader><C-a> e <Leader><C-c>.

2
go2null

Non c'era un concetto di "blocco appunti" in vi di Bill Joy, quindi non penso che ci sia un modo integrato per farlo.

la funzione di copia automatica di qualsiasi cosa, evidenziata nella clipboard di gVim, è più semplice o utilizza un programma esterno tramite:!

Io uso per Cygwin's vim 

:%!putclip
u

Forse Ubuntu ha un'app CLI come il putclip ??

2
rshdev

Copiare l'intero file all'interno di Vim o delle sue schede 

y G 

quindi passare a una scheda e incollare per 

p

e per tagliare l'intero file

d G
2
Abdul Basit

Ecco un comando mappa per selezionare tutto negli Appunti utilizzando CTRL+a:

"
" select all with control-a
"
nnoremap <C-a> ggmqvG"+y'q

Aggiungilo al tuo . Vimrc e sei a posto ...

1
jahroy

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 bisogno anche di un gestore di appunti come xclip. per ulteriori informazioni scrivi neovim :h checkhealth

È anche importante ricordare che non sempre un semplice y copierà negli appunti, in modo da rendere ogni feed di copia + che è "Clipboard Register" prova a impostare: :set clipboard=unnamed,unnamedplus. Per maggiori informazioni vedere: :h unnamed.

Qui ulteriori informazioni su vim wikia.

0
SergioAraujo

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 Red Hat (server remoto) - Windows 10 (macchina locale), se non è possibile selezionare l'intera cosa con un mouse, si è bloccati perché le copie abituali non funzionano tra gli Appunti macchina remota e locale.

Quindi, per copiare sul Linux remoto e incollare sul Windows locale, specificare il buffer primario con il * e fai un bel doppio strattone

Uso gg"*yy.

0
Lefty G Balogh

Ho aggiunto la seguente riga al mio .vimrc

nnoremap <F5> :%y+<CR>

Questo mi consente di copiare tutto il testo in Vim negli appunti premendo F5 (in modalità comando).

0
aks