为什么不'2>'在vim上意味着缩进2级?

时间:2013-06-24 04:30:44

标签: vim

我一直在使用vim,但最近才开始学习如何真正使用它。 我对一些看似令人费解的行为有一些疑问。

为什么2>并不意味着缩进2级而不是缩进2行? >2j已经达到了同样的目的,缩进2级似乎是更直观的行为。

另一个类似的问题是为什么'G'意味着跳到最后一行但是'10G'意味着从缓冲区的顶部而不是从缓冲区的底部跳到第10行。

如何正确修复这些问题?

我应该吗? 可以更改行为中断插件还是其他什么内容?


注意:我想提一下,我知道如何来获得我想要的功能,即。 :>>用于多级缩进,:$-10用于跳转到第n行的底部。

1 个答案:

答案 0 :(得分:14)

<强> 2>>

您描述的行为取决于{count}如何使用行式命令:它不会执行命令{count}次,而是考虑{count}作为行动的行数。

你可以通过2:来了解Vim如何做到这一点,这是你应该在命令行中得到的:

:.,.+1

执行2>>因此相当于:

:.,.+1>

“将此行和下面的行缩进一级”。

在正常模式下,只需点击>>即可将当前行缩进一级,然后重复,直到您处于正确的水平。

如果您希望2>缩进两个级别,则必须首先直观地选择该行:V2>v2>

如果要“修复”当前行的缩进以使其与周围行的缩进(此类任务的最常见方案)匹配,请点击==

<强> 10G

G期望{count}跳转到相应的行。如果没有{count},则默认跳转到最后一行:您可以将其视为{lines in buffer}G的便捷快捷方式。

所以你稍微反思一下:G不是“跳到最后一行”,它是“跳到行{count}但没有{count}所以让我们去最后一行”

- Startedit -

让我们反向设计G以获得乐趣:

  1. G首先被视为等同于:number<CR>的正常模式。

  2. 决定使用G23机制而不是{count},而不是23G机制,因此我们有GG不是运营商:它不会等待目标。

  3. 但如果没有{count} G,我们该怎么办?

  4. 通常,缓冲区有两条“特殊”行:第一行和最后一行。也许我们可以决定G的默认目的地是什么?为什么不?我们讨厌浪费钥匙!

  5. 1G并不比G短得多,但它更短,因此最好让12G跳转到第一行。

  6. 但最后一行怎么样?当我们知道缓冲区中有12行时,2431G是可以的,但是1257行呢?那不知道的线数怎么样?查找数字并输入:$<CR>是否有效?不,那时我们不妨G。好吧,我们为什么不在这里使用G?它比任何其他方式更短,更快到达最后一行。

  7. (这是纯粹的推测,当然,我不知道Bill Joy在设计:help时的想法。)

    - Endedit -

    修复Vim

    通常,Vim不需要“修复”。相反,你必须了解它是如何工作的以及如何利用它的力量。大部分内容都很有意义:当你“得到它”时,奖励将是巨大的。

    此外,所有的行为在{{1}}中进行了解释:如果您认真使用Vim,学习如何使用它是必须增长的头号技能。

相关问题