Bagaimana cara menyalin ke clipboard di Vim?


753

Apakah mungkin menyalin ke clipboard langsung dari Vim? yyhanya 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?


140
Silakan lihat jawaban di bawah suara yang mengklarifikasi fakta penting: Anda harus telah vim dikompilasi dengan fitur + clipboard untuk SETIAP saran di bawah ini untuk bekerja di tempat pertama! Ini BUKAN default pada kebanyakan sistem.
Neil Traft

7
@NeilTraft, beberapa jawaban menyarankan pemipaan dari vim ke program eksternal, sehingga klaim bahwa SETIAP jawaban memerlukan tanda + papan klip, salah. Hanya menunjukkan untuk menyelamatkan pembaca di masa depan dari kebingungan.
Hnatt

2
Kemungkinan duplikat dari Cara membuat vim paste dari (dan salin ke) clipboard sistem? (Catatan: pertanyaan lain adalah yang lebih baru, tetapi memiliki jawaban IMHO yang lebih baik, yang saya mengapa saya tandai yang ini sebagai dupe)
Martin Tournoij

5
Pastikan Anda telah melakukan sudo apt-get install vim-gnome sebelum menerapkan perintah-perintah di bawah ini atau Anda akan mendapatkan Kesalahan Registrasi Tidak Valid!
Harnirvair Singh

7
@Harnirvair Bagi banyak set pembaca di sini, vim-gnomemungkin berlebihan atau tidak tersedia di OS / distro mereka, sedangkan saya curiga vim-gtkdan lebih disukai vim-gtk3lebih 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).
underscore_d

Jawaban:


497

The *mendaftar akan melakukan hal ini. Di Windows, +dan *setara. Di unix ada perbedaan tipis antara +dan *:

Di bawah Windows, register * dan + sama. Untuk sistem X11, mereka berbeda. Untuk sistem X11, * adalah pilihan, dan + adalah buffer cut (seperti clipboard). http://vim.wikia.com/wiki/Accessing_the_system_clipboard

*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(alias gvim) 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 "*ydan kemudian memasukkannya ke Anda "*p(kredit: Kyle Mathews)


31
Tidak berfungsi pada mac osx lion. Setelah menekan "maka *, itu membuat suara mac itu membuat ketika Anda tidak dapat melakukan sesuatu. Bagaimana saya melakukannya pada mac?
Eddy

62
Anda juga harus memastikan bahwa vim dikompilasi dengan dukungan untuk clipboard. Vim default di Ubuntu tidak. Coba vim --version|grep .xterm_clipboard -odan jika sudah -maka Anda tidak memiliki dukungan. Unduh versi berbeda sesuai ubuntuforums.org/showthread.php?t=1686955
Sparhawk

66
Jika Anda menggunakan Linux, Anda harus +mendaftar. Misalnya, jika Anda ingin menyalin tiga baris ke clipboard sistem, gunakan perintah like v3j"+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.
diabloneo

6
Di Linux, register * tidak berfungsi untuk menyalin dan menempel secara eksternal.
weberc2

11
weberc2 dan diabloneo, register * adalah untuk clipboard pilihan, dapat diakses dari klik tengah, bukan pasta menu atau ^ V
Jim Keener

354

Di Mac OSX

  • salin bagian yang dipilih: pilih teks secara visual (ketik vatau Vdalam mode normal) dan ketik:w !pbcopy

  • salin seluruh file :%w !pbcopy

  • tempel dari clipboard :r !pbpaste

Di sebagian besar distro Linux , Anda dapat mengganti:

  • pbcopydi atas dengan xclip -i -sel catauxsel -i -b
  • pbpastemenggunakan xclip -o -sel -catau xsel -o -b
    - Catatan: Jika kedua alat ini ( xseldan xclip) tidak diinstal sebelumnya pada distro Anda, Anda mungkin dapat menemukannya di repo

1
+1 Bekerja dengan Lion, meskipun vim --versionmenunjukkan-clipboard
roplacebo

26
kompatibel dengan vim yang dikirimkan dengan mavericks osx. tambahkan ke .vimrc Anda 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.
davidtingsu

7
Di linux ini berfungsi dengan: w! Xclip -sel c atau: w! Xsel -b
trve.fa7ad

