Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >在vim和vi中查找和替换字符串

在vim和vi中查找和替换字符串

作者头像
入门笔记
发布于 2022-06-02 10:03:57
发布于 2022-06-02 10:03:57
17.8K00
代码可运行
举报
文章被收录于专栏:入门小站入门小站
运行总次数:0
代码可运行

Vim是最受欢迎的命令行文本编辑器。它预装在macOS和大多数Linux发行版上。在Vim中查找和替换文本非常容易。

基本查找和替换

在Vim中,可以使用:substitute:s)命令来查找和替换文本。

要在Vim中运行命令,必须处于normal模式,这是启动编辑器时的默认模式。要从其他任何模式返回normal模式,只需按 Esc键。

替换命令的一般形式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:[range]s/{pattern}/{string}/[flags] [count]

该命令在[range]中的每一行中搜索{pattern},并将其替换为{string}。是与命令[count]相乘的正整数。

如果未给出[range][count],则仅替换当前行中找到的pattern。当前行是光标所在的行。

例如,要在当前行中搜索字符串 foo的第一个匹配项,并将其替换为 bar,则可以使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:s/foo/bar/

要替换当前行中所有出现的搜索模式,请添加g标志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:s/foo/bar/g

如果要搜索并替换整个文件中的所有匹配的模式,请使用百分比字符%作为range。此字符表示从文件的第一行到最后一行的范围:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:%s/foo/bar/g

如果省略{string}部分,则将其视为空字符串,并删除匹配的模式。以下命令删除当前行中字符串 foo的所有匹配:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:s/foo//g

除了斜杠字符(/),你还可以使用任何其他非字母数字的单字节字符作为分隔符。当你在搜索模式中包含 /字符或替换字符串时,此选项很有用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:s/foo/bar/gc

要确认每次替换,请使用c标志:

:s/foo/bar/gc

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
replace with bar (y/n/a/q/l/^E/^Y)?

y替换匹配项,或按l替换匹配项并退出。按n跳过,按qEsc退出。a选项替换匹配项和所有其余匹配项。要向下滚动屏幕,请使用CTRL+Y,要向上滚动,请使用CTRL+E

你还可以使用正则表达式作为搜索模式。下面的命令将所有以 foo开头的行替换为 Vim is the best:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:%s/^foo.*/Vim is the best/gc

^(脱字符)符号与行的开头匹配,.*与任意数目的任何字符匹配。

区分大小写

默认情况下,搜索操作区分大小写;搜索 FOO将不匹配 Foo。

要忽略搜索模式的大小写,请使用i标志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:s/Foo/bar/gi

强制忽略大小写的另一种方法是在搜索模式后附加\c。例如,/Linux\c执行忽略大小写搜索。

如果你更改了默认大小写设置,并且想要执行区分大小写的搜索,请使用I标志:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:s/foo/bar/gi

模式后的大写\C也会强制进行大小写匹配搜索。

搜索范围

未指定范围时,替代命令仅在当前行中运行。

范围可以是一行或两行之间的范围。行说明符用,;字符分隔。可以使用绝对行号或特殊符号来指定范围。

例如,要将从第3行到第10行的所有行中所有出现的 foo替换为 bar,你可以使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:3,10s/foo/bar/g

该范围包括所有内容,这意味着该范围包括第一行和最后一行。

.字符表示当前行,而$-美元符号表示最后一行。在从当前行到最后一行的所有行中替换 foo:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:.,$s/foo/bar/

还可使用 +或-符号来设置行说明符,其后是从前一个行号中添加或减去的数字。如果省略符号后的数字,则默认为1。

例如,要从当前行和接下来的四行开始,用 bar替换每个 foo,请输入:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:.,+4s/foo/bar/g

替换整个单词

替代命令将模式查找为字符串,而不是整个单词。例如,如果你正在搜索 gnu,则搜索结果匹配 gnu嵌入较大词(例如 cygnus或 magnum)中的内容。

要搜索整个单词,请键入\<标记单词的开头,输入搜索模式,键入>标记单词的结尾:

例如,要搜索 foo一词,你可以使用\<foo>

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:s/\<foo\>/bar/

替代历史

Vim跟踪你在当前会话中运行的所有命令。要浏览历史记录以查找先前的替代命令,请输入:s,然后使用向上/向下箭头键查找先前的替代操作。要运行命令,只需按Enter。你也可以在执行操作之前编辑命令。

范例

