我怎样才能使用CamelCase启用Vim搜索

Tho*_*enz 19 vim

是否有一个vim插件,脚本或功能,允许扩展vim搜索,以便在我连续输入大写字母时匹配骆驼字的单词?

这是一个澄清的例子:

让我们说我在寻找WordInQuestion.

我希望能够只是键入/wiq才能找到它.

作为一个额外的奖励,如果我能通过getWordInQuestion键入找到/gwiq这意味着我要找的单词的第一个字母可能是小写,那将是很好的.

ib.*_*ib. 13

可以通过Vim脚本轻松实现所描述的功能.让我们考虑以下自定义映射.

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
Run Code Online (Sandbox Code Playgroud)