Yank seluruh file

126

Saya sering menulis sesuatu di gVim, lalu harus menyalin-menempelkannya ke aplikasi lain.

Apakah ada cara mudah untuk menarik seluruh file? Saya biasanya melakukan hal seperti ini

ggVG"+y

(Ke atas, mode garis-visual, ke bawah, yank)

Tetapi apakah ada cara yang lebih baik yang saya lewatkan?

Chad Birch
sumber

Jawaban:

201

Saya menggunakan instruksi berikut: :%y+

Luc Hermitte
sumber
6
Apa yang dilakukan dengan +?
VoY
5
Ini adalah register yang terkait dengan clipboard. Yang sama yang digunakan OP dalam pertanyaannya. => :h :y,:h registers
Luc Hermitte
5
@VoY: Anda harus mengkompilasi Clipboard -property ke Vim untuk menjalankan "+ clipboard" ini. Ini berarti "semua yang menarik bagi external-clipboard-in-some-window-manager". Properti ini bukan de-facto tetapi dilengkapi dengan beberapa vim grafis yang tampaknya de-facto seperti gVim. Tolong, perbaiki saya jika saya salah (perhatikan saja hal ini ketika harus menggunakan yank di Windows gVim jadi saya tidak bisa sepenuhnya yakin tentu saja tetapi saya yakin ini adalah propertinya).
hhh
8
Jika + register tidak berfungsi untuk Anda di ubuntu 11.04+, coba instal gVim (apt-get install vim-gnome). Ini akan memberikan properti + clipboard ke versi terminal vim juga
adharris
3
Dulu saya melakukannya gg"+YGtetapi saya tidak pernah menyukainya karena saya kehilangan garis yang asli. Ini sempurna!
verboze
56

ggyG (pergi ke baris pertama, tarik ke baris terakhir)

Sunting: Ah, clipboard sistem. Tidak persis menggulung jari, tetapi:gg"+yG

Annika Backstrom
sumber
1
Terima kasih ini bekerja untuk saya, bukan:% y +. Tapi bagaimana cara menempelkannya di localhost dari jarak jauh? :)
valk
1
Jadi pada dasarnya perintah ini naik ke bagian atas dokumen, dan melakukan sesuatu, menarik ke bagian bawah dokumen? Apa yang "lakukan di sini?
geoyws
1
@ Geoyws "mengatakan Anda ingin bekerja dengan register. "+adalah register yang diikat ke clipboard sistem. "+yGmenarik semuanya sampai bagian bawah file ke dalam register ini. :help "+
Annika Backstrom
15

Solusi yang berfungsi dalam vi lama ada :r filenamedi file baru.

mouviciel
sumber
5
Meskipun ini bukan jawaban untuk pertanyaan itu, itu adalah jawaban untuk pertanyaan saya . Terima kasih.
2
Saya perlu menambahkan nol untuk menempelkannya di awal file::0r filename
Stefan van den Akker
12

Metode lain adalah ini:

ggyG

Pergi ke atas, dan tarik ke bawah.

Glen Solsberry
sumber
stackoverflow.com/a/829944/6723250 memiliki info yang sama dengan beberapa detail lainnya
Xerus
6

Saya menggunakan instruksi berikut: :%y.

Cheng
sumber
... tidak melalui jendela yang berbeda di pengelola jendela. + pada akhirnya menariknya ke papan klip eksternal (tampaknya apa yang coba dilakukan oleh op)
hhh
4
:0,$ y

Saya tidak tahu jalan mana yang lebih mudah.

Meninx - メ ネ ン ッ ク ス
sumber
3

Atau hanya di .vimrc:

nmap <silent> <F5> ggVG"+y

Jadi Anda bisa menggunakan satu tombol :)

dr Hannibal Lecter
sumber
3

Di OSX:

ggVG
!tee >(pbcopy)

Yang menurut saya lebih bagus daripada:

ggVG
:w !pbcopy

Karena itu tidak muncul prompt: " Press ENTER or type command to continue"

James Scriven
sumber
1

:%ytanpa +bekerja di seluruh sistem jika Anda menggunakan neo-vim (nvim).

Ini memungkinkan kita menghindari meregangkan jari kita ke +- secara aktual membuat jalan pintas ini lebih baik daripada ggyG.

LearnOPhile
sumber
0

Bergantung pada seberapa sering Anda melakukannya, cukup petakan kunci untuk ini dan secara opsional tambahkan ke vimrc

:nnoremap <F5> :%y

atau

:nnoremap <leader><whatever> :%y

atau kunci apa pun yang Anda tahu aman dan tercepat — lalu tambahkan ke sumber pemetaan atau apa pun. Keuntungan dari over ini ggyGadalah bahwa ia tidak menggerakkan kursor (lebih cepat) dan untuk mempertahankan posisi kursor Anda, Anda harus menambahkan<Ctrl-o><Ctrl-o>

Orang sering lupa bahwa perintah didasarkan pada sesi kecuali dalam vimrc. Saya sering tahu kapan saya akan melakukan banyak hal tetapi tidak membutuhkannya sebagai standar dan adil:[mode]remap <whatever> <whatever>

Saya dapat menutup dan membuka kembali vim jika perlu.

Jika <Ctrl-A><Ctrl-C>berhasil untuk Anda, maka Anda menggunakan mswin.vim di sumber Anda dan kehilangan kekuatan operasi kenaikan <Ctrl-a>dan penurunan <Ctrl-x>(antara lain). Saya mulai di windows dan berhenti menggunakan mswin.vim beberapa waktu lalu. Saya pribadi merasa yang terbaik adalah grok Vim dengan cara yang benar dan kemudian tambahkan kruk yang benar-benar Anda butuhkan: P

Alex
sumber
2
Selamat datang di Stackoverflow. Editor mendukung pemformatan , jadi harap pertimbangkan untuk membungkus contoh kode Anda (seperti perintah yang Anda gunakan) di backticks ( `) atau blok kode.
Jan Kundrát
-1

Itu kotor tetapi Anda tidak harus menggunakan tombol shift sama sekali dan hanya 3 tombol berbeda yang mungkin lebih cepat:

gg1111yy

(Dengan asumsi file lebih pendek dari 1111 baris)

Richard
sumber
-2

Pada Windows saya sering hanya melakukan CTRL-A, CTRL-C untuk menyalin semua ke clipboard windows ... Tidak bisa lebih mudah dari itu!

Saya menggunakan standar gvim 7.1 dari situs web ...

(BTW: juga berfungsi di mac saya dengan MacVim dan mac-key yang lucu itu + A, mac-key + C)

Daren Thomas
sumber
1
windows gvim menambahkan beberapa pintasan tambahan yang tidak ada di versi lain, untuk mencoba dan membuatnya lebih cocok dengan pengguna windows. ctrl + a, ctrl + c, adalah dua contohnya.
davr
9
Mm, ctrl-c memiliki arti yang sangat berbeda dengan pengguna terminal.
Xiong Chiamiov
yakin, tapi ketika di jendela, melakukan seperti windows :) Hanya mengatakan, gvim dan kehormatan MacVim platform pintas clipboard standar - tidak ada yang salah dengan menggunakan mereka baik ....
Daren Thomas
4
Mungkin juga tidak menggunakan vim sama sekali, jika Anda ingin menggunakan pintasan seperti ini.
VoY
1
CTRL-A menambah angka di bawah kursor.
Alexcp