Vim实用技巧系列 - 搜索
最近发现了一个很好的VIM资源,best of vim tips, 展示了一系列很有用的vim 技巧。博主会逐个翻译介绍这些技巧。
来源: http://rayninfo.co.uk/vimtips.html
本篇:VIM搜索有关的技巧
" *最佳搜索技巧*
/joe/e : 搜索joe并且将光标置于匹配单词末尾。若不加/e,则光标位于匹配单词开头
3/joe/e+1 : 搜索第三个joe并且将光标置于匹配单词末尾+1
/joe/s-2 : 光标置于匹配单词开头-2的位置
/joe/+3 : 搜索joe并且光标下移3行
/^joe.*fred.*bill/ : 查找依次包含有joe, fred, bill这三个单词的字符串,几个单词之间可以有任何内容。joe必须位于行的开头
/^[A-J]/ : 查找以A到J之间字母开头的行
/begin\_.*end : 在多行中查找依次包含begin和end两个单词的字符串,两个单词之间可以有任何内容。
/fred\_s*joe/ : 同上。但是限制两个单词之间只能有空白字符 (white space).
/fred\|joe : 查找FRED或者JOE,两个单词中有一个匹配即可
/.*fred\&.*joe : Search for FRED AND JOE in any ORDER!
/\<fred\>/ : 查找fred这个单词,不能使afred, freda, 或者afreda,只能是fred
/\<\d\d\d\d\> : 查找四个数字,不多不少
/\D\d\d\d\d\D : 同上,但是需要数字前后都有空白字符 (white space).
/\<\d\{4}\> : 同上
/\([^0-9]\|^\)%.*% : 查找以非数字开头或者位于行首的字符串。博主表示也没太搞懂那两个百分号是啥意思。原文是Search for absence of a digit or beginning of line
" 查找空行
/^\n\{3} : 查找三个空行
/^str.*\nstr : 查找连续两个以str开头的行
/\(^str.*\n\)\{2} : 同上
" 利用正则表达式中的存储,也就是变量。下面这个命令中\2表示joe,\1表示fred
/\(fred\).*\(joe\).*\2.*\1
" 正则表达式重复次数。下面命令表示重复8次
/^\([^,]*,\)\{8}
" 可是模式下的搜索、查找
:vmap // y/<C-R>"<CR> : 查找高亮字符串
:vmap <silent> // y/<C-R>=escape(@", '\\/.*$^~[]')<CR><CR> : 查找带有特定字符的高亮字符串
" \zs and \ze regex delimiters :h /\zs
/<\zs[^>]*\ze> : 查找tag的内容,忽略tag
" zero-width :h /\@=
/<\@<=[^>]*>\@= : 同上
/<\@<=\_[^>]*>\@= : 在多行中查找tag
" 在多行中搜索、查找, \_ 代表多行
/<!--\_p\{-}--> : 查找多行的注释
/fred\_s*joe/ : 多行中查找两个单词,单词之间可以有空白符
/bugs\(\_.\)*bunny : 多行中查找两个单词,单词之间可以有任何字符
:h \_ : 查看帮助
" 查找光标位置处的子程序、函数的定义
:nmap gx yiw/^\(sub\<bar>function\)\s\+<C-R>"<CR>
" 多文件查找
:bufdo /searchstr/ : 通过:rewind来重新开始查找
" 更好的多行查找,但是具有欺骗性
:bufdo %s/searchstr/&/gic : 输入n到下一个,输入a停止
" 查找没有反斜杠的URL
?http://www.vim.org/ : 利用了反向搜索,很聪明。
" 指定你不想查找的内容
/\c\v([^aeiou]&\a){4} : 查找四个连续的辅音字母
/\%>20l\%<30lgoat : 在第20行到第30行之间查找goat
/^.\{-}home.\{-}\zshome/e : 查找一行中第二次出现的home
:%s/home.\{-}\zshome/alone : 在所有行中替换home的出现。博主没看懂,原文是 Substitute only the occurrence of home in any line [N]
" 在不含有tongue的行中查找str
^\(.*tongue.*\)\@!.*nose.*$
\v^((tongue)@!.)*nose((tongue)@!.)*$
.*nose.*\&^\%(\%(tongue\)\@!.\)*$
:v/tongue/s/nose/&/gic
'a,'bs/extrascost//gc : 技巧,将搜索范围限制在两个标记(marker)之间
Vim实用技巧系列 - 搜索的更多相关文章
- Vim实用技巧系列 - 代码注释
在写代码时候,有时候需要临时注释掉一部分代码,之后还要取消这些注释.真麻烦.那么,用Vim怎么做这件事呢? 第一种方法,块模式. 再次声明,本系列全部以windows下 ...
- Vim实用技巧系列 - 开篇
作者使用Vim已经有一段时间了,深深觉得它是一个非常强大的编辑器,使用习惯之后效率很高.最大的缺点是学习曲线比较陡峭.因此作者希望分享一些自己在实际使用中的经验来帮助初学者,同时也帮助作者自己学习. ...
- Vim实用技巧系列 - tab和空格的转换
有时候,我们会修改一些代码,而这些代码中的tab设定和我们自己的设定不一样.例如,我们自己的设定是以两个空格来代替tab,而要修改的代码则是使用tab.那么,我们应该怎样快速的将又有的tab转换为空格 ...
- Vim实用技巧系列 - 利用百度云和git实现vim配置多机共享
Vim是一个强大的文本编辑器.良好的配置更能便利对Vim的使用.有时候,我们会在几台不同的电脑上使用Vim. 例如,我们可能在自己的电脑和公司的电脑上都安装了Vim. 有时候,我们需要实现,如果我们配 ...
- ###《VIM实用技巧》
###<VIM实用技巧> #@author: gr #@date: 2015-11-20 #@email: forgerui@gmail.com <VIM实用技巧>阅读笔记. ...
- vim实用技巧总结
1. 单个文件内实用mark来帮助跳转以及一些宏操作.(注意:mark不能用于多文件之间的跳转)mch 设置宏,保存到ch标记(不是ch寄存器)'ch 跳转到标记的行首`ch 跳转到标记的字符处另:为 ...
- 很全面的WinRAR实用技巧系列 - imsoft.cnblogs
WinRAR也可以管理我的桌面时间长了,桌面上堆的东西实在太多,平时该如何管理呢?安装了WinRAR的朋友可以请它来帮忙,用它管理清除无用的桌面文件或图标. 以XP系统为例,系统所在目录是“c:\wi ...
- 《Vim实用技巧》第2版读书笔记
学习前的建议: 一.如果你需要一个功能强大的文本编辑器,速度飞快.使用方便.代码补全.编程强大.定制性强,Vim就是你需要的: 二.学习入门曲线陡峭,但是使用后期异常简单,效率超高: 三.号称可以跟上 ...
- vim实用技巧
<1> 删除空格: :% s/ //gi #正则为一个空格,替换为空,全局匹配. <2> 删除空行: :g /^\n*$/ d #g为global 正则为:行开始+换 ...
随机推荐
- Windows Server 2012如何实现双网卡绑定
在windows server 2012 之前我们在服务器上如果要实现双网卡绑定则需要向服务器厂家所要相应的软件,但是现在强大的windows server 2012的到来使我们省去了所有的麻烦,因为 ...
- Tomcat之Windows环境下配置多个服务器
在应对多项目多端口的情况配置一个服务器是远不能满足开发条件的.例如微信公众号回调域名只接受80端口,而其他项目一般为默认的8080或者自定义的其他的端口. 废话多说,直入主题 准备条件:tomcat文 ...
- maven插件mybatis-generator生成代码
第一步,在pom中加入插件 <plugin> <groupId>org.mybatis.generator</groupId> <artifactId> ...
- Java Toolkit类用法
这是一个AWT工具箱.它提供对本地GUI最低层次的JAVA访问.在大多情况下,这个类不直接用在小应用程序或应用程序中.具有把行图形数据转换为可显示的图像.返回字体信息.得出显示尺寸和分辨率以及获得系统 ...
- Easy CHM使用简明教程
近日整理硬盘,发现下载有许多DOC.JPEG.HTML等 格式的学习资料,也包括一些电子书资料:而其中的DOC.HTML等资料在学习浏览时显得很不方便,不同格式的文件需要使用不同的打开方式.近而发现电 ...
- Swift要点:从Objective-C开发者的角度看Swift
代码环境是Xcode6.3-Beta3. Swift已经极大的改变了开发iOS应用的方式.本文中,我会列出Swift的几个重点,并且和Objective-C一一做出对比. 注意,本文不是Swift的入 ...
- 股票——成交量加权平均价VWAP
成交量加权平均价是将多笔交易的价格按各自的成交量加权而算出的平均价,若是计算某一证券在某交易日的VWAP,将当日成交总值除以总成交量即可.VWAP可作为交易定价的一种方法,亦可作为衡量机构投资者或交易 ...
- 四则运算 Java 实现 刘丰璨,王翠鸾
四则运算 GitHub仓库 功能实现 [x] 使用 -n 参数控制生成题目的个数,并且根据解空间限制用户设定的范围(如 range == 2 时,用户却要求生成 10000 道题目,这明显不合理) [ ...
- Launch Google Map in Android / IOS Mobile
<!--This only works in android mobile phone--><a href="geo:0,0?q=myaddress+encode)__&q ...
- 关于Git bash 在win10重装系统情况下闪退并生成mintty.exe.stackdump文件的问题
问题内容:在重装win10系统情况下,有可能会出现安装Git后右击Git bash会出现闪退并生成mintty.exe.stackdump文件 个人解决方案:查看网络上各位网友的意见和解决方法后,自己 ...