2012-03-02 31 views
5

Anlıyorum gibi w 3 gruplara bölmeyi metinle kelime sınırlarını tanır (semboller)Vim'de, özel bir sözcük sınır hareketi nasıl yapılır? <code>iskeyword</code> ayarında belirtilen</p> <p>1) karakter (alfabetik, rakam ve alt çizgi)</p> <p>2) olmayan diğer yazdırılabilir karakterler:

3) boşluk karakterleri

bunu sadece bir sonraki gruba 1 gider o yüzden özelleştirmek istiyorum sonraki grup 1 veya grup 2. gider w her basışınızda üstünden atlayarak "sembol wo rds".

Ne neredeyse çalışır şudur: iskeyword karakter sınıfını \k kullanır

nnoremap w /\k\+<CR>

. Ama çirkin bir şey çünkü bir arama yapmamı simüle ediyor, bu da vurgularımı değiştiriyor, arama geçmişimi karıştırıyor ve başka kim bilir. Bu çalışma w komutu normalde olduğu gibi "temiz" yapmak için bir yolu var mı?

nnoremap w /\k\+<CR>:nohl<CR>:call histdel("search", -1)<CR> 

Bu çirkin ve vurgulama yapabilir:

+0

oldukça istediğini takip etmezler. W yardımcı mı? İki karakter grubuna sahiptir: beyaz boşluk ve beyaz boşluk, bu yüzden her zaman sonraki boşluktan sonraki ilk karaktere gider. –

+0

Hayır, pek işe yaramıyor: 'Alfabetik karakterlerle birlikte sembol karakterlerini toplar. İstediğim şey, etkili bir şekilde, boşluklarla sembollere vurmaktır, böylece semboller hala kelime sınırları oluştururken atlanır. – Ein

cevap

0

ben bile \k bu bağlamda ne anlama geldiğini bilmiyorum, ama iki acil sorunları size sunuyoruz çözebilir .. Burada çok yardım olmayabilir Titreme, ama belki bu size doğru yönde işaret eder.

3

Sana xmap, smap ve aile a.k.a, operator pending mode aradığınız düşünüyorum.

Bunları in other answers on SO bazı örnekler yaptık:

en alakalı örnek

Ayrıca benzer ve yararlı olabilecek bazı teknikler bulacaksınız Eğer

+1

Bunu hatırlıyorum. Mükemmel cevap. – lucapette

+0

Operatörler için uygun bir hareket yapmak harika ve SO cevabı bana yeni şeyler öğretti. Ama gerçekten hareket etmek "Bana bir arama yaptıktan" simüle edilmektedir beni mutsuz ediyor ve benim tekabül 'xmap' ve' omap' tanımlamak için bunu yapmak zorunda ne. – Ein

+0

@Nuno: Kayıt için, dokümanlar bir vimscript (fonksiyonu) içinden aramaya ** ** için 'geçerli' arama deseni etkilemek vs arama geçmişini olmayacağını söylüyorlar (Neyse, herhangi _other_ yan etkiler sadece restore edilebilir aynı fonksiyonu) – sehe