当前位置: 首页 > web >正文

vim 常用快捷键汇总

学习过程中还是觉得 vim 好用,所以让查老师总结了一份常用操作,加油 😃

核心哲学:模式化编辑

首先要理解 Vim 的不同模式,这是所有快捷键的基础:

  1. 普通模式 (Normal Mode):默认模式。用于移动光标、复制、粘贴、删除等操作。按 Esc 键从任何其他模式返回。
  2. 插入模式 (Insert Mode):用于输入文本。从普通模式按 i (insert), a (append), o (open new line) 等键进入。
  3. 可视模式 (Visual Mode):用于选择文本。从普通模式按 v (字符选择), V (行选择), Ctrl+v (块选择) 进入。
  4. 命令模式 (Command Mode):用于执行命令(如保存、退出、搜索替换)。从普通模式按 : 进入。

一、移动光标 (普通模式下)

基本移动 (HJKL)
  • h - 左
  • j - 下
  • k - 上
  • l - 右
单词移动
  • w - 移动到下一个单词开头
  • e - 移动到当前或下一个单词末尾
  • b - 移动到上一个单词开头
  • ge - 移动到上一个单词末尾
  • W, E, B - 以空格分隔的“大字”单词为单位移动(更快)
行内移动
  • 0 - 移动到行首
  • ^ - 移动到本行第一个非空白字符
  • $ - 移动到行尾
  • g_ - 移动到行尾非空白字符
  • f{字符} - 向前搜索并移动到某个字符(如 fa 移动到下一个字母 ‘a’)
  • F{字符} - 向后搜索并移动到某个字符
  • t{字符} - 移动到某个字符之前
  • T{字符} - 反向移动到某个字符之前
  • ; - 重复上一次 f, t, F, T 操作
  • , - 反向重复上一次操作
屏幕移动
  • gg - 移动到文件第一行
  • G - 移动到文件最后一行
  • :{行号} - 移动到指定行(如 :55 跳到第55行)
  • Ctrl + f - 向下翻一页
  • Ctrl + b - 向上翻一页
  • Ctrl + d - 向下翻半页
  • Ctrl + u - 向上翻半页
  • H - 移动到当前屏幕的顶部
  • M - 移动到当前屏幕的中间
  • L - 移动到当前屏幕的底部
  • zz - 将当前行置于屏幕中央

二、编辑操作

