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