Day 11:批次修改!!

昨天体验了一些快捷键和命令,今天要讲的是在 vim 中也很常用的搜寻与取代

搜寻与取代

vim 的搜寻与取代是由命令 s 达成的,命令格式长这样

:[范围修饰字]s/abcd/efgh/[旗标]

其中 abcd正规表达式(regular expression,缩写 regex,在中国常写成「正则」),regex 除了在 vim 可以用之外,几乎所有程序语言都可以用,还有 grepsed 等 linux 指令也都是使用 regex,关於 regex 的用法在这里就不多提了,MDN 上有很完整的解释
你应该有注意到上面的命令格式里面除了正规表达式之外还有「范围修饰字」和「旗标」,这就是接下来这段的重点啦!

范围修饰字

这个东西也不只是搜寻与取代可以用,只要你觉得需要限制某个指令的作用范围都可以用样的逻辑接下去
范围修饰可写可不写,如果不写的话搜寻与取代就只会在游标在的那一行起作用,加上百分比符号 % 代表作用范围是整份文件,也可以加上行号代表只作用在某一行,如果是两个行号中间以逗号隔开,代表是作用在这两个行号之间

vim replace
范围修饰字范例

范围选取

刚刚的范例中有出现用行号作范围选取,其实范围选取还有一个更简单的方式 ——「选取模式」。选取模式和编辑模式、命令模式是同等地位的东西,进入选取模式的快捷键有下列几个(一样要进到命令模式才能进选取模式)

快捷键 说明
v 一般选取,以「字」为单位
S-v(大写 v ) 一般选取,以「行」为单位
C-v 垂直选取,这个比较不常用,但是需要的时候蛮好用的

选取後一样可以打指令和快捷键,但是这些就只会作用在选取的范围内,常常搭配的有 d(剪下)、y(复制)、:s(搜寻与取代)
再把一个范围选取起来後,如果是快捷键就直接按,如果是命令的话按下冒号 :,平常只有冒号的命令行会先出现 :'<,'>,这串东东代表的就是这一个范围的范围修饰字,不用删掉,直打指令就可以了

vim select
选取结合指令与快捷键

旗标

旗标这个东西主要是在控制搜寻的行为,例如全部取代取代前先问一下之类的,多个旗标可以组合,不管顺序,下面是几个可能会用到的旗标

旗标 说明
g 整行搜寻,如果不加的话只会取代第一个
c 在取代前先确认
i 忽略大小写
vim replace flag
旗标范例

结尾

这两天讲的大部份是操作性质的东西,不需要一次全部记起来,用的多了自然会记得,现在只需要先有个印象就可以了。其实 vim 很多操作、快捷键都很直觉,不妨自己多试试看加了 Shift、CTRL 之後原本的快捷键会有什麽变化
vim 的操作还有很多技巧,如果有兴趣不妨去看看 vim 的文件(用命令 :help )中相关章节(大概是 usr_03~04 左右)的介绍,你会对 vim 有非常全面的认识。虽然文件是英文写的,但是并没有太难的单字,大概国中程度就可以看了


这篇文不小心断更了,呜呜呜,这里是我新的新开的文章系列 https://ithelp.ithome.com.tw/users/20130473/ironman/4804


<<:  Day 6 网路宝石:AWS VPC 架构 Routes & Security (下)

>>:  [Day 3] SRE - Log写好一点,对团队好一些

7. STM32-结合中断来做个红绿灯吧!

既然前几篇介绍了外部中断、Timer中断与USART,那接下来就结合这三种中断来模拟红绿灯出来吧。 ...

Golang - debug工具 DELVE

状况 最近的经验是要把公司的程序码翻新 但由於旧有的程序码技术债实在太过庞大,没办法像以前以往接手到...

D-8. Rails 用Postman测试自己的WEB API && Valid Parentheses

请先安装Postman 今天完成整个CRUD,简单介绍操作Postman。 接续昨天文章 9.修改r...

Day 27-如何测试 terraform 之二:自动化测试写起来辛苦,但跑起来就是一个爽

本章介绍如何使用 terratest 为 terraform 准备整合测试 课程内容与代码会放在 G...

Day 24 利用transformer自己实作一个翻译程序(六) Masking

Masking 需要把填充的部分标记为0,其余部分标记为1,才不会导致填充的部分被误认为是输入 de...