第十四章 Vim之替换

来源:互联网 发布:java开发工程师工资 编辑:程序博客网 时间:2024/05/17 01:09
结识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 

0 0
原创粉丝点击