超酷的 Vim 搜索技巧

盡管目前我們已經涉及[1]?Vim 的多種特性,但此編輯器的特性集如此龐大,不管我們學習多少,似乎仍然遠遠不足。承接我們的 Vim 教程系列,本文我們將討論 Vim 提供的多種搜索技術。

不過在此之前,請注意文中涉及到的所有的例子、命令、指令均是在 Ubuntu 14.04,Vim 7.4 下測試的。

Vim 中的基礎搜索操作

當你在 Vim 中打開一個文件并且想要搜索一個特定的單詞或模板,第一步你必須要先按下?Esc?鍵從插入模式中退出(如果你正處于插入模式中)。之后輸入?/?并緊接著輸入你要搜索的單詞或搜索模式。

例如,如果你想要搜索的單詞是?linux,下圖顯示的就是在 Vim 窗口底部的搜索命令:

Search for words in vim

Search for words in vim

敲擊回車鍵之后,你會看到 Vim 會將光標停留在從光標在插入模式中的位置開始,找到的包含此單詞的第一行。如果你剛剛打開一個文件并且立即開始了搜索操作,搜索將從文件的首行開始。

如果想要移動到下一處包含被搜索單詞位置,按?n?鍵。當你遍歷完所有被搜索模板所在之處,繼續按?n鍵 Vim 將重復搜索操作,光標將回到第一次搜索結果出現位置。

Move to next search hit

Move to next search hit

在遍歷搜索結果時,如果你想要回到上一匹配處,按?N?(即?shift?+?n)。同時,值得注意的是不管在什么時候,你都可以輸入?ggn?來跳轉到第一個匹配處,或者?GN?來跳轉到最后一處。

當你恰好在文件的底部,而且想要逆向搜索的情況下,使用???代替?/?來開始搜索。下圖是一個例子:

search backwards

search backwards

自定義你的搜索

1、 高亮搜索結果

盡管通過?n?或?N?從被搜索單詞或模式的匹配處跳轉到另一處很簡單,但是如果匹配處能夠高亮就更加人性化了。例如,請看下附截圖:

Search Highlighting in VIM

Search Highlighting in VIM

這可以通過設置?hlsearch?變量來實現,例如在普通/命令行模式中執行下述命令:

:set hlsearch

set hlsearch

set hlsearch

2、使搜索不區分大小寫

在 Vim 中進行搜索默認是區分大小寫的。這就意味著如果我要搜索?linux,那么?Linux?是不會匹配的。然而,如果這不是你想要的搜索方式,你可以使用如下命令來使搜索變得不區分大小寫:

:set ignorecase

所以當我設置?ignorecase?變量后再使用前邊提到的命令,搜索?linux,那么?Linux?所在處也會被高亮。

search case-insensitive

search case-insensitive

3、智能大小寫搜索

Vim 提供了一個功能,只有當要搜索的單詞 / 模板包含大寫字母時,編輯器才會區分大小寫。要想實現這種功能,必須先設置?ignorecase,再接著設置?smartcase?變量。

:set ignorecase
:set smartcase

例如,如果一個文件中既包含?LINUX?也包含?linux,在開啟智能大小寫搜索功能時,如果使用?/LINUX?進行搜索,只有單詞?LINUX?處會被搜到。反之,如果搜索?/linux,那么不論大小寫的搜索結果都會被匹配。

4、遞進搜索

就如谷歌一樣,隨著你輸入查詢字串(字串隨你每輸入一個字符不斷更新)顯示不同的搜索結果,Vim 也同樣提供了遞進搜索。要想使用這種特性,你必須在搜索前執行下述命令:

:set incsearch

一些很酷的在 Vim 中搜索的小技巧

你可能會發現還有一些其他的與搜索相關的小技巧很有用。

開始吧!如果你想要搜索一個文件中的一個單詞,但是又不想輸入它,你只需要將你的光標移到這個單詞下然后按?*?(或者?shift?+?8)。如果你想要啟動一次部分搜索(例如:同時搜索?in?和?terminal),那你需要將光標移到到單詞(在本例中,?in)下,然后通過在鍵盤上按?g*?(按一次?g?然后不斷按?*?)。

注意:如果你想要逆向搜索,按?#?或者?g#?。

這里有個視頻,你可以看看:

?

此處應有視頻,地址:?https://img.linux.net.cn/static/video/How%20to%20Search%20in%20Vim%20Without%20Typing%20and%20Navigate%20over%20the%20Words-2lONID7BRhA.mp4

