Vim 常用命令
Vi 与 Vim 的关系,以及冒号命令、普通模式按键和搜索速查,涵盖全文复制、删除与替换。
Vi 是 Unix 中的文本编辑器,Vim(Vi IMproved)是兼容 Vi 大部分操作的增强版编辑器,可以独立安装和使用。两者都用 i 输入、:wq 保存退出;日常操作中较直观的差别是:
| 对比项 | 传统 Vi | Vim |
|---|---|---|
| 撤销 | 主要支持一级撤销 | 可以连续撤销、重做多步修改 |
| 语法高亮 | 不提供 | 可按文件类型高亮代码和配置 |
系统里的 vi 命令有时实际启动的就是 Vim,因此命令名不一定代表具体实现。
下面只介绍 Vim,按常见默认设置整理。【…】 为待替换参数,速查块右侧为说明,不要整块粘贴执行。
1. 打开文件与基本流程
在终端执行:
| |
路径含空格时,在终端中加引号。一次编辑按下面的顺序操作;这是按键流程,不是脚本:
| |
后文分为三类:冒号命令输入后回车,普通模式按键直接生效,搜索用 / 或 ? 开头并回车。从插入模式切换到这些操作前,先按 Esc。
2. 冒号命令:输入后回车
下面的 : 都是命令的一部分。例如 :%d,依次输入 :、%、d,再按回车执行。
2.1 保存与退出
| |
:wq 即使未修改也会写入,:x 只在有修改时写入。:q!、:e! 使用前确认不需要保留当前修改;:w! 不能绕过操作系统的文件权限。这里按单文件、单窗口使用理解。
2.2 按行删除与复制
d 表示删除,y 表示复制;前面加行号或范围,就能指定处理哪些行。范围中的 . 表示当前行,$ 表示末行,逗号连接起止行,包含两端。
| |
例如 :10,20d 删除第 10~20 行,:10,20y 复制这 11 行。复制的内容可回到普通模式后用 p 粘贴到当前行下方。
2.3 全文操作(%)与替换
在冒号命令的行范围中,% 等于 1,$,表示从第一行到最后一行。后面接 d 就是删除全文,接 y 就是复制全文,接 s 则进行替换。
| |
g 表示每行的全部匹配,c 表示逐项确认;确认时 y 替换、n 跳过、a 替换当前及剩余项、q 停止。最后一条把匹配内容替换为空,不是删除匹配所在的整行。
替换也能缩小范围:
| |
匹配模式按正则解析,不额外加引号。使用 / 作分隔符时,内容中的 / 写成 \/;替换内容中的 & 表示整个匹配,字面 & 写成 \&。
:%y 默认复制到 Vim 内部寄存器,供 p、P 粘贴,不等同于复制到系统剪贴板。删除与替换后可按 u 撤销;保存后才会写入磁盘文件。
2.4 行号与显示设置
| |
这些设置只影响当前会话,不会自动写入配置。
3. 普通模式按键:不加冒号
先按 Esc 回到普通模式,以下按键都不需要回车。大小写有区别:dd 是连续按两次小写 d,G 是大写 G;Ctrl+r 表示同时按 Ctrl 和 r。
3.1 移动与定位
| |
j、k 按文件中的实际行移动,不按自动折行后的屏幕行计算。按键前可加次数,例如 5j 向下移动 5 行;跳到第 20 行也可以输入冒号命令 :20 后回车。
这里单独按 % 是跳转配对的 ()、[]、{},与 :%d 中的全文范围不同。
3.2 输入与修改
| |
进入插入模式后输入新内容,结束时按 Esc。ciw 是连续按 c、i、w,光标在词中也会修改整个词。
3.3 删除、复制与粘贴
| |
dd 与 :d 都删除当前行,yy 与 :y 都复制当前行,但输入方式不同。dG 只处理当前行到末尾,删除全文直接用 :%d。
删除的内容也能粘贴:dd 后移动到目标行,再按 p,就会把这一行剪切到目标行下方。
3.4 撤销与重复
| |
3.5 选中文本后操作
从普通模式开始:
| |
按 v 或 V 后,移动光标扩展选区,再按 y 复制、d 删除、c 删除并开始输入;Esc 取消选择。
4. 搜索:输入后回车
从普通模式输入 / 或 ? 开始搜索,不加冒号。匹配模式按正则解析;例如 /ERROR 后回车,查找后面的 ERROR。
| |
搜索结束后回到普通模式,下面的按键直接生效:
| |
n 不一定向下:上一次用 ? 向前搜索时,n 会继续向文件开头方向查找。
评论
使用 GitHub 登录后参与讨论,评论将公开保存在 GitHub。
站长管理删除会同步到 GitHub,无法撤销。
阅读到这里时加载评论。