注意:这个问题在StackOverflow上有两种答案,但我认为可能会从这里得到更好的答案,如果没有,至少会在应有的地方记录在案:

什么是以g开头的vim命令?
在vim正常模式下使用g键


在正常模式命令中字母g的语义是什么?我用过ggG<n>G的句法,但是直到今天,我一直没有想过g的语义在更大的Vi禅宗中是什么。
今天我不得不将一小堆我的代码中的常量,我认为必须有一个比逐个字符更好的方法(因为<n>~不起作用,由于我不知道的任何奇怪原因)。我在g~中找到了它,特别是在g~iw中。
这使我找到了链接的答案,但是它们的解释不尽人意,并且在StackOverflow而非vi.SE上进行引导。
因此,
g的vi语义是什么?
我希望人们理解ciw的vi语义,因为c意味着单词变化,所以i意味着变化,w意味着内部文本项,并且_表示用空格或标点符号表示的单词,但q4312079q除外。
PS,如何标记呢?

#1 楼

g在vim中有点奇怪。许多其他键都有一个特定的词来描述其类别:hjkl}{we等都是动作。它们告诉您的光标移动。
dcy等都是运算符。他们以特定的方式更改要操作的文本,然后您通过动议告诉他们要操作的文本。

g没有这样的名称。如果必须提供一个名称,则将其命名为命名空间。 Bram Moolenaar和Bill Joy我确定有很多有用的操作(例如转到文件的开头/结尾或转到[line])对于在默认vim中创建快捷方式是有意义的,但它们不会经常使用足以证明给他们提供一键式快捷方式的合理性,因为这些键保留用于更有用/更常用的功能,例如hjkldp,并且只有95个键可供选择。有大量的键盘快捷键都以g开头。他们有什么共同点?绝对没有。它们恰好是有用的东西,不值得为它提供一键式快捷方式。

所以,实际上,gg是一个动作,就像我列出的所有其他动作一样,恰好使用两键序列。就像我列出的所有其他运算符一样,g~是一个运算符,只是碰巧使用了两个键序列。

还有其他一些“命名空间”,例如vim中的键。例如,在帮助中查找



:h z(以'z'开头的命令)

:h [(以'['开头的命令)


评论


因此,g就像系统负责人,而不是用户负责人。只需记住组合即可。谢谢。

–malan88
19年1月30日在16:58



g和z,非常喜欢下一个字符的名称空间。那是因为我们一直在缓慢地用完键盘上的键,因此将有用的命令添加到了这些键中

–克里斯蒂安·布拉班特(Christian Brabandt)
19年1月30日在17:08

@ChristianBrabandt是的,名称空间是一个很好的词。

–詹姆斯
19年1月30日在17:11

恕我直言,这个答案不应该使用单词leader,因为vim中存在一个leader键,并且不应与g,z,[,]和混淆。我会按照建议使用名称空间键。

–霍奇克
19年1月31日在8:28

更重要的是,g和z是vi在正常模式下不使用的两个键。鉴于可用的按键数量很少,将它们用作Vim特定命令的前缀实际上是添加许多新的普通模式命令而不求和的唯一方法。

–詹姆斯
19年2月1日,0:43