Skip to content

Latest commit

 

History

History
29 lines (21 loc) · 1.31 KB

File metadata and controls

29 lines (21 loc) · 1.31 KB

技巧 91: 用寄存器的内容替换

输入替换命令时,可以直接复制寄存器里面的内容,省的打字了

  1. :%s//<C-r>0/g 替换文本为寄存器0里面的内容
  2. 替换命令里面查找域可以为空(使用上次查找命令的模板),但是替换域不能为空
  3. :%s//\=@0/g含义:
    1. \=指向后面是表达式脚本,@0表示返回寄存器0内的内容
    2. 如果是单纯@(后面不接数字),表示的是无名寄存器的内容

例子:使用寄存器实现替换命令

:%s/Pragmatic Vim/Practical Vim/g等价于下面3条命令:

:let @/='Pragmatic Vim'
:let @a='Practical Vim'
:%s//\=@a/g
  1. 第一条命令采用编程方式输入查找模式,等同于执行/Pragmatic Vim<CR>,但是不会在查找历史中留下记录
  2. 第二条命令表示设置寄存器a的内容,等同于高亮选中Practical Vim并执行"ay
  3. 第三条命令表示最终的替换命令
  4. 2种实现方式的区别在于,过一段时间执行,前者还是能够重复,后者只是执行:%s//\=@a/g,寄存器a的内容可能变了,替换的结果可能很不一样
上一篇 下一篇
技巧90: 重用上次的查找模式 技巧92: 重复上一次 substitute 命令