如何在Vim ex命令脚本中生成循环

如何在Vim ex命令脚本中生成循环,vim,Vim,考虑以下Vim ex命令 :let i=1 | '<,'>g/^/ s/^\ *-/\=i/ | let i+=1 :让i=1 |’这是:全局命令的一般模式: :g/foo/command 因为第二个分隔符之后的所有内容都被视为一个命令,所以每次执行该命令时,计数器都会递增:每个匹配行一次。全局命令的模式是: :range g[lobal][!]/pattern/cmd 全局命令的工作方式是首先扫描行的[范围],并标记匹配发生的每一行。在第二次扫描中,[cmd]对每个标记行执行

考虑以下Vim ex命令

:let i=1 | '<,'>g/^/ s/^\ *-/\=i/ | let i+=1

:让i=1 |’这是
:全局
命令的一般模式:

:g/foo/command

因为第二个分隔符之后的所有内容都被视为一个命令,所以每次执行该命令时,计数器都会递增:每个匹配行一次。

全局命令的模式是:

:range g[lobal][!]/pattern/cmd
全局命令的工作方式是首先扫描行的[范围],并标记匹配发生的每一行。在第二次扫描中,[cmd]对每个标记行执行,并在其行号前加上前缀。如果行被更改或删除,其标记将消失。[range]的默认值是整个文件。(有关更多详细信息,请参阅)

现在我们来分析一下

:let i=1 | '<,'>g/^/ s/^\ *-/\=i/ | let i+=1

:让i=1 |'“第二个分隔符之后的所有内容都被视为一个命令。”这很有趣!感谢您回答@romainl:DIs有没有办法将其他字符设置为
\=i
?看来这对我不起作用。例如,
:let i=1 |“我建议
:help sub replace expression
获取有关
\=i
的信息,因为
:help:s\=
当前指向您。@Jake0x32 use
:let i=1 |“非常感谢!你的详细解释帮助我编造了一个不需要可视化
的递增数字替换