1. 程式人生 > >vim 快速查詢功能

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” 即可跳轉, 非常方便!!