2009-10-13 10 views
19

atomik operasyon Vim tek bir karakter ekleme:Yapımı uzun vim bu çok yararlı kısayol kullandım

nmap <space> i <esc>r 

bu ben boşluk basarsanız o f, örneğin, o olacak demektir Belirtilen konumda tek bir karakter f girin. Sonra basın uzayf basın ve sonra başka bir yere gitmek eğer

maalesef ancak bu, yani atomik değildir., ben r f değil uzay f eşdeğer olsun.

tüm bunlar mantıklıdır, fakat şu soru şu: bu atomik yapmanın bir yolu var, bu yüzden . 'insert karakteri' işlemini tekrar edecektir ve geri almanın hepsi de bunu tek bir işlem olarak ele alacaktır.

cevap

11

Müthiş okuyun! Michael'ın cevabı bana eklentimi bitirmek için ihtiyacım olan eklentiye işaret etti, şimdi istediğini yapabilirsin - bunu nasıl yaşlandıracağımı anlamaya çalışıyordum!

1)

2)my plugin

3) sizin .vimrc için bir eşleme ekleyin yükleyin:

nnoremap <space> :<C-U>call InsertChar#insert(v:count1)<CR> 
+0

Bu, beklediğimden çok daha karmaşık, ama imleci kırmızı (ki bu harika bir dokunuş) yapıyor, kaçışla iptal edilmesine izin veriyor ve sadece burada kullandığım şey olabilir ... – Peter

+1

Sadece bunu keşfettim bugün, ama yine de söylemek istiyorum - bu hayat değiştirecek! Teşekkür ederim! – Umang

2

Üzgünüm, sorununuza belirli bir yanıt veremiyorum ama 'u kullanma eğiliminde olduğumu not edeceğim. Çok fazla komut üretmem gerektiğinde anahtar (örneğin, f 5 veya daha fazla kez eklemek istiyorum).

Burada durum böyleyse, makronuzu kullanmanın sakıncasına değdiğini düşünmüyorum. Eğer makro ziyade ifdaha esc ve atomik olduğunu işlemini kullanarak bir kez tuşa kurtarmak böylece daha sonra olabilir. Kalbinizin içeriğine.

Makro olmayan bir sürümü kullanırsam, bunu tekrarlamak istiyorum.

P.S. Biliyorsun, < kbd> etiketini oldukça beğeniyorum :-)

+1

ve bu benim şimdiki davranıştır - ama bu kısayolu kullanarak ben hepsini kullanmak mümkün yapmak istiyorum çok uygundur zaman. anahtarları kaydetme hakkında daha az ve tutarlılık hakkında daha fazla :) – Peter

+0

+1 rastgele postscript için (ki benimle alay etmiyorsun varsayalım :)) – Peter

+0

Hayır, daha önce hiç kullanmadım, kullanma eğilimindeyim bloklama işaretlemesi, ancak kbd, tuşlar için daha iyidir. – paxdiablo

3

Bu eklenti komut dosyasına bir göz atmak isteyebilirsiniz. Haritanızı yapılandırılabilir, böylece desteklenebilir. destekleyici dokümanlar

http://www.vim.org/scripts/script.php?script_id=2136

+0

bunun için çok teşekkürler. çok fazla php'nin yaklaşımı oldukça iyi görünüyor ve buna dayanıyor. – Peter

7

sizin için bu çalışır mı?Bu millet tarafından önerildiği gibi

noremap <silent> <space> :exe "normal i".nr2char(getchar())<CR> 
+0

İyi ve kesinlikle olası bir çözüm. Bu yaklaşımın bir dezavantajı, boşluk tuşuna bastığınızda imlecin kaybolmasıdır, böylece karakteri eklediğiniz yeri izlersiniz. @too çok php'nin yaklaşımı çok daha karmaşıktır, ancak imleci yerinde bırakmak avantajına sahiptir. – Peter

+2

Hızlı ekleme yaparsanız, imleç yokluğu bu sıkıntı değil. –

+2

Bu harika! Bağlanmamış olan, kullandım aynı şeyi kullandım, ve Kim K ile başlıyor. Bence bu, orijinal geliştiricilerin anahtarları nasıl eşleştirdiğine inanıyorum. –