Come seleziono tutto il testo in Vi / Vim?


193

Utilizzo dello strumento VI per la modifica dei file di configurazione.

Come posso selezionare tutto il testo in un file (circa 1000 righe), copiarlo e incollarlo in Google Documenti?

Risposte:


159

Il modo più semplice e veloce è usare: : % y +quindi vai su Google Documenti (o ovunque) e incolla. Spiegazione:

  • % per fare riferimento al comando successivo per lavorare su tutte le linee
  • y  strappare quelle righe
  • +  per copiare negli appunti di sistema

Un altro modo è, g g " + y Gma probabilmente riconoscerai che quanto sopra è più veloce e più facile.


10
@Tuxmentat puoi per favore spiegare cosa fa ogni chiave:%y+
Jas

10
Questa risposta sarebbe migliore se spiegasse cosa fa ogni tasto per entrambe le sequenze.
Chiede comunque il

6
La mia ipotesi migliore: ':' significa che stiamo usando un comando "ex mode" (credo). Comunque, è un comando. '%' è uno speciale identificatore dell'intervallo della riga di comando che specifica l'intero file. 'y' strappa tutto e '+' specifica il registro degli appunti . : help <command> mi ha aiutato a capirlo.
Hawkeye Parker,

11
devo fare qualcosa di sbagliato. scriv :%y+, e ottengoE488: Trailing characters
Johny perché

25
Ottengo "E850: nome registro non valido". Il secondo metodo ha funzionato bene per la copia, ma non arriva agli appunti di sistema su Ubuntu 16.04 (per me, almeno --- Ho un .vimrc che potrebbe influenzare le cose).
EntangledLoops

95

Molte risposte date anche strappare la selezione, che non stavo cercando.

Sto usando ggVGper questo scopo (deve essere eseguito in modalità normale). Questo comando seleziona solo l'intero testo all'interno del documento.

Ho anche rimappato Ctrl+Aper questo scopo, dal momento che non ho davvero bisogno di incrementare un numero intero con il collegamento ( Ctrl+Amappa predefinita ).

Aggiungi questo nel tuo .vimrc:

map <C-a> <esc>ggVG<CR>

In <esc>primo luogo, assicurarsi che l'utente sia in modalità normale.


2
Esattamente quello che stavo cercando, ed è bello vedere che Ctrl + A non è occupato in vim per impostazione predefinita. Spero non ci siano effetti collaterali.
Nikos Alexandris,

2
Personalmente uso ggVG, ma gg0vG$potrebbe essere più appropriato poiché replica più da vicino l'operazione "normale" Ctrl + A.
Sheharyar,

39

È possibile utilizzare cat filee quindi selezionare l'output e copiare e incollare se è necessario incollarlo nel browser.

Per vi, ecco come è possibile selezionare tutto il testo e scriverlo in un nuovo file:

shift v  -- visual mode
shift g -- jump to eof
"*y -- yank select text
:e my_new_file -- create a new file
"*p -- paste into a new file

In teoria questo dovrebbe funzionare sia su Linux che su Windows - l'ho provato su un Mac ma non funziona.


1
Incollare nel browser Web cat fileè la strada da percorrere. Il shift vmetodo copia solo nel buffer interno di Vi.
Aleksandr Levchuk,

non se usi gli appunti di sistema che usano il * registro - ma questo funziona solo su X e ho sentito su Windows - quindi se hai bisogno di -X - per verificare se vim ha il supporto per questo in vim -: set appunti + = senza nome

Esiste un'alternativa per farlo senza creare un nuovo file. Se stiamo modificando dal vivo sul server, dobbiamo mantenere il codice di backup sul computer locale in modo da poter tornare indietro.
NJInamdar,

+1 per gatto e selezionare in stucco. Naturalmente, non funzionerà con file di grandi dimensioni e non è il metodo più intuitivo. Ma per copiare piccoli file di script che vanno al di fuori del viewport dello schermo è abbastanza buono.
Arnis Juraga,

16

USA ggVG. digitare "gg" per andare all'inizio del test, quindi digitare VG.


8

Sto usando Vim 7.4 in ambiente CentOS-7. Il che mi ha aiutato a selezionare tutto il testo è

:%y

Quindi solo pnel prossimo file dove voglio una copia completa.

O

Puoi usare il comando cat.

cat copyfile > pastefile

Questo repository git ha anche altri comandi utili.



3

Per un Mac, utilizzare pbcopy (copia in cartone):

cat file.txt | pbcopy

I contenuti di file.txt sono ora negli Appunti per incollarli in un'altra applicazione (ad es. Browser).

Puoi anche incollare il contenuto degli appunti in un file usando pbpaste:

pbpaste > file.txt

Sebbene ciò non coinvolga specificamente vi, esso raggiunge lo stesso obiettivo su un Mac.


1

Se stai usando un desktop linux, puoi caricarlo negli appunti usando xclip o xsel. Per qualcosa di quelle dimensioni potresti voler utilizzare la funzione di caricamento in Google Documenti.


1

Un altro modo sarebbe:

Premi il vtasto sulla tastiera e ruota VIM su VISUAL

Quindi seleziona tutto il testo scorrendo verso il basso

^+ INSERTper copiare

SHIFT+ INSERTper incollare il testo dove vuoi su Google Documenti.




0

Utilizzare il seguente comando

cat <your file name>

Fa eco al contenuto del file. Ora seleziona, scorri, copia, incolla.
Gioco finito

Ex.:

cat bobis.txt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.