4
Untuk Linux Ctrl + C salin: di ~ / .vimrc tambahkan:vnoremap <C-C> :w !xclip -i -sel c<CR><CR>
andy

3
Jawaban yang jauh lebih bermanfaat daripada yang diterima. Terima kasih!
Bryce Johnson

165

Di file vimrc Anda, Anda dapat menentukan untuk secara otomatis menggunakan clipboard sistem untuk menyalin dan menempel.

Di Windows diatur:

set clipboard=unnamed

Di set Linux (vim 7.3.74+):

set clipboard=unnamedplus

CATATAN: Anda mungkin perlu menggunakan versi Vim terbaru agar ini berfungsi.

http://vim.wikia.com/wiki/Accessing_the_system_clipboard


39
Sebagai tambahan pada catatan Anda - Anda mungkin juga harus menginstal paket tambahan untuk membuatnya berfungsi. Jika vim Anda tidak memiliki +xterm_clipboardfitur (terlihat ketika Anda menjalankan vim --version). Inilah yang terjadi pada saya (menjalankan Kubuntu 12.10). Saya harus menginstal vim-gui-commonpaket untuk mendapatkan fungsionalitas yang benar.
Jacob Dalton

4
set clipboard=unnamedbekerja di Mac OS 10.11.6 (El Capitan) dengan vim 7.4
Purplejacket

1. Salin pada drag 2. mouse pilih, bekerja di Mac Sierra-10.12.6 dan versi vim: 8.0.1800 dengan menentukan perintah berikut dalam file ~ / .vimrc set mouse=vdanset clipboard=unnamed
dkb

set clipboard=unnamedbekerja di MacOS Catalina
Diego Somar

Anda mungkin ingin memperbarui jawaban Anda. Tidak berfungsi di Ubuntu 18.04 dengan vim 8.0.
Luís de Sousa

124

Gunakan register "+untuk menyalin ke clipboard sistem (yaitu, "+ybukan y).

Anda juga dapat menempel dari "+untuk mendapatkan teks dari clipboard sistem (yaitu, "+pbukan p).


Saya menggunakan "*, tetapi tampaknya hanya ada perbedaan dalam X.
dash-tom-bang

3
@ dash-tom-bang: the +/ *difference adalah SELECTIONvs PRIMARYcopy buffer (tidak bisa ingat atm mana)
Daenyth

2
Ya bintang adalah pilihannya, plus adalah clipboard.
dash-tom-bang

6
Karakter kutipan ganda berfungsi sebagai pemilih register dalam vi dan vim.
Amardeep AC9MF

1
Dua set cara pintas untuk diingat: "+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 (cara yydan pakan bekerja tanpa merujuk pada jenis register apa pun ). PS: Saya ingin tahu apakah ada karakter untuk register internal Vim sendiri seperti "&yyyang berubah yysecara default.

72

@ 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'. +clipboardberarti Anda baik dan saran di sini akan bekerja untuk Anda, sementara itu -clipboardberarti Anda harus mengkompilasi ulang dan membangun kembali vim.


15
Atau, alih-alih mengkompilasi sendiri, Anda dapat menginstal paket vim yang telah dibangun dengan dukungan clipboard. Pada OS X, Homebrew memiliki ini: brew install vim. Di Ubuntu, Anda bisa menggunakan sudo apt-get install vim-gnome. Di distro Linux lain (non-GNOME) Anda dapat menginstal vim-gtkatau vim-athena.
Neil Traft

3
Terima kasih, di Arch Linux saya harus menghapus vimdan menginstal gvim wiki.archlinux.org/index.php/Vim#Instalation
michalzuber

Jawaban Anda menjelaskan mengapa yank tidak bekerja dengan clipboard, dengan informasi Anda saja saya bisa melakukan pencarian google yang lebih baik dan membuatnya bekerja dengan mudah. Dan sekarang berhasil. Akan lebih baik jika Anda juga memasukkan komentar @NeilTraft ke jawaban Anda sehingga orang tidak perlu melakukan pencarian google.
Yana Agun Siswanto

