it-swarm.asia

Bagaimana membuat cut / copy / paste di GVim di Ubuntu berfungsi dengan Ctrl + X, Ctrl + C, Ctrl + V?

Secara default, pintasan cut/copy/paste di GVim di Ubuntu adalah:

 Potong "+ x 
 Salin" + y 
 Tempel "+ gP 

Saya ingin menggunakan kombo tombol kontrol di GVim, seperti yang saya gunakan di Firefox dan aplikasi gnome lainnya. Bagaimana cara mengkonfigurasi GVim agar berfungsi seperti aplikasi Gnome lainnya?

52
pcapademic

Tambahkan baris berikut ke _vimrc Anda atau .vimrc Anda

source $VIMRUNTIME/mswin.vim
behave mswin

Namun berhati-hatilah, mode visual CTRL-Q bukan CTRL-V.

Untuk gambaran umum apa yang dilihat oleh mswin.vim --- mswin.vim sourcode . Ini dikomentari dengan sangat baik dan jika beberapa perintah tidak jelas Anda dapat dengan mudah mencarinya dalam bantuan vim.

Berikut ini adalah ikhtisar singkat yang disusun dari sumber:

  • backspace dan tombol kursor membungkus ke baris sebelumnya/berikutnya
  • CTRL-X dan SHIFT-Del adalah Cut
  • CTRL-C dan CTRL-Insert adalah Copy
  • CTRL-V dan SHIFT-Insert adalah Tempel
  • Gunakan CTRL-Q untuk melakukan apa yang digunakan CTRL-V
  • Gunakan CTRL-S untuk menyimpan, juga dalam mode Sisipkan
  • CTRL-Z adalah Undo; tidak dalam cmdline
  • CTRL-Y adalah Redo (meskipun tidak diulang); tidak dalam cmdline
  • Alt-Space adalah menu Sistem
  • CTRL-A adalah Select all
  • CTRL-Tab adalah jendela Berikutnya
  • CTRL-F4 adalah Tutup jendela

Atas permintaan Nippysaurus: Saya menaruh berikut ini di .gvimrc saya untuk memperlihatkan Ctrl-V di samping Tempel di menu:

unmenu! Edit.Paste
aunmenu Edit.Paste
nnoremenu 20.360 &Edit.&Paste<Tab>Ctrl-V        "+gP
cnoremenu    &Edit.&Paste<Tab>Ctrl-V        <C-R>+

Saya tidak mengujinya secara menyeluruh, hanya memeriksa cepat apakah itu sesuai dengan yang saya harapkan. Bekerja untuk saya, semoga berhasil untuk Anda ;-)

50
Ludwig Weinzierl

Jika Anda ingin Cut/Salin/Tempel berfungsi menggunakan tombol pintas "standar", tetapi Anda tidak ingin mengubah opsi konfigurasi lainnya di gvim, coba tambahkan berikut ini ke ~/.vimrc.

vmap <C-c> "+yi
vmap <C-x> "+c
vmap <C-v> c<ESC>"+p
imap <C-v> <C-r><C-o>+

Rekatkan hanya berfungsi dalam mode Visual dan sisipkan, sehingga Anda tidak perlu khawatir tentang konflik dengan Ctrl-V dan Mode Visual blockwise. Ini bukan masalah, karena Salin dan Potong membuat Anda masuk ke mode penyisipan, sehingga Anda dapat segera menempel setelahnya. Jika Anda mencobanya, Anda akan merasakannya benar-benar alami.

Saya datang dengan konfigurasi ini setelah beberapa iterasi tweaking, dan saya pikir itu "sempurna" sekarang. Jika Anda bahkan sedikit tidak puas dengan konfigurasi salin/tempel Anda saat ini, coba ini dan saya yakin Anda akan menyukainya.

44
Cogan

Jika Anda ingin mempertahankan perilaku vim normal tetapi juga memungkinkan penggunaan clipboard sistem yang kurang rumit, lihat Mengakses clipboard sistem . Jika Anda ingin gvim menggunakan clipboard sistem sebagai buffer default (jadi x, y, p, dll. Perintah menggunakan clipboard) lalu tambahkan baris berikut ke vimrc Anda:

set clipboard=unnamed

Saya pribadi menggunakan buffer jauh lebih dalam vim daripada antara vim dan sistem; jadi saya lebih suka memiliki jalan pintas yang sedikit lebih rumit daripada clipboard sistem saya terus-menerus musnah. Tapi itu bagus bahwa ada pilihan bagi mereka yang lebih suka.

9
jtb

Saya pikir Anda dapat menambahkan ini dengan perintah: imap (mencobanya hanya dengan Ctrl + X di Windows yang berfungsi, menekan ctrl + c tampaknya membatalkan perintah sehingga Anda mungkin harus melakukannya di vimrc).

:imap <C-X> "+x
:imap <C-C> "+y 
:imap <C-V> "+gP

Jika Anda menambahkannya ke ~/.vimrc Anda hanya perlu menghapus: di depan imap.

imap hanya menambahkan binding dalam mode insert, jadi Anda mungkin ingin mengubahnya menjadi hanya map atau yang lainnya. Lihatlah :help mapmode untuk mempelajari lebih lanjut tentang memetakan ulang dan membuka pemetaan barang.

Semoga berhasil!

2
Peter Thorin