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?

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.


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.


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.


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


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.



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.


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.


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.




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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.