Di Mac, tepat setelah brew install vimsaya menambahkan set clipboard=unnamed.vimrc. Jalankan source ~/.vimrcdi baris perintah. Di .bash_profile saya tambahkan alias vim="/usr/local/bin/vim"kemudian jalankan source ~/.bash_profile. Sekarang dalam vim cukup gunakan ydan puntuk menyalin / menempel
Dmitry

59

Ringkasnya dan buat lebih mudah bagi pemula,

Untuk menyalin baris saat ini, dalam mode mode ketik:

"*yy

Untuk menyalin seluruh file / buffer, dalam mode perintah, pertama pergi ke awal melalui gg, lalu ketik

"*yG

Seperti yang disebutkan, ini membutuhkan +clipboarddari vim --version, yang menunjukkan ketersediaan dukungan clipboard, -clipboardberarti tidak.


1
"*5yymengatakan 5 lines yankedtetapi tidak ada di clipboard? os / x.
javadba

2
Ya saya telah memverifikasi + clipboard
javadba

nnoremap <leader>c "* di .vimrckarya cukup baik sebagai "copy" macam, diikuti oleh mosi untuk ambil objek teks yang ingin Anda salin ke OS clipboard Anda.
cpk

Terima kasih, Anda menjelaskannya persis seperti yang saya butuhkan.
Symen Timmermans

3
Saya menginstal vim-gtkuntuk berubah -clipboardmenjadi +clipboard, daripada "+yyberfungsi.
Lai32290

30

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 yydan 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 xuntuk dihapus. Ini adalah solusi yang lebih baik dan lebih elegan.

  1. Salin teks [rentang] vim ke clipboard sistem. (Petunjuk: gunakan vatau Vuntuk 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 )

  2. Rekatkan konten dari clipboard sistem ke vim pada baris baru:
    :put +

catatan:

  1. Jika Anda memilih rentang kata, hal di atas tidak akan berfungsi. gunakan "* y atau " + y untuk menyimpan blok visual ini ke clipboard. Namun ini sulit diketik, saya masih memikirkan alternatif.
  2. : help "* atau : help * + untuk informasi lebih lanjut
  3. brew info vimakan dapat melihat opsi lain untuk menginstal vim. Saat ini tidak memiliki opsi lain.

--with-override-system-vimharus--with-override-system-vi
maffo

Saya ingin mencoba ini untuk menghindari menginstal banyak barang Xorg pada sistem minimal, tetapi saya kehilangan sesuatu. Saya mendapatkan "Bukan perintah editor [rentang] yank +" setelah memilih dalam mode v dan kemudian menekan ":".
jeremyjjbrown

29

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:

vim --version | grep .xterm_clipboard -o 

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.

  • $ sudo apt-get purge vim
  • $ sudo apt-get autoremove (menghapus paket dependensi vim asing dari sistem)
  • $ sudo apt-get install vim-gnome

Periksa lagi dengan vim --version | grep .xterm_clipboard -odan Anda dapat mengonfirmasi clipboard sekarang tersedia (mis. + Xterm_clipboard )

Semoga berhasil.


3
Anda membuat hari saya, atau mungkin bulan saya. Setelah bekerja keras dengan vim clipboard di Ubuntu selama bertahun-tahun, ini adalah perasaan yang luar biasa. arcseldon, terima kasih !!
evanrmurphy

Selain apa yang dijelaskan di atas, saya harus memasukkan file set clipboard=unnamedplussaya .vimrcagar yank berfungsi. Saya menggunakan Ubuntu 18.04.
Elia

23

Saya tidak dapat menyalin ke sistem clipboard saya karena saya punya ini di file ~ / .vimrc saya:

 if has('mouse')
   set mouse=a
 endif

Tetapi jika Anda menambahkan baris ini selanjutnya, ini akan memungkinkan Anda Ctrl+c untuk mendapatkan apa pun yang telah Anda pilih ke clipboard Anda.

vmap <C-c> "+y

Diskusi asli dan detail lebih lanjut: Menyalin teks keluar dari vim dengan set mouse = a diaktifkan


3
Saya tidak menambahkan baris ke .vimrc saya, tetapi tautan yang Anda berikan sangat berguna. Jika Anda menahan SHIFT saat memilih teks dalam vim, Anda dapat menyalin teks tanpa memasuki mode visual. Terima kasih dan +1.
Stefan van den Akker

