linux vi全字匹配搜索,vi编辑器中的匹配搜索操作
玩转VIM编辑器-强力搜索
搜索导航
导航键
描述
/
向前搜索,前向
?
向后搜索,反向
n
跳转到下一个搜索词所在位置
N
跳转到前一个搜索词所在位置
//或??
重复前面的搜索或反向搜索
跳转到下一个/上一个当前光标所在的字符
使用该技巧可以不用使用/pattern可以直接跳转到光标所在的字符。
导航键
描述
*
跳转到光标所在字符的下一个匹配处
#
跳转到光标所在字符的上一个匹配处
上面的搜索方式是精确匹配的,比如光标在字符hell上,就不会搜索到hello上,但是我们可以使用下面描述的可以使得光标在hell上时,也能搜索到hello或者shell等包含hell的单次。
导航键
描述
g*
跳转到下一个局部匹配的单词处
g#
跳转到上一个局部匹配的单词处
PS:可以使用[I来列出所有符号光标处单次的行。
在一行中搜索字符
导航键
描述
fX
在一行中向前搜索字符X并跳转
FX
在一行中向后搜索字符X并跳转
tX
在一行中向前搜索字符X并跳转到X前面一个字符
TX
*****没有测试出来
;
向前重复上述操作
,
向后重复上述操作
12个实用的强力搜索和替换实例
Vim编辑器中文本替换命令的语法为:
:[range]s[ubstitute]/{pattern}/{string}/[flags] [count]
其中有3个可能的flags,分别为:
•[c]每次替换都确定一下
•[g]替换当前行中所有符合的
•[i] 忽略模式匹配的大小写
1替换整个文件中所有符合模式的文本
其中%s指定了所有的行,而其中%的含义为替换整个文件;
其中g的含义为指定行中所有的匹配项,如果没有g将只是替换行中发现的第一个。
2在一行中替换文本
:s/old-text/new-text/gi
上述命令中没有指定range范围,将默认为当前行。
3在指定行中替换文本
:1,10s/I/We/g
上述命令将把从第1行到第10行的I替换为We。
4在指定块中替换文本
在使用CTRL+V时,可以替换选定的文本,在输入:时,就会自动变为:’,这是就可以输入命令了:
:'s/helo/hello/g
该命令将把指定块中的helo替换为hello。
5在接下来的N行中替换文本
:s/helo/hello/g N
该命令将替换从当前行开始的共N行。
6只替换整个单词而不是部分匹配
标准替换:
原始文本: This is his idea
:s/his/her/g
替换文本:Ther is her idea
完整单词替换:
原始文本: This is his idea
:s/\/her/
替换文本: This is her idea
所以,如果需要完整替换,需要在关键词前后添加<>,对于一些新手而言,可能会希望使用空格来代替,殊不知,这样可能会导致开始和结束的字符不符合条件。
7使用正则表达式来替换多个文本
原始文本: Linux is good. Life is nice.
:%s/\(good\|nice\)/awesome/g
替换文本: Linux is awesome. Life isawesome.
8交互式地查找替换
可以在命令行中使用c-flag来交互式地查找替换,比如
:%s/awesome/wonderful/gc
将会提示如下信息:
replace with wonderful (y/n/a/q/l/^E/^Y)?
•y:替换当前高亮显示的单词,并高亮显示下一个匹配的词;
•n:不替换当前高亮显示的单词,然后高亮显示下一个匹配的词;
•a:将不再出现提示而替换掉所有剩下匹配的词;
•l:替换当前高亮显示的词,并且中断操作。
9将行号写到文件中
:%s/^/\=line(".") . ". "/g
该命令将会把显示的行号写到文件中去。这个与:set number不同,set number只是显示行数而不会对文件内容有所影响。
10使用等价值来替换一个特殊字符
原始文本: Current file path is ~/test/
:%s!\~!\= expand($HOME)!g
替换文本: Current file path is /home/leo/test/
11在插入一个新的条目时更改所有其他的条目
比如我们有下面的图书列表:
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 3: 5 Awesome Examples For Automatic Word Completion Using CTRL-X
Article 4: Vi and Vim Macro Tutorial: How To Record and Play
Article 5: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 6: How To Add Bookmarks Inside Vim Editor
Article 7: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 8: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 9: 8 Essential Vim Editor Navigation Fundamentals
Article 10: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 11: Transfer the Power of Vim Editor to Thunderbird for Email
Article 12: Convert Vim Editor to Beautiful Source Code Browser
忘记了3rd Article “Make Vim as Your Perl IDE Using perl-support.vim Plugin” ,现在我们要做的就是插入3rd Article “Make Vim as Your Perl IDE Using perl-support.vim Plugin”并且需要把后面的数目需要逐次增加1。
那么我们可以使用命令:
:4,$s/\d\+/\=submatch(0) + 1/
其中:
范围:4,$为从第4行到最后;
\d\表示一个数字的字符串;
\=submatch(0) + 1 取到数字并且加1;
由于这里没有flag,所以默认只会替换第一个吻合的单词。
更换后变为:
Article 1: Vi and Vim Editor: 3 Steps To Enable Thesaurus Option
Article 2: Vim Autocommand: 3 Steps to Add Custom Header To Your File
Article 3: Make Vim as Your Perl IDE Using perl-support.vim Plugin
Article 4: 5 Awesome Examples For Automatic Word Completion Using CTRL-X
Article 5: Vi and Vim Macro Tutorial: How To Record and Play
Article 6: Tutorial: Make Vim as Your C/C++ IDE Using c.vim Plugin
Article 7: How To Add Bookmarks Inside Vim Editor
Article 8: Make Vim as Your Bash-IDE Using bash-support Plugin
Article 9: 3 Powerful Musketeers Of Vim Editor ? Macro, Mark and Map
Article 10: 8 Essential Vim Editor Navigation Fundamentals
Article 11: Vim Editor: How to Correct Spelling Mistakes Automatically
Article 12: Transfer the Power of Vim Editor to Thunderbird for Email
Article 13: Convert Vim Editor to Beautiful Source Code Browser
12将每个句子的首字母大写
:%s/\.\s*\w/\=toupper(submatch(0))/g
该命令将把每个句子的首字母大写。
\.\s*\w --搜索模式,在句点后跟零个或多个空格,然后一个单词;
toupper – 将给定的文本改为大写字母;
submatch(0) –返回匹配的模式
使用vimgrep在多个文件中搜索
:vimgrep leo *.txt --可以使用该命令在当前所有txt文件中搜索leo,如果有多个匹配项,可以使用:cn来跳转到下一个。
命令
描述
:vimgrep pattern *
在多个文件中搜索pattern
:cn
跳转到下一个vimgrep搜索到的项
:cN
跳转到上一个vimgrep搜索到的项
:clist
列出所有vimgrep搜索到的项
:cc number
直接跳转到number对应的项
高亮显示搜索结果
:set hlsearch 该选项将高亮显示搜索的结果
:set nohlsearch该选项将不高亮显示搜索的结果
:nohlsearch 清除高亮显示的结果
Vim增量搜索
:set incsearch该增量搜索模式将在你输入字符的时候就立即定位符合你输入的pattern,同样禁用该选项为:set noincsearch
给力的:match
:match ErrorMsg /Error/
将文件中所有的Error用ErrorMsg配色方案来显示;
比如::match ErrorMsg /printf/将显示如下:
其中,配色方案主要有:
•ErrorMsg
•WarningMsg
•ModeMsg
•MoreMsg
关于配色方案,我们也可以自己设定。
linux vi全字匹配搜索,vi编辑器中的匹配搜索操作相关推荐
- css匹配title,解决css中的匹配问题
问题描述 众所周知在写 css的时候,会根据html 中类的定义或者 id 的定义来写相应的 css代码.给不同的类定义不同的样式,当然为了能够少写一些代码,大家就会在css 中引用匹配.匹配有模糊匹 ...
- python 正则 匹配任意字符串_python中正则匹配
写代码时候,不管是爬虫,还是获取某些特定的资源,我们需要写正则表达式. 因为不常用,有些语法生疏.有时明明觉得自己的语法可以,可就是不行. 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之 ...
- cad特性匹配快捷键命令_CAD中特性匹配(格式刷)的运用
原标题:CAD中特性匹配(格式刷)的运用 特性匹配在CAD制图中也是比较常用的命令之一,所谓特性匹配是以已知的某一样式为标准,去改变另外一个样式时可以用这个命令.从而获得和参照的标准具有一样的格式,它 ...
- linux vi 选中某一列,在 Vim 中进行文本选择操作和使用标志
基于图形界面的文本或源代码编辑器,提供了一些诸如文本选择的功能.我是想说,可能大多数人不觉得这是一个功能.不过像 Vim 这种基于命令行的编辑器就不是这样.当你仅使用键盘操作 Vim 的时候,就需要学 ...
- 【看表情包学Linux】软件包管理器 yum | Vim 编辑器介绍 | Vim 文本批量化操作 | 配置 Vim
- c++两个文档匹配数据_《搜索和推荐中的深度匹配》——1.2 搜索和推荐中匹配统一性...
Garcia-Molina等[1]指出,搜索和推荐中的根本问题是识别满足用户信息需求的信息对象.还表明搜索(信息检索)和推荐(信息过滤)是同一枚硬币的两个方面,具有很强的联系和相似性[2].图1.1 ...
- 转到Visual Studio中的匹配括号吗?
在Visual Studio 2008中,有没有一种方法可以从右括号到右括号? 我发现有很多关于突出显示括号的内容,但是没有关于将光标移动到括号的内容. (此问题的VB.NET版本: 在" ...
- linux 查看日志文件最后两千行中包含 字符‘ERROR’ 的前5 和后5行
cat ../logs/catalina.out | grep -A1000 foo 文件catalina.out 中查找包含foo的后1000行 B是前n行,A是后n行 A for after B ...
- Linux(Ubuntu)操作系统,vi编辑器与gcc编译器的下载与使用(命令参数很详细)
目录 一.什么是编辑器.编译器? 1.1.编辑器下载 1.2.编译器下载 二.常用的三种编辑器 2.1.vi编辑器 2.2.vi编辑器的三种工作模式 2.2.1.命令行模式 2.2.2.输入模式 2. ...
最新文章
- Poj_1274 The Perfect Stall -二分图裸题
- 携手320+合作伙伴,英伟达扔下一枚自动驾驶炸弹,打响新年越野赛 | CES2018
- 跑步app保活_android判断不同手机厂商,打开允许后台运行APP弹窗
- python使用tkinter可以在多个操作系统_在tkinter GUI中使用多个窗口
- HP LoadRunner 12.02 Tutorial T7177-88037教程独家中文版
- ABAP SMARTFORMS 套打
- LINUX C#开发教程
- Matlab符号计算与数值计算对比
- oracle锁表查询及释放进程
- lua如何将用户ip转为地理位置信息
- 虎年全新姓氏头像制作多模板微信小程序2022新版头像制作源码支持多种流量主模式亲测
- 2019年天梯赛第一阶段(1-8)全解
- 深度学习目标检测---使用labelimg对自己的数据集进行标记(windows系统)
- 阿里P7亲自教你!昆明java招聘信息
- 程序猿的24个段子:栈和队列的区别是啥?
- 网络安全:为大家介绍5种常见的加密算法
- 202001 ora-00922: missing or invalid option 密码修改提示;“ORA-28007: the password cannot be reused”解决
- word表格分页时怎样能自动生成表头
- 回望2018,这6家AI+教育公司亮了!| AI最佳掘金案例榜...
- Ceva Dsp公司及产品介绍
热门文章
- Unity制作360°全景背景(内部可见shader)
- java写的小游戏打砖块_java实现打砖块小游戏
- 英语等级考试中的翻车“汉翻英”词汇之(正解)
- 全能赛道、热门方向、稀缺数据,“嬴彻-清华AIR杯”自动驾驶技术大赛火热开赛中
- Stata对cgss2017实证分析
- GCC常用命令与nasm
- java怎么调epass3003,帮助中心
- 特斯拉、吉利车上的那些ADAS系统你都会用吗?
- ROM定制开发入门-linux开发环境安装和准备
- ARCGIS多张影像提取同一条直线上的值(3D analyst剖面线无法解决)——以山西省NDVI为例!