Apakah mungkin menyalin ke clipboard langsung dari Vim? yy
hanya menyalin barang ke buffer internal Vim. Saya ingin menyalin ke clipboard OS. Apakah ada perintah seperti itu di Vim atau Anda hanya bisa menarik barang-barang dalam Vim?
753
sudo apt-get install vim-gnome
sebelum menerapkan perintah-perintah di bawah ini atau Anda akan mendapatkan Kesalahan Registrasi Tidak Valid!vim-gnome
mungkin berlebihan atau tidak tersedia di OS / distro mereka, sedangkan saya curigavim-gtk
dan lebih disukaivim-gtk3
lebih mungkin ada dan menarik lebih sedikit ketergantungan, sambil tetap menyediakan integrasi clipboard (setidaknya untuk mereka yang masih menggunakan X11; Saya tidak yakin bagaimana ini semua berinteraksi dengan Wayland).Jawaban:
The
*
mendaftar akan melakukan hal ini. Di Windows,+
dan*
setara. Di unix ada perbedaan tipis antara+
dan*
:*
mungkin apa yang paling Anda inginkan sebagian besar waktu, jadi saya gunakan*
karena berfungsi seperti yang saya harapkan di kedua lingkungan.Di distro Linux Anda harus menginstal
vim-gtk
(aliasgvim
) terlebih dahulu untuk mendapatkan fungsionalitas clipboard. Ini karena vim non-gtk biasanya dikompilasi tanpa dukungan X11. Ini untuk memungkinkannya berjalan di mesin konsol saja (sering server).Dan bagi mereka yang bingung tentang cara menggunakan register saat menarik atau meletakkan, Anda hanya menulis
"
kemudian nama register. Jadi untuk menyalin sesuatu ke register clipboard, Anda mengetik"*y
dan kemudian memasukkannya ke Anda"*p
(kredit: Kyle Mathews)sumber
vim --version|grep .xterm_clipboard -o
dan jika sudah-
maka Anda tidak memiliki dukungan. Unduh versi berbeda sesuai ubuntuforums.org/showthread.php?t=1686955+
mendaftar. Misalnya, jika Anda ingin menyalin tiga baris ke clipboard sistem, gunakan perintah likev3j"+y
, dan kemudian Anda bisa menempelkannya ke aplikasi lain lebih VIM lain. Menggunakan*
register di Linux hanya dapat menyalin dan menempel di antara berbagai aplikasi VIM.Di Mac OSX
salin bagian yang dipilih: pilih teks secara visual (ketik
v
atauV
dalam mode normal) dan ketik:w !pbcopy
salin seluruh file
:%w !pbcopy
tempel dari clipboard
:r !pbpaste
Di sebagian besar distro Linux , Anda dapat mengganti:
pbcopy
di atas denganxclip -i -sel c
atauxsel -i -b
pbpaste
menggunakanxclip -o -sel -c
atauxsel -o -b
- Catatan: Jika kedua alat ini (
xsel
danxclip
) tidak diinstal sebelumnya pada distro Anda, Anda mungkin dapat menemukannya di reposumber
vim --version
menunjukkan-clipboard
vnoremap <C-c> :w !pbcopy<CR><CR> noremap <C-v> :r !pbpaste<CR><CR>
Untuk menggunakan pemetaan ini, jika Anda ingin menyalin, sorot teks dalam mode visual dan tekan Ctrl-c untuk menyalin. Untuk menempel dari clipboard sistem, tekan Ctrl-v.vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
Di file vimrc Anda, Anda dapat menentukan untuk secara otomatis menggunakan clipboard sistem untuk menyalin dan menempel.
Di Windows diatur:
Di set Linux (vim 7.3.74+):
CATATAN: Anda mungkin perlu menggunakan versi Vim terbaru agar ini berfungsi.
http://vim.wikia.com/wiki/Accessing_the_system_clipboard
sumber
+xterm_clipboard
fitur (terlihat ketika Anda menjalankanvim --version
). Inilah yang terjadi pada saya (menjalankan Kubuntu 12.10). Saya harus menginstalvim-gui-common
paket untuk mendapatkan fungsionalitas yang benar.set clipboard=unnamed
bekerja di Mac OS 10.11.6 (El Capitan) dengan vim 7.4set mouse=v
danset clipboard=unnamed
set clipboard=unnamed
bekerja di MacOS CatalinaGunakan register
"+
untuk menyalin ke clipboard sistem (yaitu,"+y
bukany
).Anda juga dapat menempel dari
"+
untuk mendapatkan teks dari clipboard sistem (yaitu,"+p
bukanp
).sumber
+
/*
difference adalahSELECTION
vsPRIMARY
copy buffer (tidak bisa ingat atm mana)"+yy
(salin baris ke clipboard) dan"+yy
(salin baris ke pilihan);"+p
(tempel dari clipboard) dan"*p
(tempel dari pilihan)."
adalah memilih register yang merupakan register internal vim sendiri secara default (carayy
danp
akan bekerja tanpa merujuk pada jenis register apa pun ). PS: Saya ingin tahu apakah ada karakter untuk register internal Vim sendiri seperti"&yy
yang berubahyy
secara default.@ Jacob Dalton telah menyebutkan hal ini dalam komentar, tetapi tampaknya tidak ada yang menyebutkan dalam jawaban bahwa vim harus dikompilasi dengan dukungan clipboard untuk semua saran yang disebutkan di sini agar berfungsi. Milik saya tidak dikonfigurasi seperti itu pada Mac OS X secara default dan saya harus membangun kembali vim. Gunakan perintah ini untuk mencari tahu apakah Anda memilikinya atau tidak
vim --version | grep 'clipboard'
.+clipboard
berarti Anda baik dan saran di sini akan bekerja untuk Anda, sementara itu-clipboard
berarti Anda harus mengkompilasi ulang dan membangun kembali vim.sumber
brew install vim
. Di Ubuntu, Anda bisa menggunakansudo apt-get install vim-gnome
. Di distro Linux lain (non-GNOME) Anda dapat menginstalvim-gtk
atauvim-athena
.vim
dan menginstalgvim
wiki.archlinux.org/index.php/Vim#Instalationbrew install vim
saya menambahkanset clipboard=unnamed
.vimrc. Jalankansource ~/.vimrc
di baris perintah. Di .bash_profile saya tambahkanalias vim="/usr/local/bin/vim"
kemudian jalankansource ~/.bash_profile
. Sekarang dalam vim cukup gunakany
danp
untuk menyalin / menempelRingkasnya dan buat lebih mudah bagi pemula,
Untuk menyalin baris saat ini, dalam mode mode ketik:
Untuk menyalin seluruh file / buffer, dalam mode perintah, pertama pergi ke awal melalui
gg
, lalu ketikSeperti yang disebutkan, ini membutuhkan
+clipboard
darivim --version
, yang menunjukkan ketersediaan dukungan clipboard,-clipboard
berarti tidak.sumber
"*5yy
mengatakan5 lines yanked
tetapi tidak ada di clipboard? os / x.nnoremap <leader>c "*
di.vimrc
karya cukup baik sebagai "copy" macam, diikuti oleh mosi untuk ambil objek teks yang ingin Anda salin ke OS clipboard Anda.vim-gtk
untuk berubah-clipboard
menjadi+clipboard
, daripada"+yy
berfungsi.Jika Anda menggunakan vim di MAC OSX, sayangnya itu datang dengan versi yang lebih lama, dan tidak mematuhi opsi clipboard. Untungnya, homebrew dapat dengan mudah menyelesaikan masalah ini.
instal vim:
brew install vim
pasang gui verion of vim:
brew install macvim
restart terminal untuk mulai berlaku.
tambahkan baris berikut ke ~ / .vimrc
set clipboard=unnamed
sekarang Anda dapat menyalin baris dalam vim dengan
yy
dan menempelkannya di seluruh sistem.Metode yang Diperbarui :
Saya tidak pernah puas dengan metode set clipboard selama bertahun-tahun. Kerugian terbesar adalah itu akan mengacaukan riwayat clipboard Anda, bahkan ketika Anda gunakan
x
untuk dihapus. Ini adalah solusi yang lebih baik dan lebih elegan.Salin teks [rentang] vim ke clipboard sistem. (Petunjuk: gunakan
v
atauV
untuk memilih rentang pertama, dan kemudian ketik titik dua:
untuk mengaktifkan perintah Ex)::[line-range]yank +
mis.,
:5,10y *
(Salin / cabut baris 5-10 ke*
register clipboard sistem )Rekatkan konten dari clipboard sistem ke vim pada baris baru:
:put +
catatan:
brew info vim
akan dapat melihat opsi lain untuk menginstal vim. Saat ini tidak memiliki opsi lain.sumber
--with-override-system-vim
harus--with-override-system-vi
Untuk Ubuntu - Juli 2018
Gunakan register "+ untuk menyalin ke clipboard sistem (yaitu " + y bukannya y ).
Anda juga dapat menempel dari "+ untuk mendapatkan teks dari clipboard sistem (yaitu " + p bukannya p ).
Anda juga harus memastikan bahwa vim dikompilasi dengan dukungan untuk clipboard. Mencoba:
dan jika itu -xterm_clipboard (awalan minus) maka Anda tidak memiliki dukungan.
Berikut adalah beberapa instruksi untuk bertukar dengan versi vim yang berfungsi yang memiliki dukungan clipboard.
Periksa lagi dengan
vim --version | grep .xterm_clipboard -o
dan Anda dapat mengonfirmasi clipboard sekarang tersedia (mis. + Xterm_clipboard )Semoga berhasil.
sumber
set clipboard=unnamedplus
saya.vimrc
agar yank berfungsi. Saya menggunakan Ubuntu 18.04.Saya tidak dapat menyalin ke sistem clipboard saya karena saya punya ini di file ~ / .vimrc saya:
Tetapi jika Anda menambahkan baris ini selanjutnya, ini akan memungkinkan Anda Ctrl+c untuk mendapatkan apa pun yang telah Anda pilih ke clipboard Anda.
Diskusi asli dan detail lebih lanjut: Menyalin teks keluar dari vim dengan set mouse = a diaktifkan
sumber
solusi bagi saya adalah menginstal vim tambahan yang memiliki opsi clipboard termasuk:
sumber
"+y
Saran hanya bekerja denganvim-gnome
. Menggunakan Linux Mint 18.2.Jika Anda menggunakan GVim, Anda juga bisa
set guioptions+=a
. Ini akan memicu penyalinan otomatis ke clipboard teks yang Anda sorot dalam mode visual.Kekurangan: Perhatikan bahwa pengelola papan klip lanjutan (dengan riwayat) dalam hal ini akan mendapatkan semua riwayat pilihan Anda ...
sumber
Anda dapat menemukan jawabannya di sini Arch Wiki
Untuk Linux: Pertama-tama Anda harus mengaktifkan Clipboard di versi vim Anda dengan menginstal
gvim
.Selanjutnya Anda harus meletakkan baris ini pada
.vimrc
file Anda .set clipboard=unnamedplus
sumber
Jika vim Anda dikompilasi tanpa
+xterm_clipboard
opsi seperti itu secara default di Debian dan saya kira Ubuntu, Anda dapat menyaring pilihan atau seluruh buffer ke program eksternal yang menangani clipboard desktop. Untukxclip
(yang mungkin perlu Anda instal sebelumnya), perintahnya adalah:w !xclip -sel clip
sumber
-xterm_clipboard
di bendera yang ditunjukkan ketika sayavim --version
.Dalam vim hanya di bawah terminal ubuntu,
tekan
shift + drag mouse
untuk memilih teks dalam vim laluctrl + shift + c
pada terminalkemudian
ctrl + v
pada editor lainnyasumber
Jika Anda memiliki xclip cara mudah menyalin teks ke clipboard adalah sebagai berikut:
y
perintah dalam vanilla vim):call system("xclip -selection clipboard", @")
:call system()
menjalankan perintah terminal. Dibutuhkan dua argumen, yang pertama perintah, yang kedua apa yang harus disalurkan ke perintah itu. Misalnya:echom system("head -1", "Hello\nWorld")
mengembalikan Hello (Dengan beberapa padding). echom mengembalikan output dari suatu perintah, panggilan tidak.xclip -selection clipboard
cukup salin teks ke clipboard sistem yang bertentangan dengan clipboard X default, (Diakses oleh tombol tengah moue).@"
mengembalikan teks yang ditarik terakhir. "adalah register default, tetapi Anda bisa menggunakan register apa pun. Untuk melihat isi dari semua register, ketik:registers
.sumber
:call system("pbcopy",@")
. Seseorang dapat mengikat perintah ini ke sebuah kunci.Jawaban ini khusus untuk pengguna MAC.
VIM default yang tersedia dengan MAC tidak datang dengan opsi clipboard diaktifkan. Anda memerlukan opsi itu untuk mengakses clipboard sistem.
Untuk memeriksa apakah vim Anda mengaktifkan opsi itu gunakan perintah di bawah ini
Dalam hasilnya, Anda harus memiliki
+clipboard
. Jika ya-clipboard
, maka VIM Anda TIDAK memiliki opsi untuk mengakses clipboard sistem.Anda perlu MEMBUAT dan menginstal VIM Anda dengan opsi yang Anda butuhkan. Berikut ini adalah perintahnya.
Di atas akan menginstal VIM terbaru dengan opsi
+clipboard
diaktifkan.Sekarang Anda perlu mengatur clipboard sistem. Tambahkan baris berikut ke
~/.vimrc
Sekarang Anda dapat menarik teks ke papan klip sistem. Langkah-langkah di bawah ini menjelaskan cara menarik.
press v
, ini akan mengalihkan Anda ke mode VISUAL.Press y
, ini akan menyalin teks yang dipilih ke clipboard.CMD + v
tempel.Saya menggunakan MACBook Pro dengan macOS Mojave dan berfungsi di atas di dalamnya.
sumber
Mungkin seseorang akan merasakan manfaatnya. Saya ingin tetap independen dari papan klip X, dan masih dapat menyalin dan menempelkan beberapa teks di antara dua vim yang sedang berjalan. Kode kecil ini menyimpan teks yang dipilih dalam file temp.txt untuk disalin. Masukkan kode di bawah ini ke .vimrc Anda. Gunakan CTRL-c CTRL-v untuk melakukan pekerjaan.
vnoremap: w! cp / dev / null ~ / temp.txt && cat> ~ / temp.txt
noremap: r! cat ~ / temp.txt
sumber
set clipboard=unnamed
di Andavimrc
.Visual
mode (Tekan v untuk masuk).Normal
mode (Tekan escape [esc]), tekan y untuk menyalin.Normal
mode Vim .sumber
Saya seorang Vim yang baru tetapi, untuk menyalin semua teks ke clipboard sistem (misalnya jika Anda ingin menempelkannya ke pengolah kata atau editor teks lain seperti gedit, mousepad dll ...), dalam mode normal:
ggVGy
atau, lebih sederhana:
:% y
Seperti yang disarankan, saya juga menginstal vim-gtk dan put
atur clipboard = unnamedplus
di .vimrc saya
dan semuanya bekerja dengan baik
Jika Anda hanya ingin menyalin sebagian teks, gunakan mode visual (v) , pilih teks yang ingin Anda salin dan tekan y .
Akhirnya, saya menyarankan program clipboard seperti Clipman (favorit saya), Clipit, Parcellite atau yang serupa.
(Saya menggunakan vim 8.0 di Debian Stretch Xfce)
LUPA ME UNTUK BAHASA INGGRIS SAYA! :-)
sumber
Saya mengalami masalah karena vim saya tidak mendukung clipboard :
Saya menginstal vim-gnome (yang mendukung clipboard) dan kemudian memeriksa lagi:
Sekarang saya dapat menyalin dan menempel menggunakan "+ y dan" + p masing-masing.
sumber
Saya telah berjuang dengan ini selama berbulan-bulan sampai sekarang di MacOsX menggunakan pintasan keyboard. Saya tahu pertanyaan bukan tentang menggunakan celana pendek keyboard. Tapi ini mungkin membantu seseorang dengan masalah yang sama.
Saya menemukan bahwa jika Anda hapus centang:
dari menu Terminal, Anda dapat menyalin ke clipboard menggunakan
lagi.
sumber
Saya menulis baris sederhana di .vimrc saya agar copy berfungsi. Semoga ini bisa membantu seseorang. Sayangnya vim saya tidak diinstal dengan dukungan Clipboard, jadi tidak ada saran ini yang berfungsi untuk saya. Pada dasarnya, rekatkan baris ini di .vimrc Anda:
Jika Anda ingin membaca detail tentang apa yang dilakukannya, Anda dapat membaca tentang ini di blog saya
sumber
Untuk beberapa keyboard internasional, Anda mungkin perlu menekan "+ Spaceuntuk mendapatkan
"
.Jadi dalam hal ini Anda harus menekan "Space+yatau"Space*y
sumber
Jika Anda tidak ingin menggunakan antarmuka grafis untuk vim dan Anda lebih suka tetap menggunakan emulator terminal mungkin ada pendekatan yang jauh lebih sederhana untuk masalah ini. Alih-alih menggunakan yank atau semacamnya, pertama-tama lihat dokumentasi terminal yang Anda gunakan. Saya telah berjuang dengan masalah yang sama (mencoba menggunakan + clipboard dan xclip dan sebagainya) dan pada akhirnya ternyata di terminal emulator saya cukup dengan menekan shift dan memilih teks yang ingin Anda salin. Itu dia. Cukup sederhana dan tidak perlu dipusingkan dengan konfigurasi. (Omong-omong, saya menggunakan urxvt).
sumber
untuk OSX, seperti jawaban 10342 di atas dibuat jelas, Anda perlu memastikan bahwa vim mendukung fitur clipboard, mengatakan yang datang sebelum dikirim dengan OSX TIDAK mendukung clipboard, dan bahwa jika Anda menjalankan
brew install vim
akan berfungsi.Kecuali menjalankan vi masih akan membuat Anda menjalankan versi OSX preshipped, bukan yang Anda instal dari minuman.
untuk mengatasi ini, saya hanya menambahkan perintah vim saya ke versi buatan, bukan yang standar OSX:
dan sekarang aku emas
sumber
Solusi saya adalah meletakkan baris berikut ke .vimrc:
Script menyalin baris yang dipilih (melalui mode visual) atau konten file (jika tidak ada yang dipilih) ke clipboard menggunakan Ctrl + y. Saya menggunakan Manjaro Linux jika itu penting.
sumber
Saya menggunakan mac osx (10.15.3) dan baru untuk vim. Saya menemukan ini sangat frustasi dan semua jawaban di sini terlalu rumit dan / atau tidak sesuai dengan situasi saya. Saya akhirnya mendapatkan ini berfungsi dalam 2 cara:
pemetaan kunci yang menggunakan pbcopy : berfungsi pada versi lama vim yang dikirimkan bersama mac.
Instal versi vim yang lebih baru sehingga saya dapat mengakses solusi yang paling direkomendasikan di jawaban lain:
sumber
selecting
dengan bantuanmouse
danright-click copy
bekerja dalam kasus saya.Saya tidak ingin nomor baris dimasukkan, jadi saya
:set nonumber
sebelumnyacopying
.sumber
Tidak ada yang berhasil bagi saya di laptop windows saya.
Ctrl+ Cbaik untuk menyalin .. tapi saya perlu Shift+Insert untuk menempel!
(Alasan yang bagus untuk selalu mendapatkan laptop di mana Insertselalu dapat diakses tanpa menekan tombol sekunder)
sumber
Shift+ Ctrl+ C jika Anda berada dalam mode grafis Linux, tetapi pertama-tama Anda harus memilih apa yang perlu Anda salin.
sumber