如何水平导航



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

%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,计算或猜测单词的数量,并移动该数量。这是非常低效的,我花了将近半分钟的时间指着屏幕数十三个单词
  • $2B,移到行尾,向后移两个单词。在这种情况下,效率更高,但仍然需要计数,当我必须在中间时,比如说,会中断
  • /alt=<cr>h搜索alt=。然后向后移动一个字符。再次:在这种情况下有效,但在搜索更常见的东西时会中断。例如,我想转到第14个"

我想我缺少了一些简单的概念修改器,可以更有效地在水平方向上使用长行导航。在垂直方向上,有许多东西(文本对象)可供导航,还有一些辅助对象,如相对编号。这里的例子是代码。但我在浏览报告或文章中的长段落时也会遇到同样的问题。

你通常是如何水平导航的?

我用解决了这个问题

$vT";;c } }

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

  • 它们很难理解(从视觉上看,尤其是因为不同的编辑对它们的软分解方式不同)
  • 大多数工具都对更改有基于行的理解(例如,在源代码管理中查看diffs时),而长行会破坏这种理解(例如谁更改了最后一行的"指责"输出)

大多数语言/语法都允许"换行"(例如,在Bash、C等中使用换行符),我主张使用它来尽可能避免过长的行。


也就是说,我主要坚持按单词W移动到(粗略)位置,或者如果附近有可识别的唯一{char},则为f/t

我通常使用f<char>/F<char>,然后使用;,直到到达正确的位置。如果我看到有很多字符实例,我会在附近查找一些唯一的字符,或者回退到/搜索命令。这也是一个品味问题。

对romainl答案的一点改进:

$3T"C } }

我不得不留下评论来回答,但我没有足够的声誉

相关内容

  • 没有找到相关文章

最新更新