Vim 中的 g 是一个多功能的前缀命令(Prefix Command),本身不单独使用,而是需要配合其他字符组成完整命令。它在 Vim 中主要有以下几种功能类型:

Ⅰ. 文件导航类 📍

命令功能描述
gg跳转到文件的第一行
G跳转到文件最后一行(注意大写)
3G跳转到第 3 行(数字可替换为指定行号)
g;回到最后修改的位置
g,循环更早的修改位置
g0移动到当前屏幕行的首字符(软行首)
g^移动到当前屏幕行的非空白首字符
gm移动到当前行中间位置
g+向后切换变更列表位置
g-向前切换变更列表位置

Ⅱ. 文本操作类 ✂️

命令功能描述
gu将选中文本转为小写
gU将选中文本转为大写
guu当前行转小写
gUU当前行转大写
g~切换选中文本的大小写
gq折行格式化(保持段落宽度)
gw折行格式化(保留光标位置)
g?执行 ROT13 加密

Ⅲ. 标识符相关 🔗

命令功能描述
gd跳转到局部定义(LSP 需要插件支持)
gD跳转到全局定义
gf打开光标下的文件名路径
gF打开文件名并跳转到指定行号(格式:file:12)

Ⅳ. 可视模式增强 👁️

组合命令功能描述
v + g + _选中到行尾(不含换行符)
gv重选上次可视化选区
g Ctrl+g显示文档统计信息(字数/行数)

Ⅴ. 寄存器操作类 📥

命令功能描述
gp粘贴后光标留在粘贴内容后(默认在末尾)
gPgp 类似,但用大写寄存器

Ⅵ. 其他实用组合 🛠️

命令功能描述
g&全局重复上次替换操作
g<查看命令行历史输出
gqgq对当前段落进行折行格式化
g Ctrl+a对数字序列进行递增值插入(需设置递增序列)
gj向下移动屏幕行(跨实际行)
gk向上移动屏幕行(跨实际行)

配置示例(.vimrc

" 设置 gq 格式化宽度为 80 字符
set textwidth=80

" 启用智能大小写切换(使用 ~ 时保留首个字母大小写)
set smartcase

使用技巧 💡

  1. g 命令常与数字结合(如 3G
  2. 大写形式通常表示更广范围的操作(如 G vs gg
  3. 在可视模式下 g 能增强选区能力
  4. :help g 查看完整文档(列举了 60+ 种组合)
  5. 记忆口诀:“g” 代表 “go to” 或 “global” 的抽象含义