vim之快速查詢功能

2021-10-13 23:03:28 字數 1989 閱讀 3227

vim有強大的字串查詢功能。

我們通常在vim下要查詢字串的時候, 都是輸入 / 或者 ?  加 需要查詢的字串來進行搜尋,比如想搜尋 super 這個單詞, 可以輸入  /super  或者  ?super,  兩者的區別是前者是從上往下搜尋,後者是從下往上搜尋。

那麼如果我想搜尋本行中某個單詞,並且這個單詞很長的時候, 手動輸入該字串是非常麻煩的, 當然可以使用模糊匹配(如* 或 ?)來做, 不過這樣可能搜得到很多其他的,不完全匹配的字串。

可以使用如下方式來實現快速查詢:

1, 最快的方式是讓游標停留在想要查詢的單詞的任意乙個字母上面, 然後輸入shift + *,即可快速選中該單詞,並且可以通過 n  或  n 進行上乙個或下乙個的匹配。

2, 讓游標停留在單詞的第乙個字母上, 然後輸入yw拷貝該單詞, 然後輸入 / (ctrl + r) 0 (即 /」0),回車, 就查詢到了第乙個匹配的單詞, 並且可以通過 n  或  n 進行上乙個或下乙個的匹配。

解釋一下:

ctrl + r 是指使用暫存器 , 你會發現先輸入/ , 然後輸入 ctrl + r , 會立刻變為 「 , 即暫存器的字首, 然後 」0 就可以理解了吧? 合起來就是 /「0, 就是查詢剛才複製的那個單詞, 不懂的請檢視上乙個帖子:

3, 還有一種方式, 和第二種方式差不多,不過是將單詞拷貝到系統剪貼簿, 然後再從系統剪貼簿拿出來。 即選中需要查詢的單詞, 然後輸入 「+y, 然後輸入/(shfit + ctrl + v), 就查詢到了第乙個匹配的單詞, 並且可以通過 n  或  n 進行上乙個或下乙個的匹配。

以上, 最方便的還是第一種, 高效快捷, 值得推薦!!

公升級版!!

首先安裝ag搜尋工具, 輸入如下命令:

sudo  apt-get   installsilversearcher-ag

接著在~/.vimrc中新增以下內容:

" set mapleader

let mapleader = ","

" for easy using sliver search

nmap f :norm yiw:ag! -t -q """

nmap r :norm yiw:ag! -t "\b"\b"

" 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 =lookupwards()

然後任意開啟乙個檔案, 比如下圖中的dhd_linux.c檔案:

將游標放在函式dhd_module_init上,通過快捷鍵「+ f」(因為上面設定了mapleader是字元『,』),即可在介面下方看到本路徑下所有包含dhd_module_init的宣告和呼叫:

vim之快速查詢功能

vim有強大的字串查詢功能。我們通常在vim下要查詢字串的時候,都是輸入 或者 加 需要查詢的字串來進行搜尋,比如想搜尋 super 這個單詞,可以輸入 super 或者 super,兩者的區別是前者是從上往下搜尋,後者是從下往上搜尋。那麼如果我想搜尋本行中某個單詞,並且這個單詞很長的時候,手動輸入...

快速查詢演算法

在日常的演算法中,查詢是乙個經常涉及到的話題,而如何提高查詢的速度,也是很多程式設計師 軟體研究的話題。先看乙個例子。有這樣乙個資料型別s 學生姓名 name 性別 年齡 age 現在假設有這樣乙個需求 檔案a b中分別存放大量s 的記錄,需要將a b中重複的記錄去掉。我們用c 來演示今天的話題 t...

快速查詢素數

題目 時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 現在給你乙個正整數n,要你快速的找出在2.n這些數裡面所有的素數。輸入給出乙個正整數數n n 2000000 但n為0時結束程式。測試資料不超過100組 輸出將2 n範圍內所有的素數輸出。兩個數之間用空格隔開 樣例輸入 5...