如何水平导航

时间:2013-12-14 12:42:50

标签: vim navigation

说,我有一个正在Vim中编辑的(HAML / ruby​​)行,如下所示:

%img{ src: (@image.presence || 'http://placehold.it/60x80/'), alt: "", data: { "snippet-image" => "image" "<150x<80"  alt="alt" />

我现在需要删除alt="alt" />并将其替换为} }将该行转换为

%img{ src: (@image.presence || 'http://placehold.it/60x80/'), alt: "", data: { "snippet-image" => "image" "<150x<80" } }

例如,我在第一个{。当我导航到“alt =”之前,我可以用C} }替换那个就好了。问题在于有效地进入alt=部分。

  • 13W,计算或猜测单词的数量,并移动该数量。这是非常低效的,我花了将近半分钟的时间指着我的屏幕计算了13个单词。
  • $2B,移到行尾,移回两个单词。在这种情况下,更有效率,但仍然需要计数,并且当我不得不在线路的中间时断开。
  • /alt=<cr>h搜索alt=。然后向后移动一个字符。再次:在这种情况下工作,但在搜索更常见的东西时会中断。例如,我想转移到第14 "

我认为我缺少一些简单的概念修饰符,可以在水平方向上更有效地导航,使用长行。在垂直方面,有许多东西(文本对象)可以导航,并且有一些帮助程序,如相对编号。 这里的例子是代码。但是,当在报告或文章中浏览长篇文章时,我会遇到同样的问题。

你通常如何水平导航?

4 个答案:

答案 0 :(得分:1)

我认为至少部分答案是(至少在我看来)长线是代码气味;不只是因为你提出的导航问题,还因为

  • 他们很难理解(在视觉上,特别是因为不同的编辑以不同的方式软打破它们)
  • 大多数工具都有基于行的变化理解(例如,在源代码管理中查看差异时),并且长行会破坏(例如,谁更改了哪一行的“责备”输出)。

大多数语言/语法允许“中断”行(例如,使用Bash,C等中的\行继续符),我会主张使用它来避免这么长的行尽可能。


那就是说,我主要坚持WORD明智的W动作到(粗略)位置,或者f / t,如果有一个可辨别的唯一{char} in附近。

答案 1 :(得分:1)

我通常使用f<char> / F<char>,然后使用;,直到我到达正确的位置。如果我看到有很多角色的实例,我会去附近的某个独特角色,或者回到/搜索命令。这也是一种品味问题。

答案 2 :(得分:1)

我用以下方法解决了这个问题:

$vT";;c } }

答案 3 :(得分:0)

对{{3}}回答略有改进:

$3T"C } }

我不得不对答案发表评论,但我没有足够的声誉