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?

Jawaban:


201

Saya menggunakan instruksi berikut: :%y+


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


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.


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



6

Saya menggunakan instruksi berikut: :%y.


... tidak melalui jendela yang berbeda di pengelola jendela. + pada akhirnya menariknya ke papan klip eksternal (tampaknya apa yang coba dilakukan oleh op)
hhh



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"


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.


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


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)


-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)


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
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.