Vim 的基本用法
约 2016 字大约 7 分钟
2025-04-29
Vi 和 vim 简单介绍
在 Windows 系统中,记事本
是一个内置的文本编辑工具。虽然它可以满足基本需求,但功能相对有限,显示效果也不够理想,且不支持扩展。因此,许多人会选择安装功能更强大的 Notepad++
作为替代工具。Notepad++
提供了清晰的界面、代码高亮以及其他实用功能,为用户带来了更好的编辑体验。
与 Windows 中的记事本类似,Linux 系统(包括其他类 Unix 系统)也自带了一个基础的文本编辑器——vi。Vim 可以看作是 vi 的增强版,类似于 Windows 系统中的 Notepad++
。vim 是一个功能强大的高级编辑器,支持代码高亮、语法检查、搜索替换、编程等功能,极大地提升了文本编辑效率。
Vi 和 vim 的操作方式和命令体系基本一致,因此本文将以 vim 为例进行详细介绍。
需要注意的是,vim 并非所有 Linux 系统的默认安装软件,通常需要手动安装。例如,在基于 Debian 的系统中,可以通过以下命令安装:
sudo apt install vim
Vim 的使用步骤
使用命令打开文本文件:
vim file.txt
打开文件后,默认会进入命令模式。此时,按下字母
i
,即可切换到输入模式,开始编辑文件内容编辑完成后,按下
Esc
键退出输入模式,回到命令模式(注意确保键盘处于英文输入状态)接着输入冒号
:
进入底线命令模式,然后输入:wq!
保存修改并退出 vim命令解释:
w
表示写入(write),即保存文件q
表示退出(quit),即关闭vim
!
表示强制执行
Vim 的模式
从上述使用流程可以看出,vim 具有多种操作模式,主要包括命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line mode)。这些模式之间可以相互切换,具体如下图所示(原图来自 菜鸟教程,我额外添加了标注):
除了这三种主要模式外,vim 还支持一些其他模式,例如我们后面会谈到用于批量操作的可视模式(Visual mode),等等。不过,这些模式在日常使用中并不常见
命令模式
启动 vim 后,默认进入的就是命令模式。在此模式下,键盘输入会被识别为命令而非普通文本。例如,按下 i
不会在文档中插入字符,而是触发进入输入模式的指令。
以下是命令模式中常用的快捷键及其功能:
复制、删除、粘贴相关命令
yy 拷贝光标所在行
dd 删除光标所在行
D 删除当前光标到行尾的内容
dG 删除当前行到文档尾部的内容(若光标在首行,则删除整个文档)
p 粘贴 yy 所复制的内容
x 删除光标所在的字符
u 撤销上一步操作
查找
/word 在整篇文档中向下查找字符串 `word`,按下 `n` 跳转到下一个匹配项,`N` 返回上一个
?word 在整篇文档中向上查找字符串 `word`,按下 `n` 跳转到下一个匹配项,`N` 返回上一个
.、*、[、]、^、%、/、?、~ 和 $ 如果在查找这十个字符需转义,比如 \.
:nohl 取消搜索后的高亮显示
* 查找光标所在单词,并跳转到下一个匹配项,`n` 下一个,`N` 上一个
# 查找光标所在单词,并跳转到上一个匹配项,`n` 下一个,`N` 上一个
gd 查找当前光标所在单词在文档中的第一个非注释位置
% 匹配括号的另一半(如 `{}`、`()` 或 `[]`)
替换
s/old/new 将本行第一个 `old` 替换为 `new`
s/old/new/g 将本行所有 `old` 替换为 `new`
%s/old/new/g 将文档中所有 `old` 替换为 `new`
%s/old/new/gc 逐个询问是否将文档中的 `old` 替换为 `new`
y 表示替换
n 表示不替换
a 表示替换所有
q 表示放弃替换
l 表示替换第一个并进入插入模式
^E 表示用 Ctrl+e 来滚动屏幕
^Y 表示用 Ctrl+y 来滚动屏幕
5,13s/old/new/g 将第 5 到 13 行的所有 `old` 替换为 `new`
移动光标
w(e) 移动光标到下一个单词
b 移动光标到上一个单词
数字0 移动光标到本行开头
$ 移动光标到本行末尾
H 移动光标到屏幕首行
M 移动光标到屏幕居中行
L 移动光标到屏幕底行
gg 移动光标到文档的尾行
G 移动光标到文档尾行
h 向左移动光标
j 向下移动光标
k 向上移动光标
l 向右移动光标
ctrl + f 翻到下一页
ctrl + b 翻到上一页
` 移动光标到上一次修改的位置
数字与命令
3yy 拷贝光标所在行及下方总共 3 行内容
5dd 删除光标所在行及下方总共 5 行内容
输入模式
在命令模式下,按下以下按键即可进入输入模式:
i 在当前光标位置开始编辑
a 在光标后开始编辑
o 在光标下一行开始编辑
进入输入模式后,可以直接通过键盘编辑文件内容。完成编辑后,按下 Esc
键退出输入模式,返回命令模式
底线命令模式
在命令模式下输入冒号 :
即可进入底线命令模式。以下是常用的命令:
:q! 强制退出,不保存修改
:wq! 强制保存并退出
:set nu 显示行号
:set nonu 取消显示行号
:数字 跳转到指定行
:! command 暂时离开 `vim`,执行外部命令(如 `:!ip a` 查看 IP 信息)
:w filename 文件另存为,先按下 v 进入可视模式可保存部分内容
:w! filename 文件另存为并覆盖已存在的同名文件
:r filename 将另一个文件的内容插入到当前光标后
可视模式
在某些场景下,可能需要对多行内容进行批量操作,例如为相邻的代码行添加注释。如果逐一手动修改,显然效率低下。这时可以借助可视模式来实现批量操作
批量添加注释:
按下
Ctrl + v
进入可视模式使用方向键(或
H
、J
、K
、L
键)选择需要注释的行按下
Shift + i
(即大写I
)进入行首插入模式输入注释符号(如
//
或#
)以及必要的空格连续按两次
Esc
,完成注释的批量添加保存并退出
批量取消注释:
- 按下
Ctrl + v
进入可视模式 - 使用方向键选择需要删除注释的行
- 按下
d
删除选中的内容 - 保存并退出
Vim 操作多个文件
Vim 支持同时打开多个文件,便于多任务处理。例如:
vim -o file1 file2 file3 # 打开后垂直分布
vim -O file1 file2 file3 # 打开后水平分布
在多文件编辑中,可以使用以下命令在不同文件间切换:
Ctrl + w + w 切换到下一个文件
对于垂直分布的文件:
Ctrl + w + 上/下方向键(或 j/k 键) 切换至上/下文件
对于水平分布的文件:
Ctrl + w + 左/右方向键(或 h/l 键) 切换至左/右文件
退出多文件编辑:
qa 全部退出
qa! 全部强制退出(不保存)
wqa 全部保存后退出
Vim 键盘图
以下是一张总结了 vim 常用快捷键的键盘图,出处见图片,供参考:
更多更详细 vim 命令,参见菜鸟教程 Linux vi/vim
版权所有
版权归属:Shuo Liu