Vim'e Tek Karakter Eklensin mi?


25

Vim'de (7.2), rtek bir karakteri diğeriyle değiştirmek için normal mod komutu vardır . Örneğin, yazmak rXimlecin altındaki bir karakterin yerini alacak Xve sizi normal moda döndürecektir.

Tek bir karakter eklemek ve ardından normal moda geri dönmek için normal mod komutu var mı?



Yanıtlar:


6

MelBurslan, bu özelliğin yerel olarak mevcut olmadığı doğrudur, ancak kullanıcı tanımlı bir komut oluşturmak, onu oluşturmanın yolu değildir. Birkaç dakika uğraştım ve bununla geldim:

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

Hangi bir kayıttan "metin" koyarak, bu durumda "ifade" kayıt içeren bazı Vim hile kullanır. Kayıt defterine takılan ifade " nr2char(getchar())" şeklindedir ve bu tek bir karakter dizesi döndürür.

Eşlemeyi bu şekilde oluşturmamın nedeni, bir eşlemenin "yarıda" kullanıcı girişi almanın zor olması ve öngörülemez şekilde davranabilmesidir; bu eşleme bile kullanıcının bir karakter yazmasını beklerken imleci durum alanına bırakacaktır.


8

Aşağıdaki yorumlarda bize bu müthiş cevabı verdiği için Johnny'ye teşekkürler:

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

Bu, Control + i'yi tek bir karakter eklemek için eşleştirir ve bunu çok özlü yapar.

Vimrc dosyanızda, bu şöyle görünecektir:

nnoremap <C-i> i_<Esc>r

Haritamı boşluk kullanacak şekilde değiştirdim ve kendi anahtar kelimelerinizi tercih ettiğiniz anahtarlarla değiştirebilirsiniz:

nnoremap <Space> i_<Esc>r

1
Bu en özlü ve basit cevap.
Dylanthepiguy

4

Bildiğim kadarıyla, vi editörünün yaygın olarak dağıtılmış enkarnasyonunda böyle bir işlev yoktur, ancak vim'in özel komutlar oluşturma olanağı vardır. Daha önce burada tartışılmıştır: bu konuda

Yapmak istediğinizi yaparak özel komutunuzu oluşturabilirsiniz.


3
Tek bir karakter eklemek için Ctrl-I eşleme komutu: ": nmap <Ci> i_ <esc> r"
Johnny

2

Bunu yapmanın basit bir yolu Kes xve Koy pkomutlarını kullanmaktır. Demek ki *eklemek istediğiniz karakter budur. Kullanarak yerleştirin i * Esc. Sonra vur x. Bu karakteri kesecek. Şimdi, ptek karakteri koymak için vurabilirsiniz . O karaktere 300 kez eklemeniz gerekirse, bu durumda: 300p.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.