>假设您在第 640 行,请注意第 671 行的以下内容:
if (jumps_over(quick_fox[brown],the_lazy_dog)) the_lazy_dog.bark();
导航到"树皮"的最关键有效方法是什么?
这是关于 Vim 的一个常见误解:Vim 的设计目的不是为了高效。
Vim 旨在以可重复的、通常是复杂的组合使用小构建块来实现您的目标。它本质上不是一个高效的过程,但对于复杂任务的子集,它很有用。例如,[运动][宏]或[计数][命令],这些是组合在链中的小构建块。单击屏幕是最有效的移动,但在必须执行数千次的大型文本操作任务的子集中可能没有用。
以下是我通常使用的所有我能记住的方式,你可以看到这些都不是对运动的有效利用,也不是我的认知处理能力。(IDE 通过删除下面列出的所有工作来有效地完成工作)。
一旦上线,我个人会使用 f。l 因为快速扫描显示这是一个独特的字符。或者T.如果你过去了。如果最终不止一个.我会用 ; 重复查找,直到我到达它。或者,在我接近之前捣碎 w 或 W,因为在 Vim 中基本上不可能猜测涉及标点符号时小写 w 会带你去哪里。
如果你有:set relativenumber
,你可以看到它有多少行,然后输入 nj 去那里,然后键入 f. 跳到它旁边
如果你有:set number
,你可以输入(因为你知道行号)671G(或:671Enter)f。
如果你用"a"标记了那行,比如说m a,你可以跳到带有"a"的行或带有"a"的确切字符(但大多数键盘使"无用地到达:(如果它是一个随机的外观需要修复的跳转,你可能不会使用这个。
如果您安装了 EasyMotion,您可以键入引线fb子字符直接跳转到它
您可以按照@kev的建议搜索它,并使用nN弹跳,直到得到它。如果bark
是常见的,但the_lazy_dog
是独一无二的,你可以/dog.b/e
Enter(e将光标放在匹配的末尾)并向Vim神祈祷你的搜索足够具体,只能匹配那行。这更像是一个有趣的猜谜游戏。
根据线条在屏幕上的位置,您可以使用(n偏移)H,M或L(高中低)来靠近它,并在那里使用jk。
或者,如果该行上方/下方有空行,您可以键入超级方便的{或}来帮助您跳近。
或者,如果您在触控板附近的笔记本电脑上,您可以使用鼠标+在gvim中。我对此是认真的,即使我可能永远不会这样做。如果你玩过足够多的第一人称射击游戏,你的扳机指可能比任何键盘快捷键都更准确、更快速;)
尽管 Vim 拥有疯狂的键盘功能,但并不总是有直接或好的方式来做某事,比如非常具体的跳跃。您需要保留并不断构建一袋技巧,以帮助您四处走动并使用合适的技巧来完成工作。我相当均匀地经常使用上述所有内容(我使用relativenumber
),具体取决于我认为最快的方法。EasyMotion 非常方便,除了 5 次击键来执行一个命令真的很笨拙并且容易出错。
因此,在我几年的 Vim 经验中,我会说没有好的方法可以做到这一点,但有很多平庸的方法,你可以将它们组合成一种体面的方式。
按 /bark回车键。(也许 n 是必需的)
(这取决于文本的形状。没有这些信息,我无法提供最佳方法。
如果您想使用 @Kev 的建议增加命中的可能性(即减少必须命中 n 的可能性),也许可以更改您的正则表达式以包含更多文本并从那里偏移光标。 例如:
/dog.bark/e-3
打开相对行号,31j
变得非常自然;这会让你到达你需要的线。
然后,在您想要的位置附近的行中寻找一个独特的字符。在这种情况下.
是独一无二的,就在树皮之前。所以,f.
.然后l
,你很好。
所以总共:31jf.l
.
(这并不总是它的工作方式。有时,一旦您跳到线上,使用它/bark
就像一样快。有时最初使用/bark
会更快,只需多次n
生产线。Vim给你工具,你的代码总是不同的。
Kev 的回答假设 bark
是一个不常见的词。 你可能会命中n很多次。
我会去的
6 7 1 G 跳到线,
$ 跳到行尾,以及
2 b 将光标放在 b 上。
编辑:阅读安迪的回答,我真的必须同意这一点:
尽管 VIM 拥有疯狂的键盘功能,但并不总是有直接或好的方式来做某事,比如非常具体的跳跃。
我会选择以近似的步骤导航,例如 9j 沿着 9 行向下导航。 当您在反射下执行此操作时,您可以比读取行号或字符位置更快地导航。 它最终可能会有更多的击键,但我更喜欢额外的速度。
实际上,我不想说我认为最有效的方法是使用鼠标,
使用命令行的另一种方式:/.*狗\&.*吠叫
与/bark(可能还有许多 n)相比,这将减少频率
尚未提到在同一行上跳转到字符的一种方法。用
61|
61"管道",在控制模式下直接跳转到 [b]ark。
我没有把它纳入我的常规跳跃中,因为这个数字通常是一个猜测。 每行固定 80 个字符,您可以习惯它,它会非常有效。但是管钥匙不方便imo。我打算更频繁地使用它,因为它的优雅和高效。