oeasy教您玩转vim - 53 - # 批量替换
查找细节
回忆上节课内容
我们温习了关于搜索的相关内容
- /正向,?反向
- n保持方向,N改变方向
可以设置
- 是否忽略大写小写
- 是否从头开始查找
- 是否高亮显示
还有一些正则表达式的使用方法
- 行头行尾
^$ - 词头词尾
\<\> - 字符列表
[a-z]、[A-Za-z_] - 包含回车
one\_stwo
- 行头行尾
数量
- 数量
*、?、= - 具体数量
\{1,3} - 非贪婪
\{-}
- 数量
不以什么为开头结尾
- 不以什么为开头
\@<! - 不以什么为结尾
\@!
- 不以什么为开头
- 查找出来怎么替换呢?
查找手册
:h :s

:s命令 对应的是substitude替换- 我们先做个实验环境
:r !ls -lah
具体操作

- 3G跳转到第三行
:s/shiyanlou/oeasy- 把当前行的
shiyanlou换成oeasy
- 把当前行的
我想在同一行里面再换下一个
- 就可以:️
- 找到上一条命令
- 然后再回车执行
- 我想把下一行的
2个oeasy一把都换掉 - 这就要加
flag
添加flag
- 哪个
flag呢? - 我们可以在
:h :s的时候,使用/flag - 也可以
:h s_flags

我们这次的flag是
g- 换一行
:s/shiyanlou/oeasy/g- 可以把这一行所有的
shiyanlou换成oeasy - 我理解这个g指的是行内所有的
- 如果我想默认g-flag就开着呢?
默认g-flag

如果
:se gdefault- 可以设置
g为默认
- 可以设置
- 但是这个只能替换一行
- 我想在某些行的范围内替换怎么办呢?
- 加
range
添加range
精准控制
:3,8s/shiyanlou/oeasy/g- 只替换3-8行的
- 而且开了
gflag - 3,8行
- 每行的都全部替换
全部替换
%相当于1,$:%s/shiyanlou/oeasy/g:1,$s/shiyanlou/oeasy/g- 就会把所有的都替换了
- 但是这个一把都替换了
- 有的时候我还是想具体一个个确认怎么办?

逐个确认

:h s_flags找到一个cc的意思是confirm确认
:%s/shiyanlou/oeasy/gc- 行里的都替换
- 每一个都需要确认
每个逐个确认
- y替换当前匹配
- l替换当前匹配,并退出
- n跳过当前匹配
- esc直接退出
- q直接退出
- a全部替换
- 体会一下
a的快乐
小技巧

/let- 搜索let
cwconstesc- 把当前单词变成const
跳
- n跳过当前匹配
- n再跳过当前匹配
- n还跳过当前匹配
- N往回跳
重做
.
- 需要替换的就替换
n
- 需要跳过的就跳过
N
- 跳错了就跳回来
总结
我们学习了
- 替换
substitude
- 替换
替换单行
:s/shiyanlou/oeasy
加上
range:3,5s/shiyanlou/oeasy:%s/shiyanlou/oeasy
加上
flag:3,5s/shiyanlou/oeasy/g多个替换:3,5s/shiyanlou/oeasy/gc多个替换且逐个确认
- 替换还是很方便的
- 但是我想替换中使用正则表达式
- 可以么?
- 下次再说
[Github地址] (https://github.com/overmind1980/oeasyvim)
[Gitee地址] (https://gitee.com/overmind1980/oeasyvim)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)
oeasy教您玩转vim - 53 - # 批量替换的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转python - 006 - # hello world
Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- 在VS工程中,添加c/c++工程中外部头文件(.h),lib库,dll库的基本步骤
选择工程,右键-工程属性 其中: VC++目录 -->包含目录,对所有的项目及未来新建的项目都有效 c/c++-->常规-->附加包含目录,仅对当前项目有效 绝对路径设置方法: 在V ...
- WPF 获取主线程
WPF线程获取UI线程 WPF中只能是UI线程才可以改变UI控件相关,当采用多线程工作时,可用以下代码获取 UI线程进行操作: App.Current.Dispatcher.Invoke((Act ...
- 【java虚拟机】内存溢出解决思路
转自:https://blog.csdn.net/u013521220/article/details/79523633 内存溢出与数据库锁表的问题,可以说是开发人员的噩梦,一般的程序异常,总是可以知 ...
- CrackMe-Cycle
转载自 OllyDBG入门教程 PS:自己逆在 最后的时候总会崩,不知道为什么. 我们输入用户名 CCDebuger,序列号 78787878,点上面那个"Check"按钮,呵 ...
- 【C#】Enum,Int,String的互相转换 枚举转换
Enum为枚举提供基类,其基础类型可以是除 Char 外的任何整型.如果没有显式声明基础类型,则使用 Int32.编程语言通常提供语法来声明由一组已命名的常数和它们的值组成的枚举. 注意:枚举类型的基 ...
- 给MediaWiki增加看板娘
我们想给我们的mediawiki增加个像我博客里这样的看板娘,那么怎么做才好呢? 其实很简单,只要在相应的模板文件里增加指定代码就好了! 修改模板文件 找到模板文件skins/Vector/Vecto ...
- springboot系列总结(二)---springboot的常用注解
上一篇文章我们简单讲了一下@SpringBootApplication这个注解,申明让spring boot自动给程序进行必要的配置,他是一个组合注解,包含了@ComponentScan.@Confi ...
- 紫色飞猪的研发之旅--06go自定义状态码
在实际开发中,需要前后端需要协商状态码,状态码用于后端返前端时使用.在一个团队中,定义的状态码讲道理应该是一致的,项目开始的起始阶段状态码应该是定义了个七七八八的,随着功能的叠加而不断增加.此系列将围 ...
- 超详细kafka教程来啦
Kafka的概念和入门 Kafka是一个消息系统.由LinkedIn于2011年设计开发. Kafka是一种分布式的,基于发布/订阅的消息系统.主要设计目标如下: 以时间复杂度O(1)的方式提供消息持 ...
- 7-31 堆栈操作合法性 (20 分) PTA
7-31 堆栈操作合法性 (20 分) 假设以S和X分别表示入栈和出栈操作.如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该 ...