注释行(在行前添加#)从5到20:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:5,20s/^#//

取消注释的第5行到第20行,恢复之前的更改:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:5,20s/^#//

将苹果,橙色和芒果的所有实例替换为水果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:%s/apple\|orange\|mango/fruit/g

删除每行末尾的尾随空格:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:%s/\s\+$//e
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 入门小站 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于在vim中的查找和替换
在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。 Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。
休辞醉倒
2019/07/25
26.9K0
vim中优雅地查找和替换
这篇文章来详细介绍 Vim 中查找相关的设置和使用方法。包括查找与替换、查找光标所在词、高亮前景/背景色、切换高亮状态、大小写敏感查找等。 查找 在normal模式下按下/即可进入查找模式,输入要查找的字符串并按下回车。Vim会跳转到第一个匹配。按下n查找下一个,按下N查找上一个。 Vim查找支持正则表达式,例如/vim匹配行尾的"vim"。需要查找特殊字符需要转义,例如/vim\ 注意查找回车应当用\n,而替换为回车应当用\r(相当于<CR>)。 大小写敏感查找 在查找模式中加入\c表示大小写不敏感查找,
入门笔记
2022/06/02
3.7K0
Vim查找替换
大家好,又见面了,我是你们的朋友全栈君。 1、查找 /pattern :向下查找pattern匹配字符串 ?pattern:向上查找pattern匹配字符串 使用了查找命令之后,使用如下两个键
全栈程序员站长
2022/07/02
3.1K0
vi/vim常用命令
ctrl + b 上一页 ctrl + f 下一页 ctrl + u 上半页 ctrl + d 下半页
全栈程序员站长
2022/08/31
8880
linux中vi,vim操作技巧
原文链接:https://rumenz.com/rumenbiji/linux-vi-vim-skills.html
入门笔记
2021/10/12
2.7K0
这可能是最全最实用的Vim操作集合
Vim 作为已经 29 岁(1991.11.2)的老牌文本编辑器,比“名名”年龄还大,在2019年 StackOverflow 的统计数据中仍然排在了总榜第五名,占据了25.4%的“市场”。Vim 不同于其他编辑器或者 IDE,它被称作“编辑器之神”,它小巧、启动极快、可运行在任何主流系统上、各种快捷操作、所有 Unix 或类 Unix 系统都预装了 Vi 或 Vim,而且很多编辑器、IDE 都提供 Vim 插件,学会了 Vim 可以一套快捷键走遍天下,而且可以和其他编辑器实现优势互补,编辑用 Vim,项目结构、文件结构、长得好看等用其他编辑器。Vim 学习一开始较难,一旦上手,就如神兵利器解封,助你在文本编辑披荆斩棘。
别打名名
2020/07/29
2.2K0
这可能是最全最实用的Vim操作集合
有关vi(vim)的常用命令
导读 vi(vim)是上Linux非常常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi(vim)命令繁多但是如果使用灵活之后将会大大提高效率。vi是“visual interface”的缩写,vim是vi IMproved(增强版的vi)。在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim。下面vps侦探整理一下vi的使用教程:包含vi的基本介绍、使用模式、文件的打开关闭保存、插入文本或新建行、移动光标、删除、恢复字符或行、搜索等等,算是一篇比较适合新手学习vi的教程。
zenRRan
2018/04/10
1.5K0
vim的快捷键大全
vim中Nyy可以复制光标后的N行。有时我们不容易得出行数,这时可以用做标记的方法来制定复制范围:
王小雷
2019/05/26
2.2K0
linux之vi,vim命令
表示当前行的下一行的行尾b按照单词向前移动 字首e按照单词向后移动 字尾w按照单词向后移至次一个字首H移动到屏幕最上 非空白字M移动到屏幕中央 非空白字L移动到屏幕最下 非空白字G移动到文档最后一行gg移动到文档第一行v进入光标模式,配合移动键选中多行Ctrl+f向下翻页Ctrl+b向上翻页u撤销上一次操作``回到上次编辑的位置dw删除这个单词后面的内容dd删除光标当前行dG删除光标后的全部文字d$删除本行光标后面的内容d0删除本行光标前面的内容y复制当前行,会复制换行符yy复制当前行的内容yyp复制当前行到下一行,此复制不会放到剪切板中nyy复制当前开始的 n 行p,P,.粘贴ddp当前行和下一行互换位置J合并行Ctrl+r重复上一次动作Ctrl+z暂停并退出ZZ保存离开xp交换字符后面的交换到前面~更换当前光标位置的大小写,并光标移动到本行右一个位置,直到无法移动
入门笔记
2022/06/02
22.2K0
vi/vim 文件查找与替换【vim】
有时候我们需要整个文件或者整个目录替换一些字符, vim强大的替换和查找便派上用场了、
sinnoo
2021/07/27
1.8K0
vim实用笔记
安装插件管理器 git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim 到github仓库地址 查看使用方式 vim操作技巧 . 重复命令 . 命令重复上次的修改 什么是修改:除了普通模式中执行的修改命令之外,每次进入插入模式时,也会形成一次修改。从进入插入模式的那一刻起,直到返回普通模式为止,为一次修改。 将以下内容进行缩放 Line one Line two Line three Line fo
章鱼喵
2018/06/27
1.2K0
linux 之 vi,vim 命令
原文链接:https://rumenz.com/rumenbiji/linux-vi-vim.html
入门笔记
2021/10/11
7.4K0
VSC x VIM - 反正多学几个快捷键没有坏处
如上配置之后可以通过 <space><space>w{char} 快速跳转到包含特定字母的字符的开头
szhshp
2022/10/31
1.3K0
VSC x VIM - 反正多学几个快捷键没有坏处
vim基础命令,查找和替换
vim简单的命令用着还好。比如插入,删除,查询。但替换就用的比较少。所以,还是需要用的时候拿出来对照者看。
Ryan-Miao
2019/08/24
3K0
史上最全VIM使用手册
vim是一个向上兼容于vi的文本编辑器,可用于编辑各种纯文本。它对编辑程序特别有用。 基本模式: 编辑模式:默认编辑文件进入的模式 输入模式: 末行模式:内置的命令行接口 基本使用: # vim [options] [file ..] +#:打开文件后,直接让光标处于第#行的行首; +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行;
小小科
2019/12/30
3K0
学会这21条,你离Vim大神就不远了
导语:作者本人是 Vim 的重度使用者,就因为喜欢上这种双手不离键盘就可以操控一切的feel,Vim 可以让人对文本的操作更加精准、高效。对于未使用过 Vim 的朋友来说,可能还无法体会到这种感觉。由于使用 Vim 有一定的学习成本,只有做到非常熟练的程度才能感受到它带来的快捷。
AI科技大本营
2019/08/20
1.8K0
学会这21条,你离Vim大神就不远了
日更系列:使用vim像IDE一样搜索替换文本
还比如说你通过vim的可视范围选择,通过CTRL + V ,使用方向键选择你要标注的文本区域,然后按‘:’ 会自动敲入 :'<,’> ,然后使用命令进行替换
mariolu
2022/05/04
1.2K0
vim 文本编辑器[通俗易懂]
1) 模式转换 a) 【i】:在当前光标所在字符的前面,转为输入模式 b) 【a】:在当前光标所在字符的后面,转换为输入模式 c) 【o】:在当前光标所在行的下方,新建一行,并转换为输入模式: d) 【I】:在当前光标所在行的行首,转换为输入模式 e) 【A】:在当前光标所在行的行尾,转换为输入模式 f) 【O】:在当前光标所在行的上方,新建一行,并转换为输入模式; g) 【cc】删除当前行并输入新内容,相当于S。扩展【#cc】 h) 【C】删除当前光标到行尾,并切换成插入模式
全栈程序员站长
2022/09/06
4.4K0
vim 文本编辑器[通俗易懂]
【总结】vim命令使用总结,该来的还是躲不掉啊晕
曾经我也天真的觉得如今很多软件都可以充当文本编辑器,像vim上手这么麻烦的可以替代
自学气象人
2023/06/20
7100
【总结】vim命令使用总结,该来的还是躲不掉啊晕
关于vim的简单设置以及使用技巧
vim快速指南: vim 使用技巧: 1、认识.命令 最理想的编辑模式:一次按键移动,一次编辑操作 .命令可以重复上一次的修改操作 在普通模式下: j切换到下一行 A切换到本行的行末,并进入插入模式 注意:一般情况下将j.两个命令联合使用是比较常见的选择 可能这里你觉得.命令并没有什么特别的地方,but“上一次的修改”其实是有很多含义滴 比如: 普通模式下:     x命令表示删除当前行光标所在字符,下一次执行.命令则是删除当前光标字符操作     >G命令表示修改当前行到行末(>g
BGBiao
2018/02/26
9500
相关推荐
关于在vim中的查找和替换
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验