it-swarm-id.com

Bagaimana cara menyalin teks dari vim ke program eksternal?

Saya mencoba menyalin-menempelkan beberapa teks dari vim. Saya melakukan v untuk masuk ke mode visual, lalu y setelah saya memilih blok saya.

Tampaknya menyalin teks ke clipboard vim, karena p akan menempelkannya. Namun di program lain (mis. Chrome), klik kanan-> tempel tidak menempelkan teks yang benar. Bagaimana cara menyalin teks ke papan klip yang benar?

91
ripper234

Berikut ini hanya akan berfungsi jika vim --version menunjukkan bahwa Anda memiliki +xterm_clipboard fitur. Jika tidak, Anda harus menginstal paket tambahan atau mengkompilasi ulang vim dengan fitur yang ditambahkan.


Sebenarnya ada dua opsi untuk ini:

"+y

salinan ke buffer clipboard "biasa" (sehingga Anda dapat menempel menggunakan Ctrl + V, klik kanan dan pilih "Tempel" dll), sementara

"*y

salinan ke pilihan X11 - Anda dapat menempel dari buffer ini menggunakan klik tengah.

Perhatikan bahwa "* dan "+ bekerja dua arah. Jadi jika Anda telah memilih beberapa teks di aplikasi lain, Anda dapat menempelkannya ke vim menggunakan "*p dan jika Anda telah menyalin beberapa teks (menggunakan, katakanlah, Ctrl-C) maka Anda dapat menempelkannya ke vim menggunakan "+p.

70
Hamish Downer

Jika Anda menggunakan vim> = 7.3.74, maka Anda dapat benar-benar meletakkan ini di vimrc Anda:

set clipboard=unnamedplus

Yang secara otomatis akan menggunakan + buffer (clipboard sistem) secara default. Kemudian untuk menarik (copy), Anda cukup menggunakan perintah y biasa, dll.

Saya menemukan perilaku ini cukup mengganggu, karena perintah seperti d menempatkan teks yang mereka operasikan ke buffer default, yang berarti saya tidak bisa melakukan yang cepat dd dan menempelkan sebuah baris dari internet, misalnya.

35
Reid

Tahan tombol shift dan pilih teks dengan kursor mouse.
Teks akan disalin ke clipboard.

Ini juga berfungsi untuk menempelkan dari clipboard ke vim.

Agar lebih jelas, ini berfungsi untuk vim berjalan di terminal seperti xterm.

31
Andrew Stacey

Saya menemukan standar "+gP dan "+y perintah sangat sulit digunakan. Jadi saya sudah memetakan Ctrl-Y untuk menarik ke clipboard dan Ctrl-P untuk menempel dari clipboard. Tambahkan ini ke .vimrc

nnoremap <C-y> "+y
vnoremap <C-y> "+y
nnoremap <C-p> "+gP
vnoremap <C-p> "+gP
11

Sudahlah, saya menemukan jawabannya - itu tertulis di menu vim.

"+y

Sangat intuitif.

6
ripper234

Hanya untuk menambahkan jawaban non-vim-spesifik: Anda dapat menggunakan Ctrl+Shift+C untuk menyalin ke clipboard sistem di Ubuntu (jika fungsionalitas disediakan oleh emulator terminal Anda, gnome-terminal untuk satu menyediakannya). Ctrl+Shift+V menempel ke jendela terminal lain, biasa Ctrl+V pasta ke aplikasi GUI.

Selain itu, jika Anda memilih teks di terminal, lalu klik tengah, itu akan ditempelkan dari papan klip X11.

4
crazy2be

Tahan tombol SHIFT dan mouse pilih teks untuk menyalinnya.

Kemudian rekatkan di program lain dengan CTRL + v.

Bekerja di terminal pada Ubuntu 16.04 saya. Tidak yakin tentang gvim dan sistem lainnya.

enter image description here

4
Andrzej Rehmann

Ketika saya memeriksa vim saya tidak mendukung clipboard:

vim --version | grep clip
-clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      -mouseshape      +startuptime     -xterm_clipboard

Saya menginstal vim-gnome dan kemudian memeriksa lagi

vim --version | grep clipboard
+clipboard       +insert_expand   +path_extra      +user_commands
+emacs_tags      +mouseshape      +startuptime     +xterm_clipboard

Sekarang saya dapat menyalin dan menempel menggunakan "+ y dan" + p masing-masing.

3

Secara default, jika Anda menginstal versi ringan vim, maka Anda tidak akan memiliki +xterm_clipboard fitur aktif (vim --version | grep xterm), yang diperlukan untuk menggunakan * dan + mendaftar di luar vim.

Untuk mengaktifkannya, Anda harus mengkompilasi vim sendiri, atau menginstal versi vim yang menyertainya. Saya menggunakan vim-gnome: Sudo apt-get install vim-gnome. Jika Anda melakukan vim --version | grep xterm, Anda akan melihat bahwa sekarang +xterm_clipboard.

Sekarang, coba salin ke + dan * dan itu akan berfungsi.

2
laughing_man

Sekadar tambahan, jika ada yang berhasil cobalah untuk mengganti terminal yang membungkus vim (jika Anda menggunakan vim dari terminal). Saya menemukan bahwa, misalnya, clipboard tidak dapat diakses oleh guake sementara dapat diakses dari terminal gnome.

0
gc5