Tidak dapat menyalin dari vim ke clipboard sistem

54

Seperti yang dikatakan dalam judul saya tidak dapat menyalin dari vim ke clipboard sistem. Viceversa berfungsi, menyalin dari luar vim dan menempel dengan pok.

Saya telah menginstal dukungan clipboard, versi vim adalah 7.3.429:

$ vim --version | grep clip
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments 
+xsmp_interact +xterm_clipboard -xterm_save 

Saya sudah:

set clipboard=unnamedplus

di saya .vimrcdan sudah diatur ketika saya melakukannya:

set clipboard?

atau

:echo has('clipboard')

Saya menggunakan Ubuntu 12,04 LTS, dan vim di dalam gnome-terminal(tetapi juga GVim memiliki masalah yang sama). Ada ide?

Terima kasih

gc5
sumber
stackoverflow.com/questions/11489428/... Ini dapat membantu Anda sedikit.
coteyr
Apakah Anda berhenti vim antara mengetik "+ y pada pemilihan visual dan mencoba menyisipkan di luar vim? Itu tidak akan berhasil jika Anda melakukannya
Samuel Peter
@SamuelPeter Tidak, saya tidak berhenti vim
gc5
1
Saya mengalami masalah ini karena saya melakukan pengaturan clipboard+=unnamedplussesuatu dalam pengaturan default menonaktifkannya. Mengubah ke clipboard=unnamedplus(mis. Menghapus pengaturan lain) bekerja untuk saya.
JonnyRaa
Seperti yang disebutkan @JonnyLeeds. Konfigurasi set clipboard+=unnamed& set clipboard+=unnamedplustidak berfungsi saat menggunakan y dan p untuk berbagi clipboard sistem. :set clipboard?== clipboard=autoselect,exclude:cons\|linux,unnamed,unnamedplus; Setelah saya menghapus yang pertama +, yang set clipboard=unnameddan set clipboard+=unnamedplus, dan itu berhasil !! :set clipboard?==clipboard=unnamed,unnamedplus
Marslo

Jawaban:

87

Inilah yang bekerja untuk saya (Ubuntu 13.10):

Instal ulang vim sebagai vim-gtk:

sudo apt-get install vim-gtk

pilih apa yang ingin Anda gunakan mouse - lalu ketik untuk menyalin ke clipboard :

"+y

untuk menempel ke vim dari jenis clipboard :

"+p

Saya tidak tahu mengapa tetapi membandingkan output dari vim --versionpertunjukan bahwa instalasi vim yang biasa sangat terbatas dibandingkan dengan vim-gtk. Mengganti vim dengan vim-gtk tidak memengaruhi pluging apa pun.


Informasi lebih lanjut:

Raffael
sumber
1
Saya tidak bisa mengungkapkan seberapa banyak Anda membantu saya dan betapa saya bahagia sekarang: D
7hi4g0
1
Menariknya, pada 14,04 VIM reguler dan VIM-GTK memiliki xterm_clipboarddukungan, tetapi "+ptidak berfungsi dalam VIM reguler. Alih-alih memotong ke clipboard, itu meningkatkan banyak garis yang dipilih.
dotancohen
1
Instalasi vim-gtkpada akhirnya bekerja untuk saya di 14.04.4, tetapi saya mengalami hal-hal yang sedikit berbeda dari yang lain. Sebelum vim-gtkmenginstal, vim ditampilkan -xterm_clipboard(yaitu tidak diaktifkan). Setelah menginstal vim-gtkitu menunjukkan (+ xterm_clipboard). Saya sedang memeriksa ini dengan vim --version | grep clip. Bagaimanapun, masuk akal bahwa Anda membutuhkan +xterm_clipboard!
overthink
Ini solusi hebat. Sebenarnya, saya sudah membuat ini hal pertama yang harus saya lakukan setelah menginstal OS Ubuntu baru.
linbianxiaocao
Menginstal vim-gtk bekerja untuk saya. Terima kasih
Miguel Mota
6

Saya akan meninggalkan jawaban asli di bawah ini karena mungkin penting bagi orang lain yang mencari pertanyaan ini.

Singkatnya sepertinya tidak ada satu ukuran cocok untuk semua jawaban, tetapi dengan 'set clipboard = unnamedplus' salah satu dari '* p' atau '+ p' harus bekerja dari clipboard "sistem".

'* p' hampir pasti yang Anda inginkan. ( dari sini )


vim adalah program klien. Ketika menggunakannya di dalam gnome-terminal (atau emulator terminal apa saja) crtl + c (atau kombinasi tombol apa saja) ditangani oleh emulator terminal terlebih dahulu, kemudian shell, kemudian akhirnya oleh program (vim dalam kasus ini). vim dan ctrl + c hampir pasti tidak akan pernah berhasil karena ctrl + c mengirimkan sinyal SIGINT ke tugas yang sedang berjalan. vim menggunakan SIGINT untuk menghentikan hal-hal lain seperti membatalkan mode penyisipan, atau menghentikan fungsi pencarian.

Dengan kata lain. Ctrl + C tidak pernah benar-benar diteruskan ke VIM. SIGINT diteruskan ke VIM. SIGINT memiliki kegunaan lain di vim sehingga menggunakan untuk menyalin kemungkinan tidak akan berhasil (dan bahkan jika Anda bisa memaksanya, bukan ide yang baik).

Alih-alih mencoba bertahan dengan Ctrl + Shift + C dan Ctrl + Shift + V (ada yang lain tapi saya percaya mereka menaruh teks di clipboard sistem)

Agar adil saya tidak tahu banyak tentang gvim.

coteyr
sumber
Mungkin saya membingungkan Anda .. Saya katakan menggunakan ctrl-cvim dan tempel LUAR p, tetapi dalam vim saya tahu saya harus menggunakan y.. Saya akan mengedit pertanyaan saya
gc5
1
LOL belum minum kafein, maaf.
coteyr
5

Gunakan di vimrc Anda:

set mouse=a

Ini akan memungkinkan Anda untuk memilih dan menyalin secara manual dengan mouse.

Sergio Abreu
sumber
3

Selain jawaban yang diterima , jika Anda bekerja jarak jauh melalui SSH (mis. Selesai tmuxdengan beberapa panel dengan vimproses berbeda yang ingin Anda salin di antaranya), Anda juga perlu mengekspor tampilan X karena vimmenggunakan xterm-clipboardantarmuka antar proses yang berbeda. Anda dapat mengatur tampilan X dengan menjalankan

export DISPLAY=:0.0

Ini harus dijalankan sebelum vim diluncurkan, dan di bawah shell lain yang Anda miliki.

Yusuf Gören
sumber
1

Saya telah menemukan di Ubuntu 16.04 Saya perlu vim-gui-commonmenginstal agar "+ydapat bekerja.

Carlos Torchia
sumber