玩转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编辑器中的匹配搜索操作相关推荐

  1. css匹配title,解决css中的匹配问题

    问题描述 众所周知在写 css的时候,会根据html 中类的定义或者 id 的定义来写相应的 css代码.给不同的类定义不同的样式,当然为了能够少写一些代码,大家就会在css 中引用匹配.匹配有模糊匹 ...

  2. python 正则 匹配任意字符串_python中正则匹配

    写代码时候,不管是爬虫,还是获取某些特定的资源,我们需要写正则表达式. 因为不常用,有些语法生疏.有时明明觉得自己的语法可以,可就是不行. 正则表达式是一种文本模式,包括普通字符(例如,a 到 z 之 ...

  3. cad特性匹配快捷键命令_CAD中特性匹配(格式刷)的运用

    原标题:CAD中特性匹配(格式刷)的运用 特性匹配在CAD制图中也是比较常用的命令之一,所谓特性匹配是以已知的某一样式为标准,去改变另外一个样式时可以用这个命令.从而获得和参照的标准具有一样的格式,它 ...

  4. linux vi 选中某一列,在 Vim 中进行文本选择操作和使用标志

    基于图形界面的文本或源代码编辑器,提供了一些诸如文本选择的功能.我是想说,可能大多数人不觉得这是一个功能.不过像 Vim 这种基于命令行的编辑器就不是这样.当你仅使用键盘操作 Vim 的时候,就需要学 ...

  5. 【看表情包学Linux】软件包管理器 yum | Vim 编辑器介绍 | Vim 文本批量化操作 | 配置 Vim

  6. c++两个文档匹配数据_《搜索和推荐中的深度匹配》——1.2 搜索和推荐中匹配统一性...

    Garcia-Molina等[1]指出,搜索和推荐中的根本问题是识别满足用户信息需求的信息对象.还表明搜索(信息检索)和推荐(信息过滤)是同一枚硬币的两个方面,具有很强的联系和相似性[2].图1.1 ...

  7. 转到Visual Studio中的匹配括号吗?

    在Visual Studio 2008中,有没有一种方法可以从右括号到右括号? 我发现有很多关于突出显示括号的内容,但是没有关于将光标移动到括号的内容. (此问题的VB.NET版本: 在" ...

  8. linux 查看日志文件最后两千行中包含 字符‘ERROR’ 的前5 和后5行

    cat ../logs/catalina.out | grep -A1000 foo 文件catalina.out 中查找包含foo的后1000行 B是前n行,A是后n行 A for after B ...

  9. Linux(Ubuntu)操作系统,vi编辑器与gcc编译器的下载与使用(命令参数很详细)

    目录 一.什么是编辑器.编译器? 1.1.编辑器下载 1.2.编译器下载 二.常用的三种编辑器 2.1.vi编辑器 2.2.vi编辑器的三种工作模式 2.2.1.命令行模式 2.2.2.输入模式 2. ...

最新文章

  1. Poj_1274 The Perfect Stall -二分图裸题
  2. 携手320+合作伙伴,英伟达扔下一枚自动驾驶炸弹,打响新年越野赛 | CES2018
  3. 跑步app保活_android判断不同手机厂商,打开允许后台运行APP弹窗
  4. python使用tkinter可以在多个操作系统_在tkinter GUI中使用多个窗口
  5. HP LoadRunner 12.02 Tutorial T7177-88037教程独家中文版
  6. ABAP SMARTFORMS 套打
  7. LINUX C#开发教程
  8. Matlab符号计算与数值计算对比
  9. oracle锁表查询及释放进程
  10. lua如何将用户ip转为地理位置信息
  11. 虎年全新姓氏头像制作多模板微信小程序2022新版头像制作源码支持多种流量主模式亲测
  12. 2019年天梯赛第一阶段(1-8)全解
  13. 深度学习目标检测---使用labelimg对自己的数据集进行标记(windows系统)
  14. 阿里P7亲自教你!昆明java招聘信息
  15. 程序猿的24个段子:栈和队列的区别是啥?
  16. 网络安全:为大家介绍5种常见的加密算法
  17. 202001 ora-00922: missing or invalid option 密码修改提示;“ORA-28007: the password cannot be reused”解决
  18. word表格分页时怎样能自动生成表头
  19. 回望2018,这6家AI+教育公司亮了!| AI最佳掘金案例榜...
  20. Ceva Dsp公司及产品介绍

热门文章

  1. Unity制作360°全景背景(内部可见shader)
  2. java写的小游戏打砖块_java实现打砖块小游戏
  3. 英语等级考试中的翻车“汉翻英”词汇之(正解)
  4. 全能赛道、热门方向、稀缺数据,“嬴彻-清华AIR杯”自动驾驶技术大赛火热开赛中
  5. Stata对cgss2017实证分析
  6. GCC常用命令与nasm
  7. java怎么调epass3003,帮助中心
  8. 特斯拉、吉利车上的那些ADAS系统你都会用吗?
  9. ROM定制开发入门-linux开发环境安装和准备
  10. ARCGIS多张影像提取同一条直线上的值(3D analyst剖面线无法解决)——以山西省NDVI为例!