Saya menggunakan sistem Linux. Dua vim dibuka di dua terminal. Sekarang saya ingin menyalin teks dari A ke B. Salah satu cara untuk melakukannya adalah dengan memilih teks dalam A, gunakan mouse untuk menyalin, lalu beralih ke B, dalam mode insert, perintah <c-r>+
akan menempelkan teks.
Apakah ada cara melakukannya tanpa menggunakan mouse? seperti "+yy
di A, ketika beralih ke B o<c-r>+
,? Saya menjelajahi beberapa kombinasi dengan sia-sia. Dan saya mencari "copy di terminal", tetapi tidak menemukan apa pun.
pengguna @statox menyarankan satu solusi menggunakan mode visual, yaitu v$"+y
di A, ketika beralih ke B o<c-r>+
,.
Apakah ada cara sederhana yang dapat menyalin teks dalam A tanpa masuk ke mode v? Harus diakui masuk ke mode-v tidak melibatkan terlalu banyak pemogokan kunci, hanya ingin tahu apakah ada cara yang lebih baik. Misalnya. jika kursor berada di tengah garis, yy
salin seluruh baris (untuk mendaftar "
), sementara 0v$y
melakukan hal yang sama dengan stroke tombol tambahan.
Atau, pertanyaan saya dapat dikurangi menjadi jika ada cara dengan stroke tombol yang lebih sedikit daripada 0v$"+y
untuk menyalin sehingga saya dapat menggunakan <alt-tab>o<c-r>+
untuk menempel.
sumber
"+y
dan di contoh vim lain masukkan register clipboard"+p
. Atau duplikat dari ini ?y
dengan gerakan (:help motion.txt
) atau objek (:help object-select
). Jika Anda sering menarik dan menyisipkan di seluruh instance Vim, Anda mungkin menemukan pengaturan ituclipboard
untuk dimasukkanunnamed
atauunnamedplus
berguna. Lihat:help 'clipboard'
. Maka menyalin di antara instance seharusnya hanya berfungsi.0v$
sama denganV
. Dan sangat mudah untuk membuat mapping untuk"+y
::nnoremap <Leader>y "+y
. Sehingga mengurangi itu menjadiV\y
.V"+y
, 4 penekanan tombol.Jawaban:
Anda dapat memeriksa apakah Vim dibangun dengan dukungan clipboard dengan:
Jika outputnya adalah
1
, berikut ini harus cukup untuk mencapai tujuan Anda:Anda dapat membuatnya jauh lebih mulus dengan menyinkronkan register clipboard dan register default dengan pengaturan ini di
vimrc
:Jika outputnya
:echo has('clipboard')
adalah0
, pertimbangkan untuk menginstal Vim likevim-gtk
atauvim-gnome
(nama paket mungkin berbeda dari distro ke distro).sumber
Saya pikir solusi yang sudah Anda sebutkan dalam pertanyaan Anda adalah yang benar. Jika Anda ingin mengurangi jumlah penekanan tombol, Anda cukup membuat peta, misalnya
Lihat entri kedua di sini .
sumber
Untuk memperluas jawaban @ romainl, (dengan dukungan clipboard) Anda dapat menggunakan register yang dibagikan dengan clipboard lebar sistem.
Dengan menjalankan perintah ini, Anda y Anking / menyalin / menyimpan isi yang dipilih dalam register, dan p asting mereka ke tujuan Vim-terminal. Dua register khusus ini
+
dan*
dibagi dengan clipboard lebar sistem (dan karenanya banyak program lain seperti browser web, gedit dll). Register+
dikaitkan dengan copy / paste buffer dan*
dikaitkan dengan buffer seleksi (yang memasukkan salinan seleksi dengan klik tengah pada bidang teks di, katakanlah, Ubuntu) dan dapat ditempel menggunakanctrl + v
(ctrl + shift + v
pada gnome-terminal).sumber
1) Di Fedora saya menggunakan pengaturan berikut:
vim-X11 hadir dengan dukungan clipboard - mungkin di distro lain mirip.
2) Tetapkan alias di .bashrc saya
3) Dalam .vimrc:
Sekarang tarik yang biasa di Vim masuk ke clipboard sistem dan setiap Ctrl-C di luar vim dapat ditempelkan di vim.
sumber
Jika Anda menggunakan Mac (OSX), Anda dapat menginstal bpcopy (menggunakan brew install pbcopy - lihat http://brew.sh/ untuk lebih jelasnya). Kemudian jalankan perintah berikut (perintah bentuk lurus) tanpa menyentuh mouse:
CONTOH:
1) Dalam TERMINAL # 001 :
2) Anda dapat beralih ke terminal # 002 (tanpa menggunakan mouse) dengan menggunakan tombol pintas bawaan di aplikasi terminal OSX: command+i
3) Dalam TERMINAL # 002 : Buka file baru dalam vim
4) Masukkan vim dalam mode insert dengani
5) Masukkan teks dari clipboard dengan command+ V(untuk menempelkan dari clipboard pada Mac)
6) Nikmati sisa harimu!
sumber