Bagaimana cara memilih semua teks di Vi / Vim?

193

Menggunakan alat VI untuk mengedit file konfigurasi.

Bagaimana cara memilih semua teks dalam file (sekitar 1000 baris), menyalinnya, lalu menempelkannya ke Google Documents?

Tarun Gupta
sumber

Jawaban:

159

Cara termudah dan tercepat adalah dengan menggunakan: : % y +dan kemudian pergi ke Google Documents (atau di mana pun) dan rekatkan. Penjelasan:

  • % untuk merujuk perintah berikutnya untuk bekerja pada semua baris
  • y  untuk menarik garis itu
  • +  untuk menyalin ke clipboard sistem

Cara lain adalah g g " + y Gtetapi Anda mungkin akan mengakui bahwa hal di atas lebih cepat dan lebih mudah.

Tuxmentat
sumber
10
@Tuxmentat dapatkah Anda jelaskan apa yang masing-masing kunci lakukan:%y+
Jas
10
Jawaban ini akan lebih baik jika menjelaskan apa yang dilakukan masing-masing tombol untuk kedua urutan.
AsksAnyway
6
Tebakan terbaik saya: ':' berarti kita menggunakan perintah "mode ex" (saya pikir). Bagaimanapun, itu adalah perintah. '%' adalah penentu rentang baris perintah khusus yang menentukan seluruh file. 'y' menyentak semuanya, dan '+' menentukan register clipboard . : help <command> membantu saya mengetahui hal ini.
Hawkeye Parker
11
saya pasti melakukan sesuatu yang salah. saya mengetik :%y+, dan saya mengertiE488: Trailing characters
mengapa
25
Saya mendapatkan "E850: Nama daftar tidak valid". Metode kedua bekerja dengan baik untuk menyalin, tetapi tidak sampai ke clipboard sistem pada Ubuntu 16.04 (bagi saya, setidaknya --- saya punya .vimrc yang dapat mempengaruhi hal-hal).
EntangledLoops
95

Banyak balasan yang diberikan juga mencabut pilihan, yang tidak saya cari.

Saya menggunakan ggVGuntuk tujuan ini (harus dijalankan pada mode normal). Perintah ini hanya memilih seluruh teks di dalam dokumen.

Saya bahkan memetakan ulang Ctrl+Auntuk tujuan ini, karena saya tidak benar-benar perlu menambahkan bilangan bulat dengan pintasan ( Ctrl+Apeta default ).

Tambahkan saja ini ke .vimrc:

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

Pertama- <esc>tama, untuk memastikan pengguna dalam mode normal.

Arda
sumber
2
Persis apa yang saya cari, dan senang melihat bahwa Ctrl + A tidak ditempati dalam vim secara default. Semoga tidak ada efek samping.
Nikos Alexandris
2
Saya pribadi menggunakan ggVG, tetapi gg0vG$mungkin lebih tepat karena lebih dekat mereplikasi operasi Ctrl + A 'normal'.
Sheharyar
39

Anda dapat menggunakan cat filedan kemudian memilih output dan menyalin dan menempel jika Anda perlu menempelkannya ke browser Anda.

Untuk vi ini adalah bagaimana Anda dapat memilih semua teks dan menulisnya ke file baru:

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

Secara teori ini harus bekerja pada Linux dan Windows - Saya mencobanya pada Mac tetapi tidak berfungsi.

silviud
sumber
1
Menempelkan ke browser Web cat fileadalah caranya. The shift vMetode hanya salinan ke internal buffer Vi.
Aleksandr Levchuk
tidak jika Anda menggunakan clipboard sistem yang menggunakan * registry - tetapi ini hanya bekerja pada X dan saya mendengar di windows - jadi jika Anda ssh Anda memerlukan -X - untuk memeriksa apakah vim memiliki dukungan untuk ini ke vim -: set clipboard + = tidak disebutkan namanya
Apakah ada alternatif untuk melakukan ini tanpa membuat file baru. Jika kita mengedit langsung di server kita perlu menyimpan kode cadangan pada mesin lokal sehingga kita dapat kembali.
NJInamdar
+1 untuk kucing dan pilih dempul. Tentu saja, tidak akan berfungsi untuk file besar dan bukan metode yang paling ramah pengguna. Tetapi untuk menyalin file skrip kecil yang berada di luar tampilan layar cukup baik.
Arnis Juraga
16

GUNAKAN ggVG. ketik "gg" untuk pergi di atas tes Lalu ketik VG.

pengguna402791
sumber
8

Saya menggunakan Vim 7.4 di lingkungan CentOS-7. Yang berhasil saya untuk memilih semua teks

:%y

Kemudian tepat pdi file berikutnya di mana saya ingin salinan lengkap.

Atau

Anda dapat menggunakan perintah cat.

cat copyfile > pastefile

Repo git ini juga memiliki beberapa perintah berguna lainnya.

Sachith
sumber
7

gg"+yG

atau

gg"*yG

tergantung pada apakah + atau * adalah papan klip sistem. (Pada banyak unix, + adalah buffer pemilihan mouse untuk mengklik tengah mouse, dan * adalah clipboard sistem).

luar biasa
sumber
1
Saya pikir itu sebaliknya: "* adalah pilihan dan" + adalah clipboard. vimdoc.sourceforge.net/htmldoc/gui_x11.html#x11-selection
Mikel
Kamu benar. Saya tahu itu juga, tetapi mengetik hal yang salah. ☹
frabjous
3

Untuk Mac, gunakan pbcopy (copy karton):

cat file.txt | pbcopy

Isi file.txt sekarang ada di clipboard untuk menempel ke aplikasi lain (misalnya browser).

Anda juga dapat menempelkan konten clipboard ke file menggunakan pbpaste:

pbpaste > file.txt

Meskipun ini tidak melibatkan vi secara spesifik, ia memang mencapai tujuan yang sama pada Mac.

Chris
sumber
1

Jika Anda menggunakan desktop linux, Anda bisa memuatnya ke clipboard menggunakan xclip atau xsel. Untuk ukuran sebesar itu Anda mungkin hanya ingin menggunakan fitur unggah di google docs.

Cakemox
sumber
1

Cara lain adalah:

Anda menekan vtombol pada keyboard Anda dan mengubah VIM ke VISUAL

Kemudian pilih semua teks dengan menggulir ke bawah

^+ INSERTuntuk menyalin

SHIFT+ INSERTuntuk menempelkan teks di mana pun Anda inginkan di Google Documents.

pengguna237678
sumber
0

Gunakan perintah berikut.

cat <your file name>

Ini akan menggemakan konten file. Sekarang pilih, gulir, salin, tempel.
Permainan telah berakhir

Ex.:

cat bobis.txt
pengguna359247
sumber