在Vim正常模式下使用G键


70

在vim的普通模式下,g前缀用于许多命令。一些命令某个地方的文件中,但其他命令处理的文件编码和上交换/小写字母。

  • ga -显示字符编码
  • 10gg -转到第10行
  • gg -转到第1行
  • gH -开始选择线路模式
  • gr{char}-用{char}虚拟替换N个字符

所有这些命令之间缺少什么连接?


7
gz扩展正常的命令集。
贝努瓦

3
我总是把两者gz为@Benoit:«g{C}的定义,因为它是通常需要一个命令,但是其他角色都已经绑定»。许多g*都有助记符go to/ global,有些则没有。与g* z*不涉及折叠的命令不同,我更难记住。我什至亲自在一个插件中定义了一组gd映射,可以记住global diff:«查看给定修订版所做的所有更改»。并且Near附近有一组“转到”项:gu-“转到用户”-“查看用户所做的更改”,依此类推。
ZyX 2011年

2
转到第10行的命令是10gg10G(或:10<cr>)。
Keith Thompson 2014年

Answers:


57

g-commands之间没有更大的联系:这是一堆混杂的东西。这是一个简单的前缀,并且未绑定的键已消失,因此,较少使用的地图在后面找到了一个不错的位置g


我注意到有些命令在Vim的帮助中有助记符。例如,gaget ascii
Natan Yellin

3
@NatanYellin:是的。幸运的是,下面的某些命令g可以“执行”或“获取”某些命令,但是太多命令没有良好的助记符。
mike3996

3
@SauceMcBoss:我只是在寻找相同的东西。您可以在Vim文档中
James MacAdie

15

您只是在谈论两个不同的话题。在某些情况下,g是“全局”的简称(例如,用于范围命令),对于行移动,g表示goto。

在VIM中,命令通常会缩短以便快速使用。

:help global 可能会有所帮助

顺便说一句:对于行导航,我一直使用:<lineno>语法。


2
:<lineno>垃圾邮件的命令行历史记录,更难键入(<S-;>1<CR>:四次按键,两次或三个(dvorak)额外的手指移动(用于键入数字的工作被忽略)1gg,:三次按键,一个手指移动)。您可以通过定义一些映射来摆脱垃圾邮件的命令行历史记录(例如,<CR>在命令行模式下执行的映射将在执行命令后清除历史记录),但是您不必花太多精力来键入。
ZyX

哦,好吧,尝试用数字替换<lineno>,您将得到我想要说的^^:D。最后,只是如何开始一切的问题。来自Vanilla vi,即使经过10年以上的快乐vimming操作,某些VIM内部函数还是完全模糊的。
2011年

“哦,尝试用数字代替<lineno>,您会得到我想说的话”:« <S-;>1<CR>»。我知道这种方法,尽管通常在类似的表达式中看到它execute linenumber
ZyX 2011年

这只是学习方式的问题。两种方式各有利弊。最后,只要我们对'em'感到满意,那就很好。原谅我真正的英语不好。
2011年

-3

第一次使用gg来跳到你的乞求

然后使用=G删除光标到文件末尾的所有尾随空格

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.