Vim 入门教程:模式切换、常用命令与基础配置
Vim 是 Linux 环境中非常经典的文本编辑器。它启动快、功能强、几乎可以只靠键盘完成编辑,因此经常用于修改配置文件、编写代码和处理服务器上的文本。Vim 的学习难点不在于命令很多,而在于它采用了多模式设计。只要先理解模式,再掌握一组高频命令,就能很快完成日常编辑。
一、Vi 与 Vim 有什么区别
Vi 是 Unix 系统中传统的文本编辑器,Vim 的全称是 Vi IMproved,可以理解为 Vi 的增强版。Vim 保留了 Vi 的操作方式,并增加了语法高亮、多级撤销、代码补全、分屏和插件等功能。
在 Linux 中可以先检查 Vim 是否已经安装:
vim--version编辑或新建文件:
vimtest.txt如果文件存在,Vim 会打开它;如果文件不存在,保存后就会创建该文件。
二、Vim 的核心:多种工作模式
1. 普通模式
启动 Vim 后默认进入普通模式,也叫命令模式。在这个模式下,键盘输入会被解释成编辑命令,而不是直接写入文字。移动光标、复制、删除、粘贴和撤销等操作通常都在这里完成。
无论当前处于什么模式,按Esc一般都可以回到普通模式。
2. 插入模式
插入模式用于真正输入文本。常见进入方式如下:
| 命令 | 作用 |
|---|---|
i | 在光标前开始输入 |
a | 在光标后开始输入 |
I | 在当前行行首开始输入 |
A | 在当前行行尾开始输入 |
o | 在当前行下方新建一行并输入 |
O | 在当前行上方新建一行并输入 |
输入完成后按Esc返回普通模式。
3. 命令行模式
在普通模式下输入冒号:,就会进入命令行模式。保存、退出、查找替换和设置 Vim 选项等操作都在这里完成。
4. 可视模式
可视模式用于选择文本:
v:按字符选择V:按整行选择Ctrl+v:按矩形块选择
选中内容后,可以继续按y复制、按d删除,或执行其他操作。
三、光标移动
在普通模式下,最经典的四个移动键是:
| 命令 | 方向 |
|---|---|
h | 左移 |
j | 下移 |
k | 上移 |
l | 右移 |
还可以使用以下命令快速跳转:
w:移动到下一个单词开头b:移动到上一个单词开头0:移动到当前行行首^:移动到当前行第一个非空字符$:移动到当前行行尾gg:跳到文件第一行G:跳到文件最后一行数字+G:跳到指定行,例如20G跳到第 20 行
Vim 中很多命令都可以与数字组合。例如5j表示向下移动 5 行,3w表示向后移动 3 个单词。
四、复制、删除与粘贴
1. 复制
yy:复制当前行3yy:从当前行开始复制 3 行yw:复制一个单词
2. 删除或剪切
x:删除光标所在字符dd:删除当前行3dd:从当前行开始删除 3 行dw:删除一个单词d$:删除从光标到行尾的内容
在 Vim 中,删除的内容通常会进入寄存器,因此也可以把dd理解为剪切当前行。
3. 粘贴
p:在光标后或当前行下方粘贴P:在光标前或当前行上方粘贴
例如,要复制当前行并在下一行粘贴,可以依次输入:
yy p五、修改、撤销与重复
r:替换光标所在的一个字符cw:删除当前单词并进入插入模式cc:清空当前行并进入插入模式u:撤销上一次操作Ctrl+r:恢复被撤销的操作.:重复上一次修改
点命令.非常实用。例如修改了一个单词后,移动到另一个位置按.,即可重复相同的修改。
六、查找与替换
1. 查找
在普通模式下:
/关键字按回车后开始向下查找:
n:跳到下一个匹配项N:跳到上一个匹配项
使用?关键字可以向上查找。
2. 替换
替换当前行第一个匹配项:
:s/旧内容/新内容/替换当前行所有匹配项:
:s/旧内容/新内容/g替换整个文件中的所有匹配项:
:%s/旧内容/新内容/g每次替换前进行确认:
:%s/旧内容/新内容/gc七、保存与退出
在普通模式下按:进入命令行模式,然后使用:
| 命令 | 作用 |
|---|---|
:w | 保存文件 |
:q | 退出 Vim |
:wq | 保存并退出 |
:x | 保存有修改的内容并退出 |
:q! | 放弃修改并强制退出 |
:w 文件名 | 另存为指定文件 |
如果提示文件只读或权限不足,应先确认自己是否有写权限,不建议不加判断地使用强制操作。
八、实用设置与基础配置
在命令行模式中可以临时设置:
:set number " 显示行号 :set relativenumber " 显示相对行号 :set hlsearch " 高亮搜索结果 :set ignorecase " 搜索时忽略大小写 :set autoindent " 自动缩进 :set tabstop=4 " Tab 显示为 4 个空格宽度这些设置退出 Vim 后会失效。若希望长期生效,可以将配置写入用户目录下的~/.vimrc:
set number set hlsearch set ignorecase set smartcase set autoindent set tabstop=4 set shiftwidth=4 set expandtab syntax on其中,smartcase表示搜索词只要包含大写字母,就自动区分大小写;expandtab表示输入 Tab 时使用空格。
九、常见问题
1. 为什么输入的字母没有出现在文件中?
因为当前处于普通模式。按i进入插入模式后再输入内容。
2. 不知道自己在哪个模式怎么办?
连续按两次Esc回到普通模式,再执行下一步操作。
3. 如何退出 Vim?
先按Esc,再输入:q并回车。如果文件已经修改但不想保存,使用:q!。
4. 为什么:q无法退出?
通常是文件已经修改但尚未保存。保存后退出用:wq,放弃修改则用:q!。
十、快速练习
执行下面的命令创建练习文件:
vimpractice.txt然后完成以下操作:
- 按
i进入插入模式,输入三行文字。 - 按
Esc返回普通模式。 - 使用
yy复制一行,再按p粘贴。 - 使用
dd删除一行,再按u撤销。 - 输入
/关键字练习查找。 - 输入
:wq保存并退出。
总结
学习 Vim 不需要一次记住全部命令。首先建立“普通模式负责操作、插入模式负责输入、命令行模式负责保存和退出”的思维,再熟练掌握i、Esc、h/j/k/l、yy、dd、p、u、/、:wq等高频命令,就已经可以处理大多数基础编辑任务。随着使用次数增加,再逐步学习组合命令、寄存器、分屏和插件,会比死记完整命令表更高效。