Apakah mungkin menempel di mode insert di Vim?
385
Saat dalam mode masukkan tekan CTRL-R {register}
Contoh:
CTRL-R *
akan memasukkan konten clipboard CTRL-R "
(register yang tidak disebutkan namanya) menyisipkan penghapusan atau penarikan terakhir. Untuk menemukan ini dalam jenis bantuan vim :h i_ctrl-r
CTRL-R *
hanya berfungsi di GVIM atau versi yang dikompilasi untuk berinteraksi dengan x. Ketikvim --version
dan cari+xterm_clipboard
. Jika Anda tidak memilikinya, Anda memerlukan versi vim yang berbeda. ( vim.wikia.com/wiki/Accessing_the_system_clipboard )+clipboard
, tetapi jika Anda memilikinya+xterm_clipboard
Anda tetap harus memilikinya. Pada beberapa OSxterm_clipboard
tidak berlaku.*
register dapat disentuh dengan klik-tengah-mouse sedangkan+
copy / paste tradisional. standards.freedesktop.org/clipboards-spec/clipboards-latest.txtJika Anda tidak ingin Vim untuk mangle format dalam yang masuk teks disisipkan, Anda juga mungkin ingin mempertimbangkan untuk menggunakan:
:set paste
. Ini akan mencegah Vim dari tab kembali kode Anda. Saat selesai menempel,:set nopaste
akan kembali ke perilaku normal.Dimungkinkan juga untuk mengganti mode dengan satu tombol, dengan menambahkan sesuatu seperti
set pastetoggle=<F2>
.vimrc Anda. Rincian lebih lanjut tentang pengubahan indentasi otomatis ada di sini .sumber
:set nopaste
akan menonaktifkan mode tempel:set paste!
Mungkin mengatur pasta sangat dekat dalam sejarah perintah Anda, jadi Anda cukup menekan ':', lalu panah-ke atas dan tambahkan '!'.:set paste!
Terima kasih :)!
pada akhir perintah divim
matikan perintah dan mematikan. Dengan cara ini Anda tidak perlu mengetik,:set nopaste
Anda bisa menggulir ke atas melalui riwayat Anda dan menjalankan perintah yang sama (:set paste!
) lagi.Tidak, tidak langsung.Apa yang dapat Anda lakukan adalah dengan cepat keluar dari mode insert untuk operasi mode normal tunggal Ctrl-Odan kemudian paste dari sana yang akan berakhir dengan menempatkan Anda kembali dalam mode insert.Kombo Kunci: Ctrl-O p
EDIT: Menarik. Tampaknya ada cara seperti yang dilakukan beberapa orang.
sumber
esc + p
?esc + p + i
dan jelas lebih mudahCTRL-R + "
CTRL-R "
. Misalnya, meskipun pengaturan vimrc dapat mengubah ini, menempelkan sesuatu di baris baru menggunakanCTRL-O p
membuat lekukannya hilang.Saat berada dalam mode penyisipan, Anda dapat menggunakan
Ctrl-R {register}
, tempat pendaftaran dapat:+
untuk clipboard,*
untuk papan klip X (teks yang dipilih terakhir dalam X),"
untuk register tanpa nama (penghapusan terakhir atau mencabut di Vim),:h registers
).Ctrl-R {register}
menyisipkan teks seolah-olah itu diketik.Ctrl-R Ctrl-O {register}
menyisipkan teks dengan indentasi asli.Ctrl-R Ctrl-P {register}
menyisipkan teks dan otomatis indentasi itu.Ctrl-O
dapat digunakan untuk menjalankan perintah mode normal sebelum kembali ke mode penyisipan, jadiCtrl-O "+p
juga dapat digunakan, misalnya.Untuk informasi lebih lanjut, lihat dokumentasi dengan
:h i_ctrl-r
sumber
Anda dapat menggunakan ini untuk menempel dari clipboard dengan Ctrlv:
Dan ini untuk menarik seleksi visual ke clipboard dengan Ctrlc:
Jika Anda juga ingin menggunakan clipboard secara default untuk viank yanking / paste ( y/ p) klasik dalam mode normal, berikut adalah opsi konfigurasi yang melakukannya:
Dengan konfigurasi ini, Anda dapat mis. Mencabut pertama dalam mode normal dan kemudian menempel dengan Ctrlvdalam mode insert. Anda juga dapat menempelkan teks dari instance vim yang berbeda dan aplikasi yang berbeda.
Pilihan lain adalah:
Kemudian Anda akan bisa memilih sesuatu dengan menyeret mouse di lingkungan X Anda dan menempelkannya ke vim sesudahnya. Tetapi (karena alasan tertentu) Anda tidak akan dapat menarik sesuatu ( y) di Vim dan di shiftinserttempat lain sesudahnya, yang mungkin sangat terbatas.
Vim docs tentang ini: http://vim.wikia.com/wiki/Accessing_the_system_clipboard
Untuk menempel dari register khusus, Anda dapat mengikuti jawaban lain :). Jawaban ini terutama tentang mengintegrasikan Vim dengan clipboard sistem Anda.
Perhatikan bahwa untuk
set clipboard=unnamedplus
danset clipboard=unnamed
untuk bekerja, Anda perlu menggunakan gvim atau vimx (vim-X11
): Yang dikompilasi dengan+xterm_clipboard
. Anda bisa memasukkan ini ke.bashrc
alias Andavim
denganvimx
:Anda dapat mengetahui apakah vim Anda memiliki
+xterm_clipboard
informasi yang disediakan olehvim --version
.sumber
:set paste
dan Bizantium<leader><leader> * y
bahkan sangat diinginkan? Tidak terdengar terlalu berkomitmen, saya benar-benar ingin tahu filosofi vim apa ini mencerminkan, atau jika itu hanya kemalangan historis.inoremap <S-Insert> <F12><C-r>+<F12>
(saya menggunakan F12 sebagai pastetoggle). Terima kasih.Jika Anda mengatur Vim untuk menggunakan clipboard sistem (
:set clipboard=unnamed
), maka teks apa pun yang Anda salin di Vim dapat ditempel menggunakan Shift+ Insert. Shift+ Inserthanyalah kombinasi tombol tempel selebar OS ( Ctrl+ Insertadalah 'salinan' yang sesuai).sumber
p
menempelkan teks di clipboard?Shift + Insert
untuk menempelkan teks, kita harus dalam mode sisipkan.Anda juga dapat menggunakan tombol tengah mouse untuk menempel dalam mode sisipkan (hanya Linux).
sumber
Anda dapat masuk ke
-- INSERT (past) --
mode melalui:atau
:set paste
dan memasuki mode masukkan (:set nopaste
untuk menonaktifkan)sekali dalam
-- INSERT (past) --
mode cukup gunakan fungsi tempel sistem Anda (mis. CtrlShiftvdi Linux, Cmdvdi Mac OS).Strategi ini sangat berguna ketika menggunakan vim over ssh.
sumber
Iya. Di Windows Ctrl+ Vdan di Linux menekan kedua tombol mouse hampir secara bersamaan.
Di Windows saya pikir baris ini di _vimrc saya mungkin melakukannya:
Di Linux saya tidak ingat bagaimana saya melakukannya. Sepertinya saya mungkin menghapus beberapa baris dari file .vimrc default.
sumber
Tempel di Sisipkan Mode
Peta khusus sepertinya cocok untuk kasus ini. Ini yang saya gunakan untuk menempelkan item yang ditarik di mode insert:
Saya
Leader
kunci di sini adalah\
; ini berarti menekan\p
dalam mode sisipkan akan menempelkan item / baris yang sebelumnya ditarik.sumber
Cukup tambahkan peta:
restart vim dan ketika menekan
Crtl+p
dalam mode insert, teks yang disalin akan disisipkansumber