2>>
您描述的行为是由于如何{count}
使用逐行命令:它不执行命令{count}
时间,而是考虑执行{count}
操作的行数。
你可以通过做来了解 Vim 是如何做的2:
,这是你应该在命令行中得到的:
:.,.+1
因此, Doing2>>
相当于:
:.,.+1>
“将此行和下面的行缩进一级”。
在正常模式下,只需>>
将当前行缩进一级并重复,直到您处于正确的级别。
如果要2>
缩进两级,必须首先直观地选择行:V2>
或v2>
。
如果要“修复”当前行的缩进,使其与周围行的缩进匹配(此类任务最常见的情况),请点击==
.
10G
G
期望 a{count}
跳转到相应的行。没有 a{count}
它默认跳到最后一行:您可以将其视为{lines in buffer}G
.
所以你有点颠倒了:G
不是“跳到最后一行”,而是“跳到行{count}
但没有{count}
所以让我们去最后一行”。
-- 开始编辑 --
G
让我们为了好玩而进行逆向工程:
G
最初被认为是 的正常模式等价物:number<CR>
。
决定,而不是做G23
,使用{count}
机制,所以我们有23G
。G
不是操作员:它不等待目标。
G
但是,如果没有 ,我们该怎么办{count}
?
通常,缓冲区有两个“特殊”行:第一行和最后一行。也许我们可以决定默认目的地G
是什么?为什么不?我们讨厌浪费钥匙!
G
不比它短很多,但它更短,因此跳转到第一行1G
可能是个好主意。G
但是最后一行呢?12G
当我们知道缓冲区中有 12 行时可以,但是 1257 行呢?行数未知怎么办?查找数字和类型有效率2431G
吗?不,到那时,我们不妨这样做:$<CR>
。那么,我们为什么不在G
这里使用 , 呢?它比任何其他方式到达最后一行要短得多,也快得多。
(这纯属猜测,当然,我不知道比尔乔伊设计时的想法G
。)
-- 完结 --
修复 Vim
通常,Vim 不需要“固定”。相反,您必须了解它的工作原理以及如何利用它的力量。其中大部分都很有意义:当你“得到它”时,奖励将是巨大的。
此外,所有事物的行为都在以下内容中进行了解释:help
:如果您认真使用 Vim,那么学习如何使用它是您必须提高的第一技能。