vim - 求一个vim命令的解释

标签 vim

let i=1 | g/aaa\zs/s//\=i/ | let i=i+1

上述命令在匹配模式后添加计数器编号。因此更改了以下文本。

aaab
aaab
aaab

aaa1b
aaa2b
aaa3b

'|'将命令合并为一个命令。在我看来,这些命令是按顺序执行的,首先 let i=1 ,然后 g/aaa\zs/s//\=i/ ,最后 let i=i+1 。从上面的结果来看,s//\=i/**和**let i=i+1是由g命令执行的。谁能解释一下吗? 以下命令执行错误的操作。但不知道为什么。

let i=1 | g/aaa\zs/s//\=i | let i=i+1

最佳答案

s//\=i/ ,替换字符串终止并且 |被 global 视为参数。但是,当您删除尾随 / 时,替换字符串为s消耗 | let i=i+1 。来自 sub-replace-special 的帮助文档,您可以发现:“当替换字符串以“\=”开头时,其余部分将被解释为表达式。”所以表达式i | let i=i+1已评估,但增量在该评估之外不可用。

关于vim - 求一个vim命令的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24220134/

相关文章:

vim - Windows上的GVIM:禁用tmp文件创建的方法

vim - 如何轻松删除放置在另一个目录(vim)中的交换文件?

vim - 如何根据vim中的搜索模式直观地选择行?

vim - VIM:函数名称带有参数的自动完成

ruby-on-rails - Vim E854 : path too long for completion

regex - vim 正则表达式和普通正则表达式有什么区别?

vim - 是否可以让 vim 在我的光标当前所在的括号范围内加下划线?

MacVim 中的 Vim powerline (Lokaltog's) 奇怪的字符

vim - 允许在 cygwin 中点击 vim

Vim 语法隐藏密码