可以使用 w, e 和 b 键在文件中移动。VIM 能够识别 C 表达式中不同的标记。
考虑以下 C 代码
假设光标位于 if 语句的开头。按一次 w 键,光标会跳到第一个 (。再次输入 w,光标会移动到 NULL。下一次光标将移动到 == 标记。进一步的按键将带您按如下方式移动。 x... )... &&... y... >... z... 最后 )...
e 类似于 w,只是它将您带到当前单词的末尾,而不是下一个单词的开头。
b 的作用与 w 完全相反。它沿相反方向移动光标。因此,您可以使用 b 键向后移动。
{ 和 } 键用于在段落之间移动。在编辑 C 文件时,这些键具有略微不同的含义。这里,段落被视为由空行分隔的一组行。
例如
上面的代码片段显示了两个段落。通过使用 { 和 } 键,可以轻松地从一个段落的开头移动到另一个段落的开头。{ 将把光标带到上面的段落,而 } 将把光标带到下面的段落。
许多人的编码风格是将一组逻辑语句组合在一起,并用一个或多个空行分隔。
例如
{ 和 } 键在这种情况下非常有用。可以非常容易地从一个“段落”移动到另一个“段落”。
另一组有用的键是 [[ 和 ]] 键。这些键允许您跳转到前一个 { 或后一个 { (在第一列中)。
例如
假设您正在编辑 foo(),现在您想编辑 bar()。只需键入 ]],光标就会将您带到 bar() 函数的开头 {。反向操作略有不同。如果您在 bar() 的中间,并且您键入 [[,光标将移动到上面的第一个 {,即 bar() 本身的开头。必须再次键入 [[ 才能移动到 foo() 的开头。可以通过键入 2[[ 将光标移动到上一个函数的开头,从而最大限度地减少按键次数。
另一组类似的键是 ][ 和 [] 键。][ 将光标移动到第一列中的下一个 }。如果您正在编辑 foo() 并想转到 foo() 的末尾,那么 ][ 会将您带到那里。同样,如果您正在编辑 bar() 并想转到 foo() 的末尾,那么 [] 会将光标带到那里。
记住这些键的方法是将它们分解。第一个键将指示是向上还是向下移动。[ 将向上移动,而 ] 将向下移动。下一个键指示要匹配的括号类型。如果它与前一个键相同,则光标将移动到 {。如果键不同,则光标将移动到 }。
关于 ]], ][, [[ 和 [] 键的一个注意事项是,它们匹配 第一列中的括号。如果想要匹配所有向上和向下的括号,而不管它是否在第一列中,这是不可能的。VIM 文档有一个解决方法。必须映射键才能找到括号。在不花费太多时间进行映射的情况下,建议的映射是
:map [[ ?{<CTRL-VCTRL-M>w99[{
:map ][ /}<CTRL-VCTRL-M>b99]}
:map ]] j0[[%/{<CTRL-VCTRL-M>
:map [] k$][%?}<CTRL-VCTRL-M>
% 用于匹配光标下的项目。光标下的项目可以是括号、花括号或方括号。通过按 % 键,光标将跳转到相应的匹配项。
除此之外,% 键还可以用于匹配 #if, #ifdef, #else #elif 和 #endif。
此键在验证已编写的代码时非常有用。例如
检查上面的代码将涉及检查括号的正确性。% 可用于从一个 ( 跳转到其对应的 ),反之亦然。因此,可以找到哪个左括号对应于哪个右括号,并使用该信息来验证代码。
类似地,% 也可用于从 { 跳转到其对应的 }。