输入替换命令时,可以直接复制寄存器里面的内容,省的打字了
:%s//<C-r>0/g
替换文本为寄存器0
里面的内容- 替换命令里面查找域可以为空(使用上次查找命令的模板),但是替换域不能为空
:%s//\=@0/g
含义:\=
指向后面是表达式脚本,@0
表示返回寄存器0内的内容- 如果是单纯
@
(后面不接数字),表示的是无名寄存器的内容
:%s/Pragmatic Vim/Practical Vim/g
等价于下面3条命令:
:let @/='Pragmatic Vim'
:let @a='Practical Vim'
:%s//\=@a/g
- 第一条命令采用编程方式输入查找模式,等同于执行
/Pragmatic Vim<CR>
,但是不会在查找历史中留下记录 - 第二条命令表示设置寄存器a的内容,等同于高亮选中
Practical Vim
并执行"ay
- 第三条命令表示最终的替换命令
- 2种实现方式的区别在于,过一段时间执行,前者还是能够重复,后者只是执行
:%s//\=@a/g
,寄存器a的内容可能变了,替换的结果可能很不一样
上一篇 | 下一篇 |
---|---|
技巧90: 重用上次的查找模式 | 技巧92: 重复上一次 substitute 命令 |