Pergeseran trik adalah apa yang saya butuhkan. Bekerja juga dengan editor seperti terminator yang menggunakan Ctrl + Shift + c untuk menyalin sementara di prompt, itulah yang saya coba pada awalnya. Saya memang menginstal -xterm_clipboard dengan vim.
Anders Elmgren

18

solusi bagi saya adalah menginstal vim tambahan yang memiliki opsi clipboard termasuk: 

sudo apt-get install vim-gnome

3
Inilah yang harus saya lakukan untuk Ubuntu 16.04. Saya mencoba saran lain tanpa hasil. Ini adalah yang termudah dan melakukan apa yang saya harapkan dengan "+ y.
Steven Eckhoff

Ini berfungsi seperti pesona tanpa perubahan vimrc! masih berlaku di Ubuntu 16.04
makerj

The "+ySaran hanya bekerja dengan vim-gnome. Menggunakan Linux Mint 18.2.
Samaursa

14

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 ...


13

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 .vimrcfile Anda .

set clipboard=unnamedplus


+1, terkejut bahwa langkah ini sekarang diperlukan. Di semua instalasi Arch saya sebelumnya, saya tidak perlu melakukannya.
Konstantinos

bekerja untuk ubuntu 18.04 juga dan berjalan di tmux. Terima kasih!
James Klein

10

Jika vim Anda dikompilasi tanpa +xterm_clipboardopsi seperti itu secara default di Debian dan saya kira Ubuntu, Anda dapat menyaring pilihan atau seluruh buffer ke program eksternal yang menangani clipboard desktop. Untuk xclip(yang mungkin perlu Anda instal sebelumnya), perintahnya adalah:w !xclip -sel clip


1
Terima kasih untuk ini - ini tidak berfungsi untuk saya di Ubuntu (jadi konfirmasi dugaan Ubuntu Anda sudah benar) untuk waktu yang lama dan saya tidak tahu mengapa. Sekarang saya bisa melihat -xterm_clipboarddi bendera yang ditunjukkan ketika saya vim --version.
jamesc

Ini membantu saya menemukan sumber dukungan clipboard yang bagus: vimcasts.org/blog/2013/11/getting-vim-with-clipboard-support
jamesc

9

Dalam vim hanya di bawah terminal ubuntu,

tekan shift + drag mouseuntuk memilih teks dalam vim laluctrl + shift + c pada terminal

kemudian ctrl + vpada editor lainnya


3
Ini berfungsi untuk memilih hanya apa yang visual dalam vim, bagaimana jika Anda ingin memilih seluruh file?
Gerep

@Lakukan metode ini tidak berfungsi untuk seluruh pemilihan file. itu baik untuk memilih bagian teks pada terminal vim saja dan di mana teks ditampilkan pada layar terminal.
Supawat Pusavanno

1
Ini menyalin nomor baris, batas buffer split dan semua yang terlihat, alih-alih hanya teks / kode.
Zelphir Kaltstahl

9

Jika Anda memiliki xclip cara mudah menyalin teks ke clipboard adalah sebagai berikut:

  1. Yank teks yang ingin Anda salin. (y perintah dalam vanilla vim)
  2. Ketikkan :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.


