为什么 '2>' 不表示在 vim 上缩进 2 个级别?

  • 本文关键字:缩进 vim 表示 vim
  • 更新时间 :
  • 英文 :


我已经使用vim一段时间了,但直到最近才开始学习如何真正使用它。我对什么看似令人费解的行为有一些疑问。

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

另一个类似的问题是,为什么"G"表示跳到最后一行,而"10G"表示从缓冲区的顶部而不是从缓冲区底部跳到第10行。

如何正确解决这些问题?

我应该吗 改变行为会破坏插件吗?


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

2>>

您所描述的行为是由于{count}如何与行命令配合使用:它不执行命令{count}次,而是将{count}视为要执行的行数。

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

:.,.+1

因此,执行2>>相当于:

:.,.+1>

"将这一行和下面的一行缩进一级"。

在正常模式下,只需点击>>将当前行缩进一级,然后重复,直到达到正确的级别。

如果希望2>缩进两个级别,则必须首先从视觉上选择行:V2>v2>

如果要"修复"当前行的缩进,使其与周围行的缩进匹配(这是此类任务最常见的情况),请单击==

10G

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

所以你把事情颠倒了一点:G不是"跳到最后一行",而是"跳到第{count}行,但没有{count},所以我们走最后一行吧"。

--开始编辑--

让我们对G进行逆向工程以获得乐趣:

  1. CCD_ 25首先被认为是CCD_。

  2. 决定使用{count}机制来代替G23,因此我们有了23GG不是运算符:它不等待目标。

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

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

  5. G并不比1G短多少,但它更短,所以让G跳到第一行可能是个好主意。

  6. 但是最后一行呢?当我们知道缓冲区中有12行时,12G是可以的,但1257行呢?那么数量未知的线路呢?查询号码并键入2431G有效率吗?不,在这一点上,我们还不如做:$<CR>。那么,我们为什么不在这里使用G呢?它比任何其他到达最后一行的方式都短得多,也快得多。

(这纯粹是猜测,当然,我不知道Bill Joy在设计G时的想法。)

--Endedit--

修复Vim

一般来说,Vim不需要"固定"。相反,你必须学习它是如何运作的,以及如何利用它的力量。大部分都很有道理:当你"得到"的时候,回报将是巨大的。

此外,everything的行为在:help中有解释:如果你认真使用Vim,学习如何使用它是你必须培养的首要技能。

相关内容

  • 没有找到相关文章

最新更新