假设我有以下缓冲区:
asdf
asdfotshne
asdfoensh
asdq
asdf
asdfothen
asdfghjkl;
qwertyuiop
zxcvbnm,.
然后我运行:v/^asdf/norm 0
。
我希望光标转到第4行。但它没有,它会转到文件的末尾。
为什么?
答案 0 :(得分:8)
如果您的光标位于文件的第一行,并且您想要转到不以asdf
开头的第一行,则可以使用以下search
表达式:
/\v^(asdf)@!
它会进行负面预测并在第一场比赛中停止。
答案 1 :(得分:6)
:v
不用于移动光标,而是用于对所有不匹配的行执行操作。因此,它会扫描文件的每一行,并在每个不以asdf开头的norm 0
上执行。因此,它跳转到qwertyuiop
的第一个字符,然后在zxcvmnm,.
处执行相同的操作。
使用gg?
更容易找到最后一个匹配的行,然后向下一行。
答案 2 :(得分:4)
只是为了表明您可以使用:v
执行此操作。
:v/^asdf/throw ""
每当抛出异常时, :v
和:g
都会停止。您可以使用throw,不存在的命令或不完整/格式错误的命令来执行此操作。
:v/^asdf/^