Masukkan Karakter Tunggal di Vim?


25

Di Vim (7.2), ada perintah mode normal runtuk mengganti satu karakter dengan yang lain. Misalnya, mengetik rXakan menggantikan satu karakter di bawah kursor dengan Xdan kemudian mengembalikan Anda ke mode normal.

Apakah ada perintah mode normal untuk memasukkan satu karakter dan kemudian kembali ke mode normal?



Jawaban:


6

MelBurslan benar bahwa fitur ini tidak ada secara asli, tetapi membuat perintah yang ditentukan pengguna tidak benar-benar cara untuk membuatnya. Saya bermain-main selama beberapa menit dan membuat ini:

:nmap <silent> ,s "=nr2char(getchar())<cr>P

Yang menggunakan beberapa tipuan Vim yang melibatkan "menempatkan" teks dari register, dalam hal ini register "ekspresi". Ekspresi yang dicolokkan ke register adalah " nr2char(getchar())" yang akan mengembalikan string karakter tunggal.

Alasan saya membangun pemetaan dengan cara ini adalah karena mendapatkan input pengguna "di tengah jalan" pemetaan itu rumit dan dapat berperilaku tak terduga; bahkan pemetaan ini akan menurunkan kursor ke area status sambil menunggu pengguna mengetik karakter.


8

Terima kasih kepada Johnny karena telah memberi kami jawaban luar biasa ini di komentar di bawah:

":nmap <C-i> i_<Esc>r"

Itu memetakan Control + i untuk memasukkan satu karakter, dan itu melakukannya dengan sangat singkat.

Di file vimrc Anda, ini akan terlihat seperti:

nnoremap <C-i> i_<Esc>r

Saya mengubah pemetaan saya untuk menggunakan ruang, dan Anda dapat mengubah milik Anda ke kunci pilihan Anda:

nnoremap <Space> i_<Esc>r

1
Ini adalah jawaban yang paling ringkas dan sederhana.
Dylanthepiguy

4

Sejauh yang saya tahu, tidak ada fungsi seperti itu dalam inkarnasi vi editor yang didistribusikan secara luas tetapi, vim memiliki fasilitas untuk membuat perintah khusus. Sebelumnya telah dibahas di sini: di utas ini

Anda mungkin dapat membuat perintah khusus Anda melakukan apa yang ingin Anda lakukan.


3
Inilah perintah untuk memetakan Ctrl-I untuk menyisipkan satu karakter: ": nmap <Ci> i_ <esc> r"
Johnny

2

Cara sederhana untuk melakukan ini adalah menggunakan perintah Cut xand Put p. Katakan itu *adalah karakter yang ingin Anda masukkan. Masukkan menggunakan i * Esc. Lalu pukul x. Itu akan memotong karakter. Sekarang, Anda dapat menekan puntuk meletakkan karakter tunggal. Jika Anda harus memasukkan karakter yang 300 kali, Anda dapat mengetik: 300p.

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.