Подтвердить что ты не робот

Как я могу использовать CamelCase Vim Search

Есть ли vim-плагин, script или функция там, которая позволяет расширять vim-поиск, чтобы соответствовать словам с верблюжьей линией, когда я печатаю заглавные буквы подряд?

Вот пример, поясняющий:

Скажем, я ищу WordInQuestion.

Я хотел бы иметь возможность просто набрать /wiq, чтобы найти его.

В качестве дополнительного бонуса было бы неплохо, если бы я смог найти getWordInQuestion, набрав /gwiq, что означает, что первая буква слова, которое я ищу, может быть строчной.

4b9b3361

Ответ 1

Описанная функциональность может быть легко реализована с помощью Vim script. Рассмотрим следующие пользовательские сопоставления.

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

Ответ 2

Есть хороший плагин под названием fuzzy finder, который может быть полезен.

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

FuzzyFinder предоставляет удобные способы быстрого buffer/file/command/bookmark/tag, который вы хотите. FuzzyFinder выполняет поиск с помощью нечеткой/частичной картины, такой как случай верблюда.