移动到下一行,该行在VIM的同一列中具有非空白字符?

移动到下一行,该行在VIM的同一列中具有非空白字符?,vim,Vim,由于源代码通常是缩进的,如果我可以移动到下一行/上一行,这将有助于快速导航源代码,该行在同一列中具有非空的白色字符。以下面的代码段为例,将光标放在最后一个}上,是否有方法将光标导航到以if开头的i if (condition) { // some code } 这不完全是您想要的,但是如果您从}开始并点击%,光标将移动到匹配的{以搜索相同的屏幕列,您可以使用特殊的/\%v原子;可以使用virtcol(')查询当前列。。声明一个非空白(\S)在该位置,并触发abackwardssear

由于源代码通常是缩进的,如果我可以移动到下一行/上一行,这将有助于快速导航源代码,该行在同一列中具有非空的白色字符。以下面的代码段为例,将光标放在最后一个
}
上,是否有方法将光标导航到以
if
开头的i

if (condition) {
    //  some code
}

这不完全是您想要的,但是如果您从
}
开始并点击
%
,光标将移动到匹配的
{

以搜索相同的屏幕列,您可以使用特殊的
/\%v
原子;可以使用
virtcol(')查询当前列。
。声明一个非空白(
\S
)在该位置,并触发a
b
ackwards
search()

:call search('\%' . virtcol('.') . 'v\S', 'bW')

您可以轻松地将其转换为正常模式映射。

我现在已经在我的中实现了此运动;默认情况下映射为
][/code>/
[
。还有其他相关映射,如
]V{char}
映射,其工作原理与
f
类似,但垂直


因此,如果您不介意安装插件(加上依赖项),这将更加健壮和实用(它还支持
[count]
).

如果您的代码有一个定义的缩进系统,则可以在缩进块之间进行相对、绝对或块范围的移动。

谢谢。是的,使用
%
可以解决这个问题,但是除了额外的按键之外,它仅限于块代码。如果有一个通用的快捷方式,那就太好了。
b但是它将被限制为块代码
你的意思是什么?这个答案符合你的要求,正如你在问题中所描述的(用那个例子)。是的,
%0
%^
两个按键。@Kent,我的意思是可能没有“{”和“}”要阻止代码,代码仍然是缩进的。另请参见。相关:在Vi SEDo,您认为将它们映射到
,这更容易点击和理解。您可以重新映射它们;对我个人来说,
对于这样很少使用(我)的运动来说太有价值了。谢谢。映射是否用于Control-k:
:map:call search('\%'.virtcol('.).v\S',bW')
和Control-j:
:映射:调用搜索('\%'.virtcol('.')。'v\S',wW')