有一個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