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...