有一个Vim插件,脚本或功能,在那里,使得Vim搜索,以便当我连续类型的大写字母来匹配骆驼套管词进行扩展?我怎样才能驼峰启用Vim的搜索
这里澄清一个例子:
比方说我要找WordInQuestion
。
我希望能够以发现它只需键入/wiq
。
作为一个额外的好处,如果我能通过键入/gwiq
找到getWordInQuestion
这将意味着我要查找的单词的第一个字母可能是小写字母。
有一个Vim插件,脚本或功能,在那里,使得Vim搜索,以便当我连续类型的大写字母来匹配骆驼套管词进行扩展?我怎样才能驼峰启用Vim的搜索
这里澄清一个例子:
比方说我要找WordInQuestion
。
我希望能够以发现它只需键入/wiq
。
作为一个额外的好处,如果我能通过键入/gwiq
找到getWordInQuestion
这将意味着我要查找的单词的第一个字母可能是小写字母。
所描述的功能可以通过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
有一个很好的插件称为模糊查找器,可能会有用。
http://www.vim.org/scripts/script.php?script_id=1984
FuzzyFinder提供了便捷的方式快速到达 缓存/文件/命令/书签/你想要的标签。 FuzzyFinder使用模糊/部分模式(如骆驼案例)搜索 。
谢谢,这工作。我改变了一行以匹配部分词语,例如 设@/= '\ C \ <':myWordInQuestion仍然应该经由WIQ匹配。 “\\ w *”。 join(map(l,'v:val。“\\ w *”'),'')。 “\>” – 2011-12-30 03:19:14
@Thorsten:在这种情况下,最好改变该行如下:'让@/=“\ C”。 join(map(l,'v:val。“[0-9a-z _] *”'),'')。 '\>''。 – 2011-12-30 03:32:14
谢谢,最后有没有办法让myWordInQuestion与mwiq匹配?例如。我搜索的单词中的第一个字母(只有那一个)可能是小写字母? – 2011-12-30 03:39:09