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

时间:2011-12-30 02:37:54

标签: vim

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

这是一个澄清的例子:

让我们说我正在寻找WordInQuestion

我希望能够输入/wiq才能找到它。

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

有一个很好的插件叫做模糊查找器,可能很有用。

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

FuzzyFinder提供快速到达的便捷方式 你想要的缓冲区/文件/命令/书签/标签。 FuzzyFinder用a搜索 模糊/部分模式,如驼峰案例。