vim - 在VIM上达到目标的最有效方法是什么?

标签 vim navigation keyboard-shortcuts

假设您在第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。

如果您已用标记该行,请说ma,您可以跳至带有'a的行或带有`a的确切字符(但是大多数键盘使`无法到达:(如果是随机外观,则可能不会使用此行) -需要修复的跳转。

如果您安装了EasyMotion,则可以键入leaderleaderfbsubchar来直接跳转到它

您可以按照@kev的建议进行搜索,并使用nN反弹直到获得它。如果bark是常见的,但the_lazy_dog是唯一的,则可以执行/dog.b/e Enter(将光标放在比赛的末尾),并向Vim神祈祷,您的搜索是否足够具体,只能匹配该行。那更像是一个有趣的猜谜游戏。

根据行在屏幕上的位置,您可以使用(n个偏移量)H,M或L(高中低)以使其更接近并在其中使用jk。

或者,如果该行的上方/下方有空行,则可以键入 super 方便的{或}以帮助您跳近。

或者,如果您在gvim中+触控板在附近的笔记本电脑上,则可以使用鼠标。我对此很认真,即使我可能永远也不会做。如果您已经玩了足够多的第一人称射击游戏,那么您的触发手指可能比任何键盘快捷键都更准确,更快速;)

尽管Vim拥有疯狂的键盘功能,但并非总是直接或好的方法来执行某些操作,例如非常具体的跳转。您需要保留并不断积累一些技巧,以帮助您四处走动并使用适当的技巧来完成工作。根据我认为最快的速度,我会相当均匀且经常地使用上述所有内容(我使用relativenumber)。 EasyMotion非常方便,除了执行一次命令的5次击键确实很尴尬且容易出错。

因此,以我在Vim的短短几年经验,我会说没有很好的方法,但是有许多平庸的方法可以组合成一个体面的方法。

关于vim - 在VIM上达到目标的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11918601/

相关文章:

c# - 使用 Omnisharp、VIM 和 csharp 找不到模式

silverlight - 如何使用 MVVM 在 Silverlight 4.0 中执行导航?

html - 如何在居中 Logo 的两侧提供导航选项?

Electron 全局快捷方式查找浏览器实例

winforms - 当 WinForms 控件托管在 VB6 窗体中时,如何使 ToolStripMenuItem 快捷键起作用

java - eclipse中的快捷方式与tab相反?

c++ - 包含所有 ASCII 字符的二进制文件

c++ - Vim Ctags 如何自动完成函数参数?

search - 替换某些字符,但不替换匹配项中找到的字符

html - 如何在不丢失菜单部分的情况下停留在顶部菜单