尽管目前我们已经涉及 Vim 的多种特性,但此编辑器的特性集如此庞大,不管我们学习多少,似乎仍然远远不足。承接我们的 Vim 教程系列,本文我们将讨论 Vim 提供的多种搜索技术。

不过在此之前,请注意文中涉及到的所有的例子、命令、指令均是在 Ubuntu 14.04,Vim 7.4 下测试的。

Vim 中的基础搜索操作

当你在 Vim 中打开一个文件并且想要搜索一个特定的单词或模板,第一步你必须要先按下 Esc 键从插入模式中退出(如果你正处于插入模式中)。之后输入 / 并紧接着输入你要搜索的单词或搜索模式。

例如,如果你想要搜索的单词是 linux,下图显示的就是在 Vim 窗口底部的搜索命令:

敲击回车键之后,你会看到 Vim 会将光标停留在从光标在插入模式中的位置开始,找到的包含此单词的第一行。如果你刚刚打开一个文件并且立即开始了搜索操作,搜索将从文件的首行开始。

如果想要移动到下一处包含被搜索单词位置,按 n 键。当你遍历完所有被搜索模板所在之处,继续按 n 键 Vim 将重复搜索操作,光标将回到第一次搜索结果出现位置。

在遍历搜索结果时,如果你想要回到上一匹配处,按 N (即 shift + n)。同时,值得注意的是不管在什么时候,你都可以输入 ggn 来跳转到第一个匹配处,或者 GN 来跳转到最后一处。

当你恰好在文件的底部,而且想要逆向搜索的情况下,使用 ? 代替 / 来开始搜索。下图是一个例子:

自定义你的搜索

1、 高亮搜索结果

尽管通过 n 或 N 从被搜索单词或模式的匹配处跳转到另一处很简单,但是如果匹配处能够高亮就更加人性化了。例如,请看下附截图:

这可以通过设置 hlsearch 变量来实现,例如在普通/命令行模式中执行下述命令:

:set hlsearch

2、使搜索不区分大小写

在 Vim 中进行搜索默认是区分大小写的。这就意味着如果我要搜索 linux,那么 Linux 是不会匹配的。然而,如果这不是你想要的搜索方式,你可以使用如下命令来使搜索变得不区分大小写:

:set ignorecase

所以当我设置 ignorecase 变量后再使用前边提到的命令,搜索 linux,那么 Linux 所在处也会被高亮。

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# 。

这里有个视频,你可以看看:

下一个,只要你想要,你可以获得所有被搜索单词或模式匹配处所在的行和行号的一个列表。这可以在你开始搜索后通过按 [I 来实现。如下图是一个列表结果如何在 Vim 窗口底部被分组和显示的例子:

接下来,你可能已经得知,Vim 默认是环形搜索的,意味着在到达文件结尾处(或者被搜索单词的最后一处匹配)时,如果继续按 “搜索下一个” 会将光标再次带回第一处匹配处。如果你希望禁止环形搜索,可以使用如下命令:

:set nowrapscan

再次开启环形搜索,使用如下命令即可:

:set wrapscan

最后,假设你想要对文件中已经存在的单词做一点小小的修改,然后对修改后的单词执行搜索操作,一种方法是输入 / 与要搜索的单词。但是如果这个单词又长又复杂,那么可能需要一点时间来输入它。

一个简单的办法是将光标移到你想要略微修改的单词下,按 / 之后再按 Ctrl + r 最后按 Ctrl + w。这个在光标下的单词不仅仅会被拷贝,也会被复制到 / 后,允许你对它进行修改并且继续进行搜索操作。

如果想要获得更多小技巧(包括如何使用鼠标来使在 Vim 中的操作变得简单),请前往 Vim 官方文档。

结语

当然,没有人希望你死记硬背这里提到的所有小技巧。你应该做的是,从一个你认为对你最有益的技巧开始不断练习。当它成为一种习惯并且嵌入你的记忆后,重新来这儿找找你应该开始学习的下一个技巧。

你知道其他像这样的技巧吗?并且希望能够和大家一起分享?那就在下边留言吧!

本文由 LCTT 原创编译,Linux中国 荣誉推出

linux在vim中搜索文件,技术|超酷的 Vim 搜索技巧相关推荐

  1. lsdyna如何设置set中的node_list_技术成长日记-Vim-3.Vim中重要的概念

    3.1 配置文件.vimrc或_vimrc .vimrc文件是个人定制Vim的脚本文件,该文件中的每一行都会被当作Ex命令在Vim进行初始化的时候执行.一般在类Unix系统中把该文件存放在$HOME/ ...

  2. linux跑到命令行是到了哪里,在Linux命令行中使用tcpdump「超详细」

    原标题:在Linux命令行中使用tcpdump「超详细」 灵活,强大的命令行工具有助于减轻网络问题排查的痛苦. 根据我作为系统管理员的经验,我经常发现网络连接问题难以排除故障. 对于那些情况,tcpd ...

  3. 超酷的 Vim 搜索技巧

    尽管目前我们已经涉及 Vim 的多种特性,但此编辑器的特性集如此庞大,不管我们学习多少,似乎仍然远远不足.承接我们的 Vim 教程系列,本文我们将讨论 Vim 提供的多种搜索技术. 不过在此之前,请注 ...

  4. linux查找目录中指定文件或遍历指定文件夹

    查找目录中指定文件 1.终端输入:find 指定文件夹 指定文件名 2.终端输入:ll 指定文件夹 其中,文件夹可以不指定,但搜索较慢.ll主要是遍历比较快.

  5. linux 内核驱动中对文件的读写

    转载地址 http://www.360doc.com/content/12/1224/10/3478092_255969804.shtml 有时候需要在Linux kernel--大多是在需要调试的驱 ...

  6. linux内核驱动中对文件的读写 【转】

    本文转载自:http://blog.chinaunix.net/uid-13059007-id-5766941.html 有时候需要在Linux kernel--大多是在需要调试的驱动程序--中读写文 ...

  7. 如何为linux 桌面文件内存,linux - 桌面Linux发行版中.desktop文件的功能是什么? - 堆栈内存溢出...

    我有以下情况:我必须修改一个.desktop文件,该文件位于我正在使用的应用程序的包中. 当我尝试打开文件的内容时,我遇到了一个奇怪的问题. 如果我点击它然后我尝试点击"打开"它给 ...

  8. win10怎么用计算机的搜索,win10搜索文件内容怎么操作_win10如何搜索文档内的内容...

    在win10系统中,用户想要查找一些文件时,常常会通过文件名来搜索,可以说是非常方便,可是当有的用户忘记了自己想要找的文件的文件名时又该怎么办呢?这时就可以通过搜索文件内容来完成,那么win10搜索文 ...

  9. 电驴服务器搜索文件排序,【图文教程】搜索功能使用全解

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 5.布尔运算符--高手技巧 高手篇纯为复制粘贴文章<巧用布尔运算,玩转电骡的搜索功能>.读懂此篇需要一些逻辑思维能力.不喜可以略过,转到文尾看 ...

最新文章

  1. js判断手机浏览器屏幕方向
  2. 13-numpy笔记-莫烦pandas-1
  3. 正则表达式提取器_C++11新特性7 - 正则表达式
  4. 前端的常见的面试试题
  5. Microsoft .NET Framework 2.0对文件传输协议(FTP)操作(上传,下载,新建,删除,FTP间传送文件等)实现汇总1...
  6. lzugis——Arcgis Server for JavaScript API在自己的定义InfoWindow
  7. C++内置数组和array的比较
  8. windows7梦幻桌面
  9. 常见的web网站攻击类型
  10. 服务器私有信息,私有服务器
  11. dw cs6设置字体样式
  12. UV杀菌灯芯片-DLT8P65SA-杰力科创
  13. POST http://域名:8080/项目/base/api/login/user/login net::ERR_CONNECTION_RESET 错误
  14. 美团饿了么外卖CPS项目怎么做?简单推广每天躺赚(附源码和搭建教程)
  15. 爬虫中常见的反爬手段和解决方法
  16. Python基础学习——Numpy包(2、索引、切片与迭代)
  17. 一文彻底搞懂go mod使用
  18. Matlab 小球落地问题
  19. 安徽省2018工程计价电子版_2018安徽省装饰工程计价定额.pdf
  20. 升级bigsur_升级macOS Big Sur遇到问题?问题修复合集不可错过

热门文章

  1. c语言程序设计学籍信息,c语言学籍信息管理系统设计
  2. 计算机英语第四版可可英语翻译,专四英语作文高分范文背诵(MP3+中英字幕)第28篇:计算机和人翻译...
  3. 微信企业号开发七:JSAPI模式
  4. 两种方法实现轮播图效果
  5. 小程序源码:王者荣耀改重复名,空白名最低战力查询助手-多玩法安装简单
  6. 面试中,被问到“哑口无言”的瞬间怎么办?
  7. 计算机科学关于人工智能的论文,人工智能论文
  8. 2011不同阶层理财大盘点
  9. 小白起步-大数据环境搭建-Java环境配置
  10. Bootstrap设计可响应式的移动网页