vim/gvim: 文本搜索和替换命令和常用技巧例

这篇具有很好参考价值的文章主要介绍了vim/gvim: 文本搜索和替换命令和常用技巧例。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1. 文本搜索

1.1 基本命令

1.2 全词搜索

1.3 搜索当前字符串

1.4 pattern中包含特殊字符

1.5 忽略大小写的搜索

1.6 高亮(Highlight)现实搜索结果

2. 文本替换

基本语法

range的指定方式

替换命令历史查询和使用

例1:文件中全局替换 

例2:当前行中替换,忽略大小写

例3:在指定的行范围内进行替换

例4:在选中的行中进行替换

例5:针对文件的前若干行进行替换

例6:全词匹配替换

例7:提醒确认的替换(交互确认式替换)

例8:给每一行的行首添加行号

例9:给每一行行尾添加某一字符串

例10:给每一行行首添加某一字符串 

例11:删除或保留所有不包含某字符串的行

例12:删除某字符串

例13:忽略大小写的替换

例14:基于正则表达式的替换


1. 文本搜索

1.1 基本命令

在vim/gvim的normal模式(再任意其它模式按ESC键回到normal mode),按“/”或者“?”后面跟所要搜索的pattern,然后按回车开启对pattern的搜索:

/pattern

?pattern

进入搜索模式后,按“n”表示寻找下一个,按“N”(shift + n)表示寻找上一个。

1.2 全词搜索

以上基本命令只是将pattern当作字符串进行匹配,比如说搜索“/world”的话,文本中的“hello_world”也会匹配上。如果要进行全词(whole word)匹配的话,需要用以"/<pattern\>"的格式进行搜索。

/\<world\>

1.3 搜索当前字符串

将光标放在文本中待搜索字符串pattern上,然后按“*”表示向前搜索该pattern,按“#”表示向后搜索该pattern。持续按“*”或者“#”的话会持续向前或者向后搜索。

1.4 pattern中包含特殊字符

pattern中包含特殊字符时,需要用“\”将其进行转义处理。

比如说,要搜索文本文件中的scoreboard[4], 这里"["和“]”是特殊字符。

错误的搜索命令:

/scoreboard[4]

正确的搜索命令:

 /scoreboard\[4\]

1.5 忽略大小写的搜索

缺省条件下vim的搜索是case-sensitive(大小敏感的) ,可以用属性“\c”来告诉vim在搜索时忽略大小写,如下所示:

/\<pattern\>\c

另一个解决办法是用以下命令告诉vim在本次编辑过程中都忽视大小写。

:set ignorecase 

当然,也可以在~/.vimrc文件中追加以上这条命令,这样,vim就会把缺省行为修改为搜索处理中忽略大小写。

1.6 高亮(Highlight)现实搜索结果

Vi(m) has a useful feature that highlights search results in the file. To enable highlighting, type the following command in the text editor:

:set hlsearch

To disable this feature run:

:set !hlsearch

当然,同样可以在~/.vimrc中追加这条命令使其成为缺省行为。

2. 文本替换

基本语法

gvim编辑文本时可以用以下命令进行文本替换。

:[range]s[ubstitute]/{old_string}/{new_string}/[flags] [count]

可以把old_string看作是一个用于搜索匹配的pattern(后文pattern与old_string互换使用)。 

其中,

        "s" 指的是substitute(替换)

        如果没有指定[range] 和 [count]的话,仅对当前行进行处理。当前行是指光标所处行。

        “/”表示定界符(delimiter),但是...Instead of the slash character (/), you can use any other non-alphanumeric single-byte character except as a delimiter. This option is useful when you have the ‘/’ character in the search pattern or the replacement string.比如说:

:s|foo|bar|

range的指定方式

        百分号 % 用于表示从第一行到最后一行,即以整个文件作为处理范围。

        用逗号分隔的两个数字表示搜索范围,两个数字分别表示起始行号和终止行号(inclusive,即包含这两个数字所指的行):

:3,10s/foo/bar/g

        “.”表示当前行,“$”表示最后一行。

:.,$s/foo/bar/

        还可以用+和-来表示基于前一个行号指示,指定第2个行号指示相对于前一个的偏移值。比如说从当前行到从当前行后数第4行为止的范围内进行替换:

