这个格式错误的命令到底发生了什么



Vim中的问题:向后范围 — 可以交换原来是命令:2,$/^userid/d中缺少g。但是,该命令仍将运行,并转换以下内容:

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

对此:

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

谁能解释一下格式错误的命令实际上在做什么?

你在问lineSpecifier/pattern/做什么。范围表达式从 2 (line2) 开始,以 $/userid/ 结尾。

如果你做:h :range(感谢@Ingo找到它),你可以找到:

"

/"和"?"前面可能带有另一个地址。 搜索从那里开始。

lineSpecifier/pattern/将从lineSpecifier行中搜索/pattern/。 例如 $/userid/将从行尾搜索/userid/。此外,4/userid/将从第 4 行搜索/userid/,即执行后,光标位于 line 5 处。所以$/userid/会在第 1 行做光标,这可以通过:$/userid/进行测试。

所以你的命令和2,1d一样,这就是为什么 Vim 要求你确认向后范围。如果你按 y ,它将删除前两行,并保留输出。

最新更新