我一直在使用vim,但最近才开始学习如何真正使用它.我对一些令人费解的行为有些疑问.
为什么2>不意味着缩进2级而不是缩进2行?>2j已经服务于同一目的,缩进2级似乎更直观的行为.
另一个类似的问题是为什么'G'意味着跳到最后一行,但'10G'意味着从缓冲区顶部而不是从缓冲区底部跳到第10行.
如何正确修复这些问题?
我是不是该?可以改变行为打破插件或任何东西?
注意:我想提一下,我知道如何获得我想要的功能,即.
:>>用于多级缩进和:$-10跳转到第n行的底部.
rom*_*inl 14
2>>
您描述的行为是由于如何{count}使用行式命令:它不执行命令{count}时间,但考虑{count}作为行动的行数.
你可以瞥见Vim如何做它的事情2:,这是你应该在命令行中得到的:
:.,.+1
Run Code Online (Sandbox Code Playgroud)
这样做2>>是这样的等效的:
:.,.+1>
Run Code Online (Sandbox Code Playgroud)
"将此行和下面的行缩进一级".
在正常模式下,只需>>按住当前行缩进一级并重复直到您处于正确的级别.
如果要2>缩进两个级别,则必须首先在视觉上选择该行:V2>或v2>.
如果你想"修复"当前行的缩进以使其与周围行的缩进(这种任务的最常见场景)相匹配,请点击==.
10G
G期望a {count}跳转到相应的行.没有{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这里使用?它比任何其他方式更短,更快到达最后一行.
(这是纯粹的推测,当然,我不知道Bill Joy在设计时会想到什么G.)
- Endedit -
修复Vim
通常,Vim不需要"固定".相反,你必须了解它是如何工作的以及如何利用它的力量.大部分内容都很有意义:当你"得到它"时,奖励将是巨大的.
此外,所有内容的行为都在:help以下内容中解释:如果您认真使用Vim,学习如何使用它是必须增长的头号技能.