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,那么学习如何使用它是您必须提高的第一技能。