vim
Vim 9 / Neovim 0.9+Vim / Neovim 快速参考:模式、光标移动、编辑、搜索替换、多文件导航、寄存器 / 宏、列编辑(Visual Block),并附带常用动作的简短示例。
37 条命令
模式与保存
:w / :q / :wq / :q!保存、退出、保存并退出、强制退出不保存。
:w file 另存为;:w! 强制;:x 修改过则保存并退出;:qa! 强制退出全部;:wqa
:w | :q 或 ZZi / a / o / I / A / O进入插入模式:i 在光标前 / a 在光标后;o / O 在下 / 上方开新行;I/A 行首 / 行尾。
i 在此编辑 => o 新行并进入插入 => I 行首 => A 行尾<Esc> / Ctrl-[返回普通模式(也可用 Ctrl-c / Ctrl-[)。同时取消未完成的算符。
i Hello<Esc> ; 再 :w光标移动
h / j / k / l向左 / 下 / 上 / 右移动一个字符。(方向键也可以。)
5j — 向下移动 5 行w / b / e / W / B / E按“词”移动(标点与空白分别分隔);W/B/E 以空白作为分隔。
wdw ; 3W 跳到第三个空白分隔词0 / $ / ^硬行首 / 行尾 / 第一个非空字符。
0 到行首;$ 到行尾;^ 到首个非空字符gg / G / :N首行 / 末行 / 跳转到第 N 行。也支持百分比定位:50%。
gg=G 格式化整个文件(配合 =)H / M / L / Ctrl-d / Ctrl-u屏幕顶部 / 中部 / 底部(H/M/L);向下 / 向上翻半页(Ctrl-d / Ctrl-u)。
Ctrl-d 和 Ctrl-u 浏览;10Ctrl-f 向前翻一整页{ / } / ( / )按段落(大括号)或句子(小括号,纯 ASCII 文本)跳转。
5{ ; 2} 向前跳两段f<char> / F<char> / t / T ; ; / ,在本行查找 / 反向查找下一个字符(f/F);用 ; / , 重复。t/T 停在字符之前。
f, 把光标带到下一个逗号;df, 删除到下一个逗号为止插入模式
Ctrl-h / Ctrl-w / Ctrl-u在输入时退格 / 删除一个词 / 删除到行首——让编程用 Vim 更顺手。
i hello world<Ctrl-w> 剩下 'hello 'Ctrl-o <cmd> / Ctrl-r <reg>执行一次普通模式命令(Ctrl-o);在插入模式粘贴寄存器(Ctrl-r)。
Ctrl-r = expr 临时计算一个表达式
Ctrl-r " 无名寄存器;Ctrl-r 0 yank 寄存器;Ctrl-r =5+5 插入 10编辑算符
d / x / X / c删除 / 删除光标处字符 / 退格删除 / 修改(删除并进入插入)。可与动作组合:dw/xp/c$。
dd 删除整行;cc 修改整行;D 删除到行尾;C 修改到行尾
dw | dw$ | dw | 3dd | C 重排当前行y / yy / Y复制(yank)。yy / Y 复制当前行;y$ / yW 等接受一个动作。
y2w yy p gp — 复制 2 个词与一行,粘贴,再次粘贴(光标不移动)p / P / gp / gP在光标后(p) / 前(P)粘贴;gp/gP 让光标停留在粘贴内容的末尾。
p 粘贴到下方;P 粘贴到上方;gp 粘贴到后面且光标到末尾u / Ctrl-r / U撤销 / 重做(Ctrl-r)。U 恢复当前行为初始状态(已不推荐,可用重复计数代替)。
u u u ; Ctrl-r Ctrl-r ; 5u 撤销最近 5 次修改. / @: / q:重复上一次编辑(.)——极为强大。@: 重复最近一条宏;q: 打开命令历史窗口。
i Monday<Esc> ; 再用 . . . . 跨多行重复r / R / J / gq替换单个字符(r<char>)/ 进入替换模式(R)/ 合并行(J,gJ 不加空格)/ 格式化(gq{motion})。
raZ 改一个字符;J 合并行;gqap 格式化当前段落缩进
>> / << / = / :set autoindent缩进 / 反缩进 / 自动缩进(=)。可与动作组合:=G 到结尾;gg=G 格式化整文件。
5>> 缩进 5 行;=ap 自动缩进段落;gg=G 格式化整个缓冲区搜索与替换
/pat / ?pat / n / N向下(/)/ 向上(?)搜索;n / N 在同方向 / 反方向重复。
/\<word\> 词边界;\v very-magic 正则;\c 忽略大小写;\C 区分大小写
/TODO\c ; n 下一个;N 上一个;* / # 搜索光标下的词* / # / g* / g#搜索光标下的词:* 向下(# 向上)。g* / g# 包含相邻边界。
光标停在 foo 上按 * — 跳到下一个 foo,n 继续:%s/pat/rep/g / :5,12s/foo/bar/g替换——可指定范围、标志、按匹配确认。
%s / g 全局;/c 逐个确认;/i 忽略大小写;/I 区分大小写;/e 不报错;/n 仅计数
:%s/\bfoo\b/bar/gc — 把整词 foo 替换为 bar,每处确认:g/pat/d / :v/pat/m$对匹配行执行动作::g/pat/d 删除匹配行;:v/pat/m$ 把非匹配行移到末尾。
:v/^#\|^$/d 删除所有只包含注释/空行的行缓冲区、标签页、窗口
:e file / :b<N> / :bn :bp :ls打开另一文件(:e),列出缓冲区(`:ls`),按编号跳转(`:b 3`),下一个/上一个(`:bn` / `:bp`)。
:e . 文件浏览器;:bd 删除当前缓冲区;:bn! 强制;hidden
:e src/index.ts :ls :b 3 :bp :bn:sp :vs / Ctrl-w j/k/h/l水平 / 垂直分屏;Ctrl-w + 方向 在窗口间移动。
:vs src/index.ts | Ctrl-w l | Ctrl-w j — 在相邻窗格中工作:tabnew / gt / gT / :tabclose把每个任务放在独立“屏”中时使用标签页。
:tabnew README.md gt gT :tabclose :tabonly视图与设置
:set nu / :set relativenumber切换行号显示;`relativenumber` 显示到光标的距离(配合动作很顺手)。
:set relativenumber && 5j 让你在脑中数得清:set syntax on / :set filetype=ts开启语法高亮 / 为无后缀文件强制指定文件类型。
:set ft=markdown ; :set bg=dark 切换深色背景:set paste / :set wrap / :set hlsearch粘贴相关开关:paste 避免插入模式自动缩进;hlsearch 保留搜索高亮。
:noh 临时清除高亮
:set paste 后在某些终端里 i<Ctrl-r>+ 粘贴可视模式与列编辑
v / V / Ctrl-v字符可视 / 行可视 / 块可视——块模式可以按列编辑。
v 下按 o 切换选区端点
Ctrl-v 5j I // Esc — 给 6 行加上 // 前缀(经典的注释/反注释)gv / o (in visual)重新选中上一次的选区;`o` 切换选区活动端点。
做一次块选区,修改内容,再用 . 重复同样的修改寄存器与宏
"ayy / "ap / :reg用命名寄存器 a 复制,然后从 a 粘贴。:reg 列出全部寄存器。
"0 最近 yank;"_ 黑洞寄存器;"+ 系统剪贴板(需要 +clipboard)
"ayy "ap ; :reg 列出命名寄存器与 0、+、*q<reg> ... q / @<reg> / @@把一段操作录到寄存器 <reg>;@<reg> 回放;@@ 重复上一次的宏。
qa I" <Esc> $ " <Esc> q 5j @a — 在多行末尾加引号外部交互
:!cmd / :r !cmd在 Vim 内执行 shell 命令;:r !cmd 把命令输出插入到当前光标处。
:r !date ; :!%:clean :r ...:r file / :source file.vim把文件内容读到光标位置;:source 执行一段 Vim 脚本(.vimrc、插件文件)。
:r ~/.vimrc 把整份配置粘贴进来;:runtime! syntax/foo.vim:help <topic>Vim 的离线文档质量很高。`Ctrl-]` 跳转到光标下的标签。
:help gq :help motion.txt :help :terminal — 开启内置终端(8.0+):terminal打开内置终端(Vim 8+ / Neovim)。
:vert terminal 垂直分屏;:term bash;Ctrl-w N 退出终端模式
:vert term bash :resize 15 && 实时跑测试商标与使用声明
本批命令行工具速查手册为开源社区参考资料。文中涉及的各工具的名称、标识、商标(如 Git™、Docker™、Kubernetes®、kubectl、PostgreSQL®、MySQL®、Redis™、MongoDB®、Linux™、PowerShell™、Vim™ 等)均归对应权利人所有,此处仅为识别与参考之目的使用。
本速查手册的全部内容均为独立编写的简化自包含参考,**与任何官方文档不存在隶属、被认可或引用关系**。命令列表、参数说明、示例均为作者原创简化表达;如需权威信息,请参阅各工具的官方文档。
命令语法与参数可能在不同工具版本中有所差异。所示版本标签对应稳定发布版本;其他版本行为可能有所不同。本速查手册**不代表**商标权利人的任何偏好或推荐。
如商标或版权方认为本站部分内容存在权益侵害,请发送邮件至[email protected],我们在收到有效权属证明后,会在合理期限内修改或移除相关内容。
本网站不对因使用本站信息而产生的任何直接或间接损失承担法律责任。
关于 Vim / Neovim
Vim 是一个模态文本编辑器,源于 Bram Moolenaar 1991 年为 Amiga 写的 Stevie 克隆,如今已成为大多数类 Unix 系统的默认编辑器;Neovim(2014,当前 0.9+)是社区驱动的重构,保留 Vim 的交互同时把内核现代化(LSP、Lua 脚本、异步 job)。Vim 的灵魂在于模态——Normal(移动与动词:`dd`、`y`、`p`)、Insert(输入)、Visual(选择)、Command-line(`:`)、Replace——并组合可组合的运算符(`d` `c` `y` `>` `<` `!` `g~` `gu`)与动作(`w` `b` `e` `f` `t` `/`)。一旦基础语法内化,Vim 在代码编辑上的效率非常高。多窗口分屏、标签页、寄存器、宏(`q`)、正则搜索替换(`:%s/.../.../g`)、持久撤销、标记、内嵌脚本语言(Vimscript 或 Neovim 的 Lua)扩展插件。改配置文件、写代码、写作——任何文本密集型工作都该用 Vim 或 Neovim;只有当某冷门语言没有 LSP 时才回到 VS Code。Vim 不会动文件系统,除非你 `:w`;崩溃留下的 `.swp` 文件是朋友不是敌人。
速查页版本 1.0.0