Apakah ada cara untuk menyalin semua baris dari file terbuka ke clipboard di editor VI. Saya mencoba yGtetapi tidak menggunakan clipboard untuk menyimpan garis-garis itu.
Jadi mungkinkah?
vim
editor
keyboard-shortcuts
vi
Xinus
sumber
sumber
Jawaban:
Anda harus menarik teks ke
*
atau+
mendaftar :gg"*yG
Penjelasan:
gg
untuk mendapatkan kursor ke karakter pertama file"*y
untuk memulai perintah tarik menarik ke register*
dari baris pertama, sampai ...G
untuk pergi ke akhir filesumber
"
.:version
di vim, dan cari+xterm_clipboard
benderanya. Jika didahului dengan tanda minus, maka Anda tidak akan memiliki fungsi ini. Jika ini masalahnya, Anda mungkin ingin mengkompilasi sendiri vim, atau menjalankan gvim yang biasanya mengaktifkan fitur ini.Menggunakan:
:%y+
untuk menarik semua lini.
Penjelasan:
%
untuk merujuk perintah berikutnya untuk bekerja pada semua barisy
untuk menarik garis itu+
untuk menyalin ke clipboard sistemNB : Di Windows,
+
dan*
setara lihat jawaban ini .sumber
:help
untuk memastikan Anda benar-benar vim.set clipboard=unnamed
, tapi kemudian ini berhasil!E850: Invalid register name
:(di Mac
salin bagian yang dipilih: pilih teks secara visual (ketik
v
atauV
dalam mode normal) dan ketik:w !pbcopy
salin seluruh file
:%w !pbcopy
melewati dari clipboard
:r !pbpaste
sumber
pbcopy
adalah utilitas Mac. Di Linux,xsel
mungkin berfungsi sebagai gantinya, atauclip
di Windows.:%w !pbcopy
masih berfungsi jika file lebih panjang dari ketinggian terminal.Papan klip adalah penyangga +. Untuk menyalin ke clipboard, lakukan "+ydan [gerakan].
Jadi, gg"+yGakan menyalin seluruh file.
Demikian pula, untuk menempel dari clipboard, "+p
sumber
Cara mudah lain untuk menyalin seluruh file jika Anda mengalami masalah menggunakan VI, hanya dengan mengetikkan "nama file kucing". Ini akan menggema file ke layar dan kemudian Anda bisa gulir ke atas dan ke bawah dan salin / tempel.
sumber
:!cat %
. Dan untuk menyalin isi file secara terprogram ke clipboard pada Mac OS::!cat % | pbcopy
Inilah yang saya lakukan untuk menarik seluruh file:
sumber
clipboard
set untuk menyalin teks yang ditarik ke dalam+
.Anda dapat menggunakan perintah "cat" untuk membuka file dan menggunakan mouse untuk menyalin
sumber
reset
terminal sebelumnya, lalu pilih semua dan salin. Ini bekerja melaluissh
sesi.(sebagai balasan ke @rshdev, dan untuk menghindari keharusan mengkompilasi ulang vim dengan + xterm_clipboard per @nelstrom dalam komentar di OP)
ada program bernama xclip yang berfungsi seperti putclip di Ubuntu 11:
itu tidak diinstal secara default. untuk menginstal, gunakan:
sumber
Di Ubuntu 12
Anda mungkin mencoba menginstal
vim-gnome
paket:Saya mencobanya, karena
vim --version
memberi tahu saya bahwa flag xterm_clipboard akan dinonaktifkan (ditunjukkan oleh - ), yang diperlukan untuk menggunakan fungsionalitas clipboard.-> menginstal paket vim-gnome di Ubuntu 12 juga menginstal versi vim berbasis konsol, yang mengaktifkan opsi ini (ditunjukkan oleh tanda + sebelum tanda xterm_clipboard)
Di Arch Linux
Anda dapat menginstal
vim-clipboard
untuk alasan yang sama.Jika Anda menjalankan neovim maka Anda harus menginstal
xclip
(seperti yang dijelaskan olehhelp clipboard-tool
)sumber
Jika Anda menggunakan Vim dalam mode visual, tombol cut and paste standar juga berlaku, setidaknya dengan Windows.
Di bawah terminal Ubuntu (Gnome) setidaknya, salinan standar juga berfungsi ( CTRLSHIFTC, meskipun tampaknya tidak ada pintasan keyboard standar untuk
select all
(selain ALTEdiikuti oleh A).sumber
Anda dapat menekan gg untuk menemukan kursor Anda ke awal file, lalu tekan yG untuk menyalin semua konten dari awal hingga akhir (lokasi G) untuk buffer. Semoga beruntung!
sumber
Saya mencoba beberapa perintah yang disebutkan orang di atas. Tidak ada yang berhasil. Kemudian saya mendapatkan yang paling sederhana dari semuanya.
Langkah 1:
vi <filename>
Langkah 2: Klik kanan pada bilah judul jendela Putty
Langkah 3: Pilih "Hapus scrollback" (untuk menghindari menyalin sisa sesi SSH Anda)
Langkah 4: Klik kanan lagi dan pilih "Salin semua ke clipboard".
sumber
Window > Settings > lines of scrollback
ke 40000 (juga tersedia dengan mengklik kanan judul bar). Ini juga membantu untuk menggunakan,cat
bukan vi karena itu menggulung semua teks.:%y a
Menyentak semua konten ke dalam buffer vim, Menekanp
dalam mode perintah akan menempelkan konten yang disentak setelah baris tempat kursor Anda saat ini berada.sumber
gVim:
ggVG
Lihat
:help go-a
:sumber
Yah, semua pendekatan ini menarik, namun sebagai programmer malas saya menggunakan yank all line dengan menggunakan kombinasi angka +
y
misalnya Anda memiliki file kode sumber dengan total 78 baris, Anda dapat melakukannya seperti di bawah ini:
gg
untuk mendapatkan kursor di baris pertamay
-> lalu tarik 78 garis di bawah kursor dan garis saat inisumber
Tidak ada konsep "clipboard" di Bill Joy's vi jadi saya tidak berpikir ada cara built-in untuk melakukannya.
Fitur salin otomatis apa pun yang disorot-ke-clipboard gVim adalah yang termudah atau gunakan program eksternal melalui:!
Untuk vig Cygwin saya gunakan
Mungkin Ubuntu memiliki aplikasi CLI seperti putclip ??
sumber
Jika jari Anda default
CTRL-A CTRL-C
, coba pemetaan dari$VIMRUNTIME/mswin.vim
.Saya minta mereka memetakannya ke
<Leader><C-a>
dan<Leader><C-c>
.sumber
Salin seluruh file di dalam vim atau tab-nya
lalu pindah ke tab dan tempel dengan
dan untuk memotong seluruh penggunaan file
sumber
Saya telah menambahkan baris berikut ke .vimrc saya
Ini memungkinkan saya untuk menyalin semua teks dalam Vim ke clipboard dengan menekan
F5
(dalam mode perintah).sumber
Berikut adalah perintah peta untuk memilih semua ke clipboard menggunakan CTRL+ a:
Tambahkan ke .vimrc Anda dan Anda siap pergi ...
sumber
Saya tahu sepuluh tahun tentang ini harus diselesaikan tetapi dua jawaban pertama tidak bekerja untuk saya jadi saya terus menggali. Pada Redhat (server jauh) - Windows 10 (mesin lokal), jika Anda tidak dapat memilih semuanya dengan mouse, Anda macet karena salinan yang biasa tidak berfungsi antara remote dan clipboard mesin lokal.
Jadi, untuk menyalin di Linux jarak jauh dan menempel di Windows lokal, tentukan buffer utama dengan *dan lakukan yank ganda yang bagus
Gunakan gg" * yy.
sumber
Saya telah membuat fungsi untuk melakukan tindakan ini, letakkan di Anda
~/.vimrc
.OBS: Jika Anda menggunakan neovim, Anda juga memerlukan manajer clipboard seperti xclip. untuk informasi lebih lanjut ketik neovim
:h checkhealth
Hal ini juga penting untuk menyebutkan bahwa tidak selalu sederhana
y
akan menyalin ke clipboard, untuk membuat setiap pakan copy+
yang adalah "Clipboard Register" mencoba untuk set::set clipboard=unnamed,unnamedplus
. Untuk mor informasi lihat::h unnamed
.Di sini, informasi lebih lanjut tentang vim wikia.
sumber
Anda dapat menggunakan pintasan, seperti ini:
Artinya, ketika Anda menekan F6 dalam mode normald, itu akan menyalin seluruh file, dan menambahkannya ke clipboard. Atau Anda cukup mengetik dalam mode normal
:%y+
dan kemudian mendorongEnter
.sumber
Klik tombol kiri mouse, seret melintasi bagian yang ingin Anda salin dan lepaskan. Kode secara otomatis disalin ke clipboard.
sumber
vi
cara).Saya tidak bisa menyalin file menggunakan jawaban di atas tetapi saya punya dempul dan saya menemukan solusi di Quora.
Catatan: ini menyalin semua karakter yang dicetak dari sesi itu ke file log, sehingga akhirnya akan menjadi besar. Dalam hal itu, hapus file log dan cat file target sehingga Anda mendapatkan konten file tertentu yang disalin pada mesin Anda.
sumber