这个格式错误的命令实际发生了什么?

时间:2015-01-29 22:21:10

标签: vim

Vim: Backwards range — OK to swap中的问题在命令g中失踪:2,$/^userid/d。但是命令仍会运行,转换为:

userid  firstname       surname cardnumber
billy   william         smith   472750  
userid  firstname       surname cardnumber
steve   bubba           gump    472751
userid  firstname       surname cardnumber
george  Gigi            Jones   989989

To This:

userid  firstname       surname cardnumber
steve   bubba           gump    472751
userid  firstname       surname cardnumber
george  Gigi            Jones   989989

任何人都可以解释格式错误的命令实际上在做什么吗?

1 个答案:

答案 0 :(得分:3)

您在问lineSpecifier/pattern/做了什么。您的范围表达式以2 (line2)开头,以$/userid/结尾。

如果您:h :range(感谢@Ingo查找),您可以找到:

  

“/”和“?”可以在另一个地址之前。搜索从那里开始。

lineSpecifier/pattern/将从/pattern/行搜索lineSpecifier。例如。 $/userid/将从广告末尾搜索/userid/。此外,4/userid/将从行/userid/搜索4,也就是说,在执行后,光标位于line 5。因此$/userid/会将光标放在第1行,这可以通过:$/userid/进行测试。

因此您的命令与2,1d相同,这就是为什么vim会向您询问向后范围的确认。如果您按下y,它将删除前两行,并保留输出。

相关问题