vim 快速查詢功能
轉載自:https://blog.csdn.net/ballack_linux/article/details/53187283
vim有強大的字串查詢功能。
我們通常在vim下要查詢字串的時候, 都是輸入 / 或者 ? 加 需要查詢的字串來進行搜尋,比如想搜尋 super 這個單詞, 可以輸入 /super 或者 ?super, 兩者的區別是前者是從上往下搜尋,後者是從下往上搜索。
那麼如果我想搜尋本行中某個單詞,並且這個單詞很長的時候, 手動輸入該字串是非常麻煩的, 當然可以使用模糊匹配(如* 或 ?)來做, 不過這樣可能搜得到很多其他的,不完全匹配的字串。
可以使用如下方式來實現快速查詢:
1, 最快的方式是讓游標停留在想要查詢的單詞的任意一個字母上面, 然後輸入Shift + * ,即可快速選中該單詞,並且可以通過 n 或 N 進行上一個或下一個的匹配。
2, 讓游標停留在單詞的第一個字母上, 然後輸入yw拷貝該單詞, 然後輸入 / (Ctrl + R) 0 (即 /”0),回車, 就查詢到了第一個匹配的單詞, 並且可以通過 n 或 N 進行上一個或下一個的匹配。
解釋一下:
Ctrl + r 是指使用暫存器 , 你會發現先輸入/ , 然後輸入 Ctrl + r , 會立刻變為 “ , 即暫存器的字首, 然後 ”0 就可以理解了吧? 合起來就是 /“0, 就是查詢剛才複製的那個單詞, 不懂的請檢視上一個帖子:
http://blog.csdn.net/ballack_linux/article/details/53078836
3, 還有一種方式, 和第二種方式差不多,不過是將單詞拷貝到系統剪貼簿, 然後再從系統剪貼簿拿出來。 即選中需要查詢的單詞, 然後輸入 “+y, 然後輸入/(Shfit + Ctrl + v), 就查詢到了第一個匹配的單詞, 並且可以通過 n 或 N 進行上一個或下一個的匹配。
以上, 最方便的還是第一種, 高效快捷, 值得推薦!!
升級版!!
首先安裝ag搜尋工具, 輸入如下命令:
sudo apt-get install silversearcher-ag
接著在~/.vimrc中新增以下內容:
" Set mapleader
let mapleader = ","
" for easy using sliver search
nmap <leader>f :norm yiw<CR>:Ag! -t -Q "<C-R>""
" Locate and return character "above" current cursor position.
function! LookUpwards()
let column_num = virtcol('.')
let target_pattern = '\%' . column_num . 'v.'
let target_line_num = search(target_pattern . '*\S', 'bnW')
if !target_line_num
return ""
else
return matchstr(getline(target_line_num), target_pattern)
endif
endfunction
imap <silent> <C-Y> <C-R><C-R>=LookUpwards()<CR>
然後任意開啟一個檔案, 比如下圖中的dhd_linux.c檔案:
將游標放在函式dhd_module_init上,通過快捷鍵“ , + F ”(因為上面設定了mapleader是字元‘,’),即可在介面下方看到本路徑下所有包含dhd_module_init的宣告和呼叫:
此時游標是在下方列出的方框內, 選擇任意一行, 按Enter或 字母 “o” 即可跳轉, 非常方便!!