解码Vim查找/替换调用函数的字符串

时间:2014-01-09 20:18:05

标签: vim

我使用以下Vim命令行将行号插入行的开头:

:let i = 1 | %s/^/\='LINE_' . Inc()/g

Inc()是一个增加i变量的函数。

这一切都很好。我的问题:

1)点在替换部分中做了什么?:

:let i = 1 | %s/^/\='LINE_' . Inc()/g
                            ^        

2)管道角色做什么?是否有实际的管道,或者只是语法?

3)\=做了什么?我认为它用于调用函数,但Vim只显示\=的信息作为正则表达式中的量词。

4)我无法在行号和实际行的第一个字符后插入空格。我怎样才能做到这一点?我在替换部件Inc()之后放置的任何内容都会被忽略或导致 E15无效表达式错误。

我在Windows 7上使用Vim 7.3。

1 个答案:

答案 0 :(得分:1)

一些解释:

  1. .表达式将连接两个字符串。请参阅:h expr-.
  2. |将与ex-commands分开。请参阅:h :bar
  3. \=命令中的:s开头的替换意味着替换的其余部分将被视为vim表达式。请参阅:h :s\=
  4. Inc()函数调用之后将字符串与空格连接。 :let i = 1 | %s/^/\='LINE_' . Inc() . ' '/g