Apakah mungkin menempel di mode insert di Vim?
Apakah mungkin menempel di mode insert di Vim?
Jawaban:
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. Ketik vim --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 OS xterm_clipboard
tidak berlaku.
*
register dapat disentuh dengan klik-tengah-mouse sedangkan +
copy / paste tradisional. standards.freedesktop.org/clipboards-spec/clipboards-latest.txt
Jika 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 .
: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 di vim
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.
esc + p
?
esc + p + i
dan jelas lebih mudah CTRL-R + "
CTRL-R "
. Misalnya, meskipun pengaturan vimrc dapat mengubah ini, menempelkan sesuatu di baris baru menggunakan CTRL-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, jadi
Ctrl-O "+p
juga dapat digunakan, misalnya.
Untuk informasi lebih lanjut, lihat dokumentasi dengan :h i_ctrl-r
Anda dapat menggunakan ini untuk menempel dari clipboard dengan Ctrlv:
set pastetoggle=<F10>
inoremap <C-v> <F10><C-r>+<F10>
Dan ini untuk menarik seleksi visual ke clipboard dengan Ctrlc:
vnoremap <C-c> "+y
Jika Anda juga ingin menggunakan clipboard secara default untuk viank yanking / paste ( y/ p) klasik dalam mode normal, berikut adalah opsi konfigurasi yang melakukannya:
set clipboard=unnamedplus
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:
set clipboard=unnamed
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
dan set clipboard=unnamed
untuk bekerja, Anda perlu menggunakan gvim atau vimx ( vim-X11
): Yang dikompilasi dengan +xterm_clipboard
. Anda bisa memasukkan ini ke .bashrc
alias Anda vim
dengan vimx
:
if [ -e /usr/bin/vimx ]; then
alias vim='/usr/bin/vimx'; # vim with +xterm_clipboard
fi
Anda dapat mengetahui apakah vim Anda memiliki +xterm_clipboard
informasi yang disediakan oleh vim --version
.
: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).
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).
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.
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:
source $VIMRUNTIME/mswin.vim
Di Linux saya tidak ingat bagaimana saya melakukannya. Sepertinya saya mungkin menghapus beberapa baris dari file .vimrc default.
Peta khusus sepertinya cocok untuk kasus ini. Ini yang saya gunakan untuk menempelkan item yang ditarik di mode insert:
inoremap <Leader>p <ESC>pa
Saya Leader
kunci di sini adalah \
; ini berarti menekan \p
dalam mode sisipkan akan menempelkan item / baris yang sebelumnya ditarik.
Cukup tambahkan peta:
" ~/.vimrc
inoremap <c-p> <c-r>*
restart vim dan ketika menekan Crtl+p
dalam mode insert, teks yang disalin akan disisipkan