第十四章 Vim之替换

结识substitute命令
:[rangs]s[ubstitute]/{pattern}/{string}/[flags]

利用标志位调整substitue命令的行为
标志位g使得substitutem命令可在全局范围内执行,即可以修改一行内的所有匹配,而不仅仅是第一处匹配。
标志位c让我们有机会可以确认或拒绝每一处修改。
标志位n会抑制正常的替换行为,即让vim不执行替换操作,而只是报告本次substitute命令的匹配的个数。
标志位e用于屏蔽这些错误提示。
标志位&仅仅用于指示vim重用上一次substitute命令所用过的标志位。

替换域中的特殊字符

符号 描述
\r 插入一个换行符
\t 插入一个制表符
\\ 插入一个反斜杠
\1 插入第1个子匹配
\2 插入第2个子匹配
\0 插入匹配模式的所有内容
& 插入匹配模式的所有内容
~ 使用上一次调用:substitute时的{string}
\={vim script} 执行{Vim script}表达式,并将返回的结果作为替换{string}
   


手动控制每一次替换操作
:%s/content/copy/gc

答案 用途
y 替换此处匹配
n 忽略此处匹配
q 退出替换工程
l “last”-替换此处后退出
a “all”-替换此处与之后所有的匹配
<C-e> 向上滚动屏幕
<C-y> 向下匹配屏幕

执行substitute命令通常包括两个步骤,一是撰写查找模式,二是设计合适的替换字符串。
在命令行中输入<C-r>/,即可把上次的查找内容粘贴进来。

用寄存器的内容替换     
将替换域留空,意味着substitute命令会用空的字符串替换每一处匹配。即所有的匹配被删除了。
<C-r>{register},我们可以将寄存器的内容插入到替换域。
=》:%s//<C-r>0/g
当我们输入<C-r>/0时,Vim会把寄存器0的内容粘贴进来,这意味着我们可以在执行substitute命令之前对其进行一番检查。

重复上一次substitute命令
:&&命令,这两处&符号的含义有所不同。前一个&作为Ex命令:&的组成部分,用作重复上一次的:substitute命令(参见:h :&),而第二个&则会重用上一次:s命令的标志位。
:&&命令本身只作用于当前行,:’<,’>&&会作用于高亮选区,而:%&&会作用于整个文件。g&命令作为:%&&的快捷方式。

在替换过程中执行算术运算
查找模式、substitute命令

交换两个或更多的单词
返回一个单词
:h submatch(0) only for an expression in a :substitute command. Returns the {nr}’th sub match of the matched text. When {nr} is 0 the whole matched text is returned.

Abolish.vim:超级substitute命令,https://github.com/tpope/vim-abolish
:%S/{man,dog}/{dog,man}/g 实现单词man和dog之间的交换操作。

在多个文件中执行查找与替换操作
为了在工程范围内执行查找操作,我们将用到:vimgrep命令

/Pragmatic\ze Vim
:vimgrep /<C-r>// **/*.txt
:Qargs
:argdo %s//Practical/g
:argdo update
最后3条命令可以连起来使用,:Qargs | argdo %s//Practical/g | update 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值