超酷的 Vim 搜索技巧
尽管目前我们已经涉及 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 官方文档。
结语
当然,没有人希望你死记硬背这里提到的所有小技巧。你应该做的是,从一个你认为对你最有益的技巧开始不断练习。当它成为一种习惯并且嵌入你的记忆后,重新来这儿找找你应该开始学习的下一个技巧。
你知道其他像这样的技巧吗?并且希望能够和大家一起分享?那就在下边留言吧!
via: https://www.howtoforge.com/tutorial/perform-search-operations-in-vim/
作者:Himanshu Arora 译者:xiaow6 校对:wxy
超酷的 Vim 搜索技巧的更多相关文章
- 10个你必须掌握的超酷VI命令技巧
摘要:大部分Linux开发者对vi命令相当熟悉,可是遗憾的是,大部分开发者都只能掌握一些最常用的Linux vi命令,下面介绍的10个vi命令虽然很多不为人知,但是在实际应用中又能让你大大提高效率. ...
- 【转】10个你必须掌握的超酷VI命令技巧
摘要:大部分Linux开发者对vi命令相当熟悉,可是遗憾的是,大部分开发者都只能掌握一些最常用的Linux vi命令,下面介绍的10个vi命令虽然很多不为人知,但是在实际应用中又能让你大大提高效率. ...
- Vim实用技巧系列 - 搜索
最近发现了一个很好的VIM资源,best of vim tips, 展示了一系列很有用的vim 技巧.博主会逐个翻译介绍这些技巧. 来源: http://rayninfo.co.uk/vimtips. ...
- [No000018C]Vim清除上次的搜索高亮结果-Vim使用技巧(1)
在打开文件中使用Vim搜索功能并开启高亮显示后怎么取消当前高亮显示的目标词? 最简单的方法是再使用Vim搜索一串文档中不存在的目标词来覆盖当前高亮的搜索结果. 其实,可以在Vim尾行模式下使用 :no ...
- 想要更高效地找到信息,你需要掌握这些搜索技巧 (google or baidu)
想要更高效地找到信息,你需要掌握这些搜索技巧 (google or baidu) 转载:https://tingtalk.me/search-tips/ 在大型局域网(互联网)的今天,你以为搜索是一门 ...
- 搜索技巧<转>
平时工作,搜索引擎是少不了的,作为程序员,当然首推 Google.这里简单介绍下几个 Google 搜索的小技巧,方便别人也方便自己查阅. ps:以下所有操作,均可以在 「谷歌搜索首页 -> 设 ...
- Vim 常用技巧:
Vim 常用技巧: 将回车由默认的8个空格改为4个空格: 命令:set sw=4 修改tab为4空格: 命令:set ts=4 设置每一级的缩进长度: 命令:set shiftwidth=4 设置文件 ...
- 无插件Vim编程技巧
无插件Vim编程技巧 http://bbs.byr.cn/#!article/buptAUTA/59钻风 2014-03-24 09:43:46 发表于:vim 相信大家看过<简明Vim教程& ...
- 超酷创意HTML5动画演示及代码
HTML5是未来的网页开发神器,今天分享的这些HTML5动画大部分利用了CSS3的动画属性来实现,废话不多说,直接上演示和代码. HTML5/CSS3实现大风车旋转动画 这次我们要来分享一款很酷的HT ...
随机推荐
- 求通俗讲解下tensorflow的embedding_lookup接口的意思
https://www.zhihu.com/question/48107602 作者:王凯链接:https://www.zhihu.com/question/48107602/answer/15980 ...
- mongoose系列——几行代码实现CRUD
1. nodejs 确实好用,mongoose封装了mongodb,代码很简洁. const mongoose = require('mongoose'); mongoose.connect(&quo ...
- maven多module项目中千万不要引入其它模块的单元測试代码
本文出处:http://blog.csdn.net/chaijunkun/article/details/35796335,转载请注明. 因为本人不定期会整理相关博文,会对对应内容作出完好. 因此强烈 ...
- Creating OpenGL 4.3 window fails with GLFW3
I set up a minimal application to open a blank window with GLFW3: #include <iostream> #inclu ...
- ERROR: In <declare-styleable> MenuView, unable to find attribute android:preserveIconSpacing
eclipse sdk从低版本号切换到高版本号sdk的时候 v7包会包这个错ERROR: In <declare-styleable> MenuView, unable to fin ...
- (纪录片)统计的乐趣 The Joy of Stats (2010)
简介: 导演: 丹·希尔曼主演: Hans Rosling类型: 纪录片官方网站: www.bbc.co.uk/programmes/b00wgq0l制片国家/地区: 英国语言: 英语上映日期: 20 ...
- python 读取单所有json数据写入mongodb(单个)
<--------------主函数-------------------> from pymongo import MongoClientfrom bson.objectid impor ...
- C语言常见问题 如何用Visual Studio编写C语言程序测试
新建Win32控制台应用程序 勾选控制台空项目 右击源文件,添加cpp文件 输入范例代码,可以正常运行#include <stdio.h> int main(void) { i ...
- 谷哥的小弟学前端(10)——JavaScript基础知识(1)
探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 具体解释Android主流框架不可或缺的基石 站在源代码的肩膀上全解Scroller工作机制 Android多分辨率适 ...
- 电脑的fn锁,f1-f12与功能键 互换
提要: 有些机子特别逆天,比如说Thinkpad e系列.好好的f1-f12一定要加上fn才能按出来,默认的是画在上面的功能键,作为娱乐来说其实是还不错的,但是像我等程序员就觉得特别逆天了.你有两个选 ...