Apakah ada cara untuk memasukkan satu karakter dan kemudian keluar dari mode memasukkan?


10

Ketika saya membaca teks dan, misalnya, menambahkan backtick di sekitar kata atau kutipan tertentu atau apa pun, sangat menjengkelkan bahwa saya harus menekan Esc atau Ctrl- [setelah setiap sisipan. Sisipan (dan tambahkan) berbeda, jadi .tidak banyak membantu.

Apakah ada sesuatu yang mirip dengan ryang kembali ke mode normal setelah satu karakter — tetapi menggunakan mode insert bukan mode ganti?


3
Anda mungkin harus mempertimbangkan untuk menggunakan (atau memperluas) plugin vim-surround , untuk bekerja pada teks dengan cara yang lebih bermakna .
VanLaser

Jawaban:


11

Jika tidak (saya belum melihat), Anda dapat menggunakan pemetaan ini di .vimrc:

nnoremap <C-I> i <ESC>r

Ia imemasukkan, menempatkan spasi, ESCkera, dan memulai satu replace huruf tunggal . Ini dipetakan ke CtrlI.

Ini adalah retasan, dan akan meninggalkan ruang menggantung jika Anda menekan escape sebelum Anda mengetik huruf - tetapi lebih baik daripada tidak sama sekali!


1
Tidak buruk ... Saya mungkin akan menggunakannya jika tidak ada yang menemukan sesuatu yang lebih baik. :)
Wildcard

2
@Wildcard Saya tidak menyadari betapa saya benar-benar mengalami kasus penggunaan ini tanpa menyadarinya. Pertanyaan bagus :) Saya juga menambahkannya ke vimrc saya sendiri.
Qix - MONICA DISALAHKAN

2
Saya menghabiskan sebagian besar hari memperbaiki sekelompok penurunan harga. Miring, kode sebaris, lekukan header, hyperlink ... semuanya menyisipkan satu karakter. :) Sebenarnya solusi Anda sempurna; Saya akan mulai menggunakannya sekarang.
Wildcard

2
Kerugian: Ini tidak dapat diulang dengan .perintah. :(
Wildcard

1
@Wildcard sayangnya, setelah melakukan sedikit riset, tidak ada cara untuk membuat cabang pengulangan manual .kecuali Anda menggunakan repeat.vim.
Qix - MONICA DISALAHKAN

0

Untuk memasukkan karakter di akhir kata (alih-alih pada posisi kursor), gunakan

nnoremap <C-a> a <ESC>r

Peta ini untuk Ctrl + a, Anda dapat memetakannya ke hal lain tentu saja.

Saya memiliki dua di .vimrchanya jadi saya tidak terlalu sibuk :)

" Insert char at cursor position
nnoremap <C-i> i <ESC>r
" Append char after cursor position
nnoremap <C-a> a <ESC>r
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.