:.,+4s/foo/bar/g 

flags有以下几种:

  1. [c] Confirm each substitution.即每次替换都提请确认。如果不加c则自动替换掉。
  2. [g] Replace all occurrences in the specified range. 指定范围中所有找到的old_string都替换成new_string。如果不指定g,则仅替换指定范围中找到的第一个old_string
  3. [i] Ignore case for the pattern. 忽视大小写。

替换命令历史查询和使用

vim会跟踪记录当前编辑会话期间所有命令。可以键入“:s”以查询当前编辑会话期间所有替换命令,用up/down来选定,然后回车即可重复执行。当然也可以在选定后进行必要的修改之后再执行。

例1:文件中全局替换 

:%s/old_string/new_string

:%s/old_string/new_string/g

在以上例中,"%"表示指定整个文件作为操作范围,即%与g结合表示对整个文件进行全局替换

例2:当前行中替换,忽略大小写

:s/I/We/gi

例3:在指定的行范围内进行替换

:1,10s/helo/hello/g

将从第1行到第10行范围内的‘helo’全部替换为‘hello’。

例4:在选中的行中进行替换

首先,选定所要操作的行范围。可用用鼠标操作,也可以按Ctrl+V,然后用导航键(navigation key,即四个箭头键)进行范围选中。然后点击“:”会自动生成“:'<,’>”,然后可以用如下命令进行选定范围内的替换:

:'<,'>s/helo/hello/g

例5:针对文件的前若干行进行替换

:s/helo/hello/g 4

最后的参数“4”表示对文件的前4行进行替换操作。

例6:全词匹配替换

:s/\<his\>/her/

要点是用\<, \>将old_string圈起来。

\<, \> – word boundary

例7:提醒确认的替换(交互确认式替换)

:%s/old_string/new_string/gc

“c”表示要求提示确认。

执行以上命令,在每次找到old_string时会给出以下提示:

replace with wonderful (y/n/a/q/l/^E/^Y)?
  • y – Will replace the current highlighted word. After replacing it will automatically highlight the next word that matched the search pattern
  • n – Will not replace the current highlighted word. But it will automatically highlight the next word that matched the search pattern
  • a – Will substitute all the highlighted words that matched the search criteria automatically.
  • l – This will replace only the current highlighted word and terminate the find and replace effort.

例8:给每一行的行首添加行号

:%s/^/\=line(".") . ". "/g

When the string starts with ‘\=’, it should be evaluated as an expression. Using the ‘line’ function we can get the current line number. By combining both the functionality the substitution does the line numbering of all lines.

Note: This is different from the “:set number” where it will not write the line numbers into the file. But when you use this substitution you are making these line number available inside the file permanently.

例9:给每一行行尾添加某一字符串

:%s/$/StringToBeAppend>/g

例10:给每一行行首添加某一字符串 

:%s/^/StringToBeAppend/g

例11:删除或保留所有不包含某字符串的行

在比如说芯片仿真时会碰到大量打印Warning或者Error信息的情况,这是想过滤一下仅保留包含Error的行的话,可以使用以下命令:        

:g!/Error/d

反之,如果要删除所有包含指定字符串的行保留所有其它行命令如下:

:g/ERROR/d 

例12:删除某字符串

删除某字符串可以理解为用空字符串(不是空格!)来替换该字符串!

:s/foo//g

例13:忽略大小写的替换

缺省动作是大小写敏感(case-sensitive)的,如果需要忽略对pattern(oldstring)的大小写,可以用i选项来实现:

:s/Foo/bar/gi

另外一种方法是在pattern后面加上“\c”,也表示忽略大小写。

反之,在pattern后面加上“\C”,ze表示要求区分大小写(有时候将缺省配置修改为忽略大小写时这个就可以用于使能区分大小写)。

例14:基于正则表达式的替换

太难。。。新手不宜。。。

ref1: How to Search a Word in Vim / Vi {Multiple Find Options} (phoenixnap.com)

ref2:Vi and Vim Editor: 12 Powerful Find and Replace Examples (thegeekstuff.com)

ref3: Find and Replace in Vim / Vi | Linuxize 文章来源地址https://www.toymoban.com/news/detail-632974.html