2
Ini lebih kuat, ini berfungsi bahkan ketika vim tidak dipenuhi dengan dukungan untuk clipboard dan pada OS apa pun. Misalnya, di Mac run :call system("pbcopy",@"). Seseorang dapat mengikat perintah ini ke sebuah kunci.
ilija139

itu berfungsi dengan baik, tetapi dapatkah saya taruh di vimrc saya, apakah akan berfungsi. Itu tidak bekerja untuk saya.
thenakulchawla

5

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

vim --version

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.

# Create the directories you need
$ sudo mkdir -p /opt/local/bin
# Download, compile, and install the latest Vim
$ cd ~
$ git clone https://github.com/vim/vim.git
$ cd vim
$ ./configure --prefix=/opt/local
$ make
$ sudo make install
# Add the binary to your path, ahead of /usr/bin
$ echo 'PATH=/opt/local/bin:$PATH' >> ~/.bash_profile
# Reload bash_profile so the changes take effect in this window
$ source ~/.bash_profile"

Di atas akan menginstal VIM terbaru dengan opsi +clipboarddiaktifkan.

Sekarang Anda perlu mengatur clipboard sistem. Tambahkan baris berikut ke~/.vimrc

set clipboard=unnamed

Sekarang Anda dapat menarik teks ke papan klip sistem. Langkah-langkah di bawah ini menjelaskan cara menarik.

  1. Dalam mode perintah vim press v, ini akan mengalihkan Anda ke mode VISUAL.
  2. Gerakkan kursor untuk memilih teks atau baris yang perlu Anda salin.
  3. Press y, ini akan menyalin teks yang dipilih ke clipboard.
  4. Buka aplikasi eksternal apa saja dan CMD + vtempel.

Saya menggunakan MACBook Pro dengan macOS Mojave dan berfungsi di atas di dalamnya.


4

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


4
  1. Masukan set clipboard=unnameddi Andavimrc .
  2. Pilih apa yang ingin Anda salin Visual mode (Tekan v untuk masuk).
  3. Kembali ke Normal mode (Tekan escape [esc]), tekan y untuk menyalin.
  4. Jika Anda ingin menempelkan sesuatu dari clipboard OS, tekan p / P dalam Normalmode Vim .

4

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! :-)


3

Saya mengalami masalah karena 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 (yang mendukung clipboard) 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

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:

Lihat -> Izinkan Pelaporan Mouse

dari menu Terminal, Anda dapat menyalin ke clipboard menggunakan

command + c

lagi.


2

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:

map <C-c> y:e ~/clipsongzboard<CR>P:w !pbcopy<CR><CR>:bdelete!<CR>

Jika Anda ingin membaca detail tentang apa yang dilakukannya, Anda dapat membaca tentang ini di blog saya


1
Hati-hati pembeli. Di mac, ini memiliki efek aneh.
azatar

ini tampaknya tidak menyalin apa pun ke clipboard ketika menggunakan seperti yang diinstruksikan (di linux ubuntu 16.04, tidak ada dukungan clipboard), dan jika beberapa file dibuka dalam sesi vim, akan menutup tab tempat tindakan diambil (pilih visual dan Cc ).
calocedrus

2

Untuk beberapa keyboard internasional, Anda mungkin perlu menekan "+ Spaceuntuk mendapatkan" .

Jadi dalam hal ini Anda harus menekan "Space+yatau"Space*y


2

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).


1

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:

alias vim="/usr/local/Cellar/vim/8.0.1100_1/bin/vim"

dan sekarang aku emas


1

Solusi saya adalah meletakkan baris berikut ke .vimrc:

map <C-y> :w !xclip -sel c <CR><CR>

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.


1

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:

  1. pemetaan kunci yang menggunakan pbcopy : berfungsi pada versi lama vim yang dikirimkan bersama mac.

    Tambahkan vmap '' :w !pbcopy<CR><CR>ke ~ / .vimrc
    Sekarang Anda dapat memilih dan menekan secara visual ''(dua apostrof) untuk menyalin ke clipboard

  2. Instal versi vim yang lebih baru sehingga saya dapat mengakses solusi yang paling direkomendasikan di jawaban lain:

    brew install vim
    alias vim=/usr/local/bin/vim(harus menambahkan ini ke ~ / .bashrc Anda atau yang setara)
    Sekarang Anda dapat memilih dan menekan "+yyuntuk menyalin ke clipboard


solusi yang sangat bagus!
ABD

0

selectingdengan bantuan mousedanright-click copy bekerja dalam kasus saya.

Saya tidak ingin nomor baris dimasukkan, jadi saya :set nonumbersebelumnya copying.


bagaimana Anda bisa melakukannya di nerdTree
ji-ruh

Itu tidak ada hubungannya dengan vim dan secara eksklusif salinan berbasis terminal ke (X) clipboard.
Carlo Wood

Saya tidak yakin @ ji-ruh
Akash

0

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)


0

Shift+ Ctrl+ C jika Anda berada dalam mode grafis Linux, tetapi pertama-tama Anda harus memilih apa yang perlu Anda salin.

masukkan deskripsi gambar di sini

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.