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?
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?
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 file"
.
: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 .
: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
atau V
dalam mode normal) dan ketik:w !pbcopy
salin seluruh file :%w !pbcopy
melewati dari clipboard :r !pbpaste
pbcopy
adalah utilitas Mac. Di Linux, xsel
mungkin berfungsi sebagai gantinya, atau clip
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
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.
:!cat %
. Dan untuk menyalin isi file secara terprogram ke clipboard pada Mac OS::!cat % | pbcopy
Inilah yang saya lakukan untuk menarik seluruh file:
ggVGy
clipboard
set untuk menyalin teks yang ditarik ke dalam +
.
Anda dapat menggunakan perintah "cat" untuk membuka file dan menggunakan mouse untuk menyalin
reset
terminal sebelumnya, lalu pilih semua dan salin. Ini bekerja melalui ssh
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:
:%!xclip -sel clip
u
itu tidak diinstal secara default. untuk menginstal, gunakan:
sudo apt-get install xclip
Di Ubuntu 12
Anda mungkin mencoba menginstal vim-gnome
paket:
sudo apt-get install vim-gnome
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 oleh help clipboard-tool
)
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).
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".
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.
:set go=a
ggVG
Lihat :help go-a
:
'a' Autoselect: If present, then whenever VISUAL mode is started,
or the Visual area extended, Vim tries to become the owner of
the windowing system's global selection. This means that the
Visually highlighted text is available for pasting into other
applications as well as into Vim itself. When the Visual mode
ends, possibly due to an operation on the text, or when an
application wants to paste the selection, the highlighted text
is automatically yanked into the "* selection register.
Thus the selection is still available for pasting into other
applications after the VISUAL mode has ended.
If not present, then Vim won't become the owner of the
windowing system's global selection unless explicitly told to
by a yank or delete operation for the "* register.
The same applies to the modeless selection.
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 pertama y
-> lalu tarik 78 garis di bawah kursor dan garis saat ini 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
:%!putclip
u
Mungkin Ubuntu memiliki aplikasi CLI seperti putclip ??
Jika jari Anda default CTRL-A CTRL-C
, coba pemetaan dari $VIMRUNTIME/mswin.vim
.
" CTRL-C and CTRL-Insert are Copy
vnoremap <C-C> "+y
" CTRL-A is Select all
noremap <C-A> gggH<C-O>G
inoremap <C-A> <C-O>gg<C-O>gH<C-O>G
cnoremap <C-A> <C-C>gggH<C-O>G
onoremap <C-A> <C-C>gggH<C-O>G
snoremap <C-A> <C-C>gggH<C-O>G
xnoremap <C-A> <C-C>ggVG
Saya minta mereka memetakannya ke <Leader><C-a>
dan <Leader><C-c>
.
Salin seluruh file di dalam vim atau tab-nya
y G
lalu pindah ke tab dan tempel dengan
p
dan untuk memotong seluruh penggunaan file
d G
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.
Saya telah membuat fungsi untuk melakukan tindakan ini, letakkan di Anda ~/.vimrc
.
fun! CopyBufferToClipboard()
%y+
endfun
nnoremap <Leader>y :call CopyBufferToClipboard()<CR>
command! -nargs=0 CopyFile :call CopyBufferToClipboard()
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.
Anda dapat menggunakan pintasan, seperti ini:
noremap <F6> :%y+<CR>
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 mendorong Enter
.
Klik tombol kiri mouse, seret melintasi bagian yang ingin Anda salin dan lepaskan. Kode secara otomatis disalin ke clipboard.
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.