下一個,只要你想要,你可以獲得所有被搜索單詞或模式匹配處所在的行和行號的一個列表。這可以在你開始搜索后通過按?[I?來實現。如下圖是一個列表結果如何在 Vim 窗口底部被分組和顯示的例子:

grouped search results

grouped search results

接下來,你可能已經得知,Vim 默認是環形搜索的,意味著在到達文件結尾處(或者被搜索單詞的最后一處匹配)時,如果繼續按 “搜索下一個” 會將光標再次帶回第一處匹配處。如果你希望禁止環形搜索,可以使用如下命令:

:set nowrapscan

再次開啟環形搜索,使用如下命令即可:

:set wrapscan

最后,假設你想要對文件中已經存在的單詞做一點小小的修改,然后對修改后的單詞執行搜索操作,一種方法是輸入?/?與要搜索的單詞。但是如果這個單詞又長又復雜,那么可能需要一點時間來輸入它。

一個簡單的辦法是將光標移到你想要略微修改的單詞下,按?/?之后再按?Ctrl?+?r?最后按?Ctrl?+?w。這個在光標下的單詞不僅僅會被拷貝,也會被復制到?/?后,允許你對它進行修改并且繼續進行搜索操作。

如果想要獲得更多小技巧(包括如何使用鼠標來使在 Vim 中的操作變得簡單),請前往?Vim 官方文檔[2]。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/285481.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285481.shtml
英文地址,請注明出處:http://en.pswp.cn/news/285481.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

對面的00后萌新看過來:淺析計算機編程在高等職業GIS專業中的重要性

文章目錄什么是傳說中的GIS?GIS必修哪些課程?學GIS到底何去何從?什么是計算機編程?編程在GIS中的地位如何?高等職業GIS如何教學?專科生怎樣學好GIS?什么是傳說中的GIS? GIS是“3S”之…

SQLServer Agent執行[分發清除: distribution] 無法刪除快照文件

由于之前創建的發布訂閱造成嚴重的性能壓力,癥狀表現為發布訂閱表查詢產生CMEMTHREAD suspend等待,由于開發配置每隔十分鐘會產生大量的SQLCOMMAND(create table,create index大量的命令)發布訂閱 復制監視器 有Memor…

二維碼

二維碼 QR_Code http://www.psoft.sk/product.php?id27 http://www.barcodesoft.com/zh-cn/delphi-barcode.aspx 生成二維碼 Bar_Code:TpsBarcode; Bar_Code.BarCode : www.aaa.com; procedure TForm1.Button4Click(Sender: TObject);var R: TRect;begin R.Create(700, 1,1000…

C語言試題114之猴子吃桃問題

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:猴子吃桃問題:猴子第一天摘…

.NET 7 的 JWT 配置太方便了!

微軟宣布 .NET 7 preview5 有一些較大的改進, 包括 JWT 身份驗證的簡化和自動配置。我安裝了 preview 5 嘗試了新的 JWT 身份配置。如果您想把現有的項目更新到 .Net 7 preview 5, 下面是一個快速更新的命令。Update all Microsoft.AspNetCore.* package references…

【數據庫原理及應用】經典題庫附答案(14章全)——第二章:關系數據庫知識

【數據庫原理及應用】經典題庫附答案(14章全)——第一章:數據庫基礎知識 【數據庫原理及應用】經典題庫附答案(14章全)——第二章:關系數據庫知識 【數據庫原理及應用】經典題庫附答案(14章全&a…

[轉]面試官,不要再問我三次握手和四次揮手

文章目錄 1. 三次握手 1.1 為什么需要三次握手,兩次不行嗎?1.2 什么是半連接隊列?1.3 ISN(Initial Sequence Number)是固定的嗎?1.4 三次握手過程中可以攜帶數據嗎?1.5 SYN攻擊是什么?2. 四次揮手 2.1 揮手…

杭電2090

1 //這題是有多水。。。。。。。2 #include<stdio.h>3 char s[100];4 int main()5 {6 double n,price,sum0;7 while(~scanf("%s%lf%lf",s,&n,&price))8 sumn*price;9 printf("%.1lf\n",sum); 10 } 轉載于:https://www.c…

touch 修改文件時間戳,或者新建一個不存在的文件 - 副本

linux的touch命令不常用&#xff0c;一般在使用make的時候可能會用到&#xff0c;用來修改文件時間戳&#xff0c;或者新建一個不存在的文件。1&#xff0e;命令格式&#xff1a;touch [選項]... 文件...2&#xff0e;命令參數&#xff1a;-a 或--timeatime或--timeaccess或-…

C語言試題115之兩個乒乓球隊進行比賽,各出三人。甲隊為 a,b,c 三人,乙隊為 x,y,z 三人。已抽簽決定 比賽名單。有人向隊員打聽比賽的名單。a 說他不和 x 比,c 說他不和 x,z 比,請

?作者簡介:大家好我是碼莎拉蒂,CSDN博客專家?????? ??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 1、題目 題目:兩個乒乓球隊進行比賽,各出三人。甲隊為 a,b,c 三人,乙隊為 x,y,z 三人。已抽簽決定…

【數據庫原理及應用】經典題庫附答案(14章全)——第三章:結構化查詢語言SQL

【數據庫原理及應用】經典題庫附答案(14章全)——第一章:數據庫基礎知識 【數據庫原理及應用】經典題庫附答案(14章全)——第二章:關系數據庫知識 【數據庫原理及應用】經典題庫附答案(14章全)——第三章:結構化查詢語言SQL 【數據庫原理及應用】經典題庫附答案(14章…

(04).NET MAUI實戰 MVVM

1.概要本章將講解如何在MAUI中使用簡單的MVVM模式開發“ListView”內容的增刪功能&#xff0c;MVVM在MAUI中也同樣適用。Microsoft.Toolkit.Mvvm在學習之前我們先了解一個nuget包&#xff0c;它可以幫助我們省去一些代碼的開發時間。包Microsoft.Toolkit.Mvvm (aka MVVM Toolki…

[轉]淺析Tomcat、JBOSS、WebSphere、WebLogic、Apache

做任何web項目&#xff0c;都離不開服務器&#xff0c;有錢的公司用WebSphere、WebLogic&#xff0c;沒錢公司用nginxtomcat&#xff0c;不要小瞧nginxtomcat麻雀雖小&#xff0c;五臟俱全。 服務器的知識&#xff0c;在筆試、面試中會經常被問到&#xff0c;對于一個合格的程序…

PHP require和include的區別

require一個文件存在錯誤的話&#xff0c;那么程序就會中斷執行了&#xff0c;并顯示致命錯誤 include一個文件存在錯誤的話&#xff0c;那么程序不會中端&#xff0c;而是繼續執行&#xff0c;并顯示一個警告錯誤。 以下為補充&#xff1a;1. include有返回值&#xff0c;而r…

C語言試題116之打印出如下圖案(菱形)

??個人主頁:個人主頁 ??系列專欄:C語言試題200例 ??推薦一款模擬面試、刷題神器?? 點擊跳轉進入網站 ?作者簡介:大家好,我是碼莎拉蒂,CSDN博客專家(全站排名Top 50),阿里云博客專家、51CTO博客專家、華為云享專家 1、題目 題目:打印出如下圖案(菱形) * …

【數據庫原理及應用】經典題庫附答案(14章全)——第四章:關系系統及其優化

【數據庫原理及應用】經典題庫附答案(14章全)——第一章:數據庫基礎知識 【數據庫原理及應用】經典題庫附答案(14章全)——第二章:關系數據庫知識 【數據庫原理及應用】經典題庫附答案(14章全)——第三章:結構化查詢語言SQL 【數據庫原理及應用】經典題庫附答案(14章…

WTM重大更新,多租戶和單點登錄

WTM重大更新多租戶單點登錄隨著WTM被越來越多地應用于企業&#xff0c;用戶對于多租戶和單點登錄的需求越來越強烈。經過了幾個月的努力&#xff0c;我們把WTM底層代碼又進行了一次優化和重構&#xff0c;加入了多租戶和單點登錄的功能。VUE&#xff0c;Blazor&#xff0c;LayU…

struts2注解

2019獨角獸企業重金招聘Python工程師標準>>> 以下均為本人工作中的筆記內容&#xff0c;不夠全面具體。碰到什么我就記錄什么&#xff0c;只是作為筆記使用&#xff0c;希望大家多提寶貴意見&#xff0c;共同進步。Action("login"):定義action //或者寫…

[轉]H5直播之從推流服務搭建到視頻直播

轉自http://www.php.cn/html5-tutorial-403035.html 最近視頻直播比較火&#xff0c;發現目前 WEB 上主流的視頻直播方案有 HLS 和 RTMP&#xff0c;移動 WEB 端目前以 HLS 為主&#xff0c;PC端則以 RTMP 為主實時性較好&#xff0c;接下來將圍繞這兩種視頻流協議來展開H5直播…

【數據庫原理及應用】經典題庫附答案(14章全)——第五章:關系數據理論

【數據庫原理及應用】經典題庫附答案(14章全)——第一章:數據庫基礎知識 【數據庫原理及應用】經典題庫附答案(14章全)——第二章:關系數據庫知識 【數據庫原理及應用】經典題庫附答案(14章全)——第三章:結構化查詢語言SQL 【數據庫原理及應用】經典題庫附答案(14章…