我一直在使用vim,但最近才开始学习如何真正使用它。 我对一些看似令人费解的行为有一些疑问。
为什么2>
并不意味着缩进2级而不是缩进2行? >2j
已经达到了同样的目的,缩进2级似乎是更直观的行为。
另一个类似的问题是为什么'G'意味着跳到最后一行但是'10G'意味着从缓冲区的顶部而不是从缓冲区的底部跳到第10行。
如何正确修复这些问题?
我应该吗? 可以更改行为中断插件还是其他什么内容?
注意:我想提一下,我知道如何来获得我想要的功能,即。
:>>
用于多级缩进,:$-10
用于跳转到第n行的底部。
答案 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
以获得乐趣:
G
首先被视为等同于:number<CR>
的正常模式。
决定使用G23
机制而不是{count}
,而不是23G
机制,因此我们有G
。 G
不是运营商:它不会等待目标。
但如果没有{count}
G
,我们该怎么办?
通常,缓冲区有两条“特殊”行:第一行和最后一行。也许我们可以决定G
的默认目的地是什么?为什么不?我们讨厌浪费钥匙!
1G
并不比G
短得多,但它更短,因此最好让12G
跳转到第一行。
但最后一行怎么样?当我们知道缓冲区中有12行时,2431G
是可以的,但是1257行呢?那不知道的线数怎么样?查找数字并输入:$<CR>
是否有效?不,那时我们不妨G
。好吧,我们为什么不在这里使用G
?它比任何其他方式更短,更快到达最后一行。
(这是纯粹的推测,当然,我不知道Bill Joy在设计:help
时的想法。)
- Endedit -
修复Vim
通常,Vim不需要“修复”。相反,你必须了解它是如何工作的以及如何利用它的力量。大部分内容都很有意义:当你“得到它”时,奖励将是巨大的。
此外,所有的行为在{{1}}中进行了解释:如果您认真使用Vim,学习如何使用它是必须增长的头号技能。