进入插入模式
  • i - 在光标前插入
  • a - 在光标后插入
  • I - 在行首插入
  • A - 在行尾插入
  • o - 在当前行下方新建一行并插入
  • O - 在当前行上方新建一行并插入
  • s - 删除当前字符并插入
  • S - 删除当前行并插入
  • C - 删除从光标到行尾的内容并插入(相当于 c$
删除/剪切 (配合文本对象,威力无穷)
  • x - 删除当前字符
  • X - 删除前一个字符
  • d{motion} - 删除移动命令所覆盖的文本(核心命令
    • dw - 删除到下一个单词开头
    • de - 删除到单词末尾
    • d$ / D - 删除到行尾
    • d0 - 删除到行首
    • dd - 删除整行
    • dgg - 删除到文件开头
    • dG - 删除到文件结尾
  • {数字}dd - 删除多行(如 3dd 删除3行)
复制 (Yank)
  • y{motion} - 复制移动命令所覆盖的文本
    • yw - 复制一个单词
    • yy / Y - 复制整行
    • y$ - 复制到行尾
  • {数字}yy - 复制多行
粘贴 (Put)
  • p - 在光标粘贴
  • P - 在光标粘贴
撤销与重做
  • u - 撤销
  • Ctrl + r - 重做

三、文本对象 (超级强大!)

操作 d (删除), y (复制), c (修改), v (选择) 的利器。

  • i + 对象 - inside,操作对象内部的文本
  • a + 对象 - around,操作对象以及周边的文本(比如包括引号本身)

常用对象:

  • w - 单词
  • s - 句子
  • p - 段落
  • ', ", ` - 引号
  • (, ), b - 小括号 ( )
  • [, ] - 中括号 [ ]
  • {, }, B - 大括号 { }
  • t - XML/HTML 标签

示例:

  • diw - 删除光标所在的单词(不包括周围空格)
  • ci" - 修改双引号内的内容(删除并进入插入模式)
  • yap - 复制整个段落
  • vat - 选择整个 XML/HTML 标签及其内容

四、查找与替换

查找
  • /pattern - 向下搜索模式
  • ?pattern - 向上搜索模式
  • n - 继续下一个匹配项
  • N - 继续上一个匹配项
  • * - 向下搜索光标所在的单词
  • # - 向上搜索光标所在的单词
替换 (命令模式)
  • :s/old/new - 将当前行的第一个 old 替换为 new
  • :s/old/new/g - 将当前行的所有 old 替换为 new
  • :%s/old/new/g - 将全文的所有 old 替换为 new
  • :%s/old/new/gc - 全文替换,但每次替换前需要确认
  • :起始行,结束行s/old/new/g - 在指定行范围内替换(如 :10,20s/foo/bar/g

五、可视模式 (Visual Mode)

  • v - 进入字符可视模式
  • V - 进入行可视模式
  • Ctrl + v - 进入块可视模式(列模式)
  • 选中文本后,可以使用所有普通模式的编辑命令:d, y, c, :s/old/new/

六、窗口与标签页

窗口分割
  • :sp [文件名] - 水平分割窗口
  • :vsp [文件名] - 垂直分割窗口
  • Ctrl + w w - 在窗口间循环切换
  • Ctrl + w h/j/k/l - 切换到左/下/上/右的窗口
  • Ctrl + w = - 使所有窗口等宽等高
  • Ctrl + w _ - 最大化当前窗口高度
  • Ctrl + w | - 最大化当前窗口宽度
  • Ctrl + w c / :q - 关闭当前窗口
  • Ctrl + w o - 关闭其他所有窗口
标签页
  • :tabnew [文件名] - 新建标签页
  • :tabc - 关闭当前标签页
  • :tabo - 关闭其他所有标签页
  • gt / :tabn - 切换到下一个标签页
  • gT / :tabp - 切换到上一个标签页
  • {数字}gt - 切换到第 N 个标签页

七、其他常用命令

  • .% - 跳转到匹配的括号 (), {}, []
  • . - 重复上一次修改操作(极其强大)
  • J - 将下一行合并到当前行(连接行)
  • Ctrl + a - 将光标下的数字增加 1
  • Ctrl + x - 将光标下的数字减少 1
  • :r 文件名 - 将文件内容插入到光标下方
  • :r !命令 - 将命令的执行结果插入到光标下方(如 :r !date 插入当前日期)

学习建议

  1. 不要死记硬背:打开 vimtutor(在终端输入此命令),它是官方的最佳入门教程。
  2. 循序渐进:先熟练掌握移动 (h/j/k/l, w/b, gg/G)、进入插入模式 (i/a/o)、保存退出 (:wq)、撤销 (u)。
  3. 实践为主:在日常编辑中强迫自己使用,哪怕开始很慢。
  4. 掌握组合技:理解 操作符 + 动作命令 的模式(如 d + w = dw)。这是 Vim 的灵魂。
  5. 探索文本对象:这是让你从 Vim 新手进阶为高手的关键。
http://www.xdnf.cn/news/20361.html

相关文章:

  • 学习 Android (二十) 学习 OpenCV (五)
  • FastVLM-0.5B 模型解析
  • React Hooks UseCallback
  • Docker Registry 实现原理、适用场景、常用操作及搭建详解
  • CRYPT32!CryptMsgUpdate函数分析两次CRYPT32!PkiAsn1Decode的作用
  • Linux之Docker虚拟化技术(四)
  • 解决Vue Canvas组件在高DPR屏幕上的绘制偏移和区域缩放问题
  • Process Explorer 学习笔记(第三章3.2.1):主窗口与进程列表详解
  • 9.5C++作业
  • Ruoyi-vue-plus-5.x第五篇Spring框架核心技术:5.2 Spring Security集成
  • 使用PyTorch构建卷积神经网络(CNN)实现CIFAR-10图像分类
  • 1688 商品详情抓取 API 接口接入秘籍:轻松实现数据获取
  • LeetCode Hot 100 第11天
  • 微前端架构:解构前端巨石应用的艺术
  • 【Android】制造一个ANR并进行简单分析
  • Kotlin中抽象类和开放类
  • 《从报错到运行:STM32G4 工程在 Keil 中的头文件配置与调试实战》
  • CRYPT32!ASN1Dec_SignedDataWithBlobs函数分析之CRYPT32!ASN1Dec_AttributesNC的作用是得到三个证书
  • 垃圾回收算法详解
  • 《sklearn机器学习——回归指标2》
  • Java内部类
  • 再读强化学习(动态规划)
  • 时隔4年麒麟重新登场!华为这8.8英寸新「手机」给我看麻了
  • 《Ceph集群数据同步异常的根因突破与恢复实践》
  • 深入剖析RocketMQ分布式消息架构:从入门到精通的技术全景解析
  • Ubuntu 文件权限管理
  • 【正则表达式】选择(Alternation)和分支 (Branching)在正则表达式中的使用
  • MySQL InnoDB 的锁机制
  • Chrome 插件开发入门:打造个性化浏览器扩展
  • 神经网络|(十八)概率论基础知识-伽马函数·下