到了这里,关于vim/gvim: 文本搜索和替换命令和常用技巧例的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • vim文本编辑器,常用命令

    目录 1、常用模式 2、基本移动光标 3、插入和替换文本 4、删除和复制文本 5、搜索和替换 6、保存和退出 Vim是一款功能强大的文本编辑器,在Linux系统中被广泛使用。它提供了丰富的编辑和操作功能,适用于编程、文件编辑、配置文件修改等各种任务。 下面是对Vim常用场景详

    2024年01月16日
    浏览(56)
  • 【Linus】vim的使用:命令模式、底行模式、插入模式、视图模式、替换模式的常用操作介绍

    目录 注意:以下操作前提是要确保你输入法是英文模式 一、进入和退出各个模式的方法 1.命令模式 2.底行模式 3.插入模式 4.视图模式 5.替换模式 二、在命令模式中一些常用的操作 1.移动光标 2.删除文字 3.复制/粘贴 4.替换 5.撤销上一次操作 6.更改 7.跳至指定的行 三、在底行

    2024年02月09日
    浏览(47)
  • vim 替换命令 “:s“

    命令 :s/old/new 【注意】 光标所在行; 第一个匹配项。 命令 :s/old/new/g 【注意】 和上一个命令的注意事项一样; 和上一个命令的差别在于最后的 ‘/g’ 。 命令 :#,#s/old/new 其中 #,# 代表行号 比如,下面的指令把从第 5 行开始到第 99 行的第一个 the 替换为 The ,包括第 5 行,也

    2024年02月10日
    浏览(35)
  • PyCharm全局搜索与替换教程:提高编程效率的技巧

    掌握PyCharm中全局搜索与替换的方法,可以大幅提升编程工作的效率。本文介绍了两种快速查找和替换代码中关键字的技巧,帮助开发者节省时间,优化工作流程。

    2024年04月29日
    浏览(63)
  • Vim学习(四)——命令使用技巧

    打开文本默认模式,按**【ESC】**重新进入 【/】 :搜索匹配 按**【i / a / o】**键均可进入文本编辑模式, 只是插入位置略有不同 按**【:】**进入

    2024年02月11日
    浏览(31)
  • 【正点原子STM32】KEIL MDK5使用技巧(文本美化、代码编辑、查找&替换技巧、工程编译问题定位、窗口视图管理)

    一、文本美化 1.1、编辑器设置 1.2、字体和颜色设置 1.3、用户设置 1.4、代码提示语法检测 1.5、global.prop文件妙用 二、代码编辑技巧 2.1、Tab键的妙用 2.2、快速定位函数或变量被定义的地方 2.3、快速注释快速取消注释 三、查找替换技巧 3.1、快速打开头文件 3.2、查找功

    2024年01月23日
    浏览(68)
  • Linux vim光标移动/退出命令/撤退操作/文本查找 等命令大全

    vim是Linux环境下一款强大、高度可定制的文本编辑工具。能够编辑任何的ASCII格式文件,对内容进行创建、查找、替换、修改、删除、复制、粘贴等操作。编写文件时,无需担心目标文件是否存在,若不存在则会自动在内存中创建,随保存操作输出到硬盘中。 哈喽,大家好,

    2024年02月05日
    浏览(51)
  • VIM统计搜索关键词命令

    :%s/.//gn        统计字符数 :%s/i+//gn    统计单词数 :%s/^//n           统计行数 :%s/keyword//g      统计任何地方出现的 \\\"keyword\\\"   :%s/keyword//gn    统计任何地方出现的 \\\"keyword\\\" :%s/keyword/ :这部分是 Vim 的替换命令的开头。:%s 表示在整个文件范围内进行替换操作。keyword 是要查

    2024年02月09日
    浏览(64)
  • vim的使用、vim入门的三种常用模式、以及vim中常用的命令(超详细)

    vim 入门的三种常用模式:分别是 1. 命令模式、2. 插入/编辑模式、3. 底行模式 1. 命令模式         控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode 如下,这个就是命令模式: 2. 插入/编辑模式         只有在Insert m

    2024年02月05日
    浏览(39)
  • vim系列之常用命令

          在本章节介绍vim编辑器常用命令。       2.1vim编辑器常用命令:

    2024年02月10日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包