超酷的 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.mzph.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章…