2011-12-30 27 views
19

Vim eklentisi, komut dosyası veya işlev var, büyük harfleri yazarken deve harfli sözcükleri eşleştirmek için vim aramasının genişletilmesine izin veren bir vim eklentisi var mı?CamelCase'i etkinleştirme Vim Araması

Ben WordInQuestion arıyorum Diyelim: Burada

netleştirmek için bir örnektir.

Bunu bulmak için /wiq yazabilmek istiyorum.

Ek bir bonus olarak, getWordInQuestion'u /gwiq yazarak bulabilirsem iyi olur, yani aradığım kelimenin ilk harfi küçük harf olabilir.

cevap

13

Tanımlanan işlevsellik, Vim komut dosyası aracılığıyla kolayca uygulanabilir. Aşağıdaki özel eşlemeleri göz önünde bulunduralım.

nnoremap <expr> <leader>/ SearchCamelCase('/') 
nnoremap <expr> <leader>? SearchCamelCase('?') 
function! SearchCamelCase(dir) 
    call inputsave() 
    let ab = input(a:dir) 
    call inputrestore() 
    let l = filter(split(toupper(ab), '\zs'), 'v:val =~ "\\w"') 
    if len(l) > 0 
     let l[0] = '[' . l[0] . tolower(l[0]) . ']' 
    end 
    let @/ = '\C\<' . join(map(l, 'v:val . "[0-9a-z_]*"'), '') . '\>' 
    return a:dir . "\r" 
endfunction 
+0

Teşekkürler, işe yaradı. Kısmi kelimeleri eşleştirmek için bir satırı değiştirdim, ör. myWordInQuestion hala wiki ile eşleştirilmelidir: let @/= '\ C \ <'. "\\ w *". katıl (harita (l, 'v: val. "\\ w *"'), ''). '\>' –

+0

@Thorsten: Bu durumda şu satırı aşağıdaki gibi değiştirmek daha iyidir: 'let @/= '\ C'. katıl (harita (l, 'v: val. "[0-9a-z _] *"'), ''). '\>' '. –

+0

Teşekkürler, nihayet, myWordInQuestion'u mwiq ile eşleştirmek için bir yol var mı? Örneğin. Aradığım kelimedeki ilk harf (ve sadece o bir tane) küçük harf olabilir mi? –

0

Fuzzy finder adında kullanışlı olabilecek güzel bir eklenti vardır.

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

FuzzyFinder hızla istediğiniz tampon/dosya/komut/imi/etiket ulaşmak için uygun yollar sağlar. FuzzyFinder, deve kutusu gibi bulanık/kısmi desenle arama yapar.