linux系统中vi/vim文本编辑器的使用简介
linux系统中vi/vim文本编辑器的使用简介
1. vi/vim简介
vi/vim 是linux系统中最基本的编辑器,类似于windows系统中的记事本,几乎所有的linux开发版本都内置了vi/vim文本编辑器。vim是vi的增强版本,具有编程能力,可以实现代码高亮的功能。而linux系统最核心的思想就是“一切皆文件”,即在linux系统中,所有的设备、硬件、用户等等都以文件的形式进行存储。在使用linux系统时,最重要的工作就是要修改以及设置一些软件的配置文件,这些工作往往在命令行中进行,所以我们至少要掌握一种命令行编辑器的用法(本文主要介绍vim)。
虽然绝大多数的linux发行版本都内置的vi/vim编辑器,但不是所有,在开始使用之前一定要确保您的电脑安装了vim,如果没有安装可以执行下面的命令进行安装:
$ sudo apt install vim
2. vim的使用
2.1 vim的三种模式
首先先来介绍一下vim的三种模式:
- 一般命令模式(command mode):可以对文本进行复制、粘贴、删除,使用vim打开一个文件时默认进入一般命令模式。
- 编辑模式(insert mode):可以对文本进行编辑。
- 命令行模式(command-line mode):读取、存储文件等。
三种模式之间的转换关系如图所示:

注意:编辑模式和命令行模式之间不能相互转换!!!
2.2 用vim编辑一个文件
- 在opt目录下新建一个名为
Hello.java
的文件;
$ cd /opt
$ touch Hello.java
- 用vim编辑器对
Hello.java
文件进行编辑;
$ vim Hello.java
输入上述代码之后敲回车,按下i
进入编辑模式,在左下角会有提示;

- 输入下面的代码;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello!");
}
}
- 按下
esc
退出编辑模式,输入:
进入命令行模式,依次输入w
q
Enter
进行保存退出;

- 编辑完成。
2.3 一般命令模式下的按键说明
下面介绍常用的一般命令模式下的按键:
命令 | 功能说明 |
---|---|
0 | 数字0:移动到光标所在行的最前面字符 |
$ | 移动到光标所在行的最后面字符 |
gg | 移动到文件第一行 |
G | 移动到文件最后一行 |
:n1,n2s/word1/word2/g | n1,n2为数字:在n1行和n2行之间将word1替换为word2 |
:1,$s/word1/word2/g | 在整个文档之间将word1替换为word2 |
:1,$s/word1/word2/gc | 在整个文档之间将word1替换为word2,且在替换前提示用户确认是否替换 |
dd | 删除光标所在的一整行 |
yy | 复制光标所在的一整行 |
nyy | n为数字,复制光标所在的向下n行 |
p与P | p:将已复制的数据在光标下一行粘贴 P:将已复制的数据在光标的上一行粘贴 |
u | 恢复上一个操作(撤销) |
以:1,$s/word1/word2/g
命令为例进行演示,其他命令相同
- 用vim打开
Hello.java
文件
$ vim Hello.java
-
输入
:
进入命令行模式 -
输入
1,$s/public/PUBLIC/g
-
此时就会发现文件中所有的
public
变成了PUBLIC
,如图所示:

2.4 一般命令模式切换到编辑模式的可用按键
从一般命令模式进入编辑模式,可以通过下面的按键实现:
命令 | 功能说明 |
---|---|
i与I | 进入插入模式 i:从当前光标处插入 I:在目前所在行第一个非空格符处进行插入 |
a与A | 进入插入模式 a:从当前光标处的下一字符处插入 A:在目前所在行最后一个字符处进行插入 |
o与O(字母) | 进入插入模式 o:从当前光标的下一行处插入新的一行 O:从当前光标的上一行处插入新的一行 |
r与R | 进入替换模式 r:只会替换光标所在的那一个字符一次 R:会一直进行替换,直到按下ESC为止 |
2.5 一般命令模式切换到命令行模式的可用按键
命令 | 功能说明 |
---|---|
:w | 将编辑的数据写入磁盘中 |
:q | 退出vi/vim |
:wq | 保存后退出 |
:w! | 强制写入(当文件为只读时[1]) |
:q! | 强制退出(不保存) |
ZZ | 若文件没有修改则不保存退出,若文件已被修改过,则保存后退出 |
命令行模式的其他可用按键
命令 | 功能说明 |
---|---|
:set nu | 显示行号 |
:set nonu | 取消行号 |
在vim中执行:set nu
如图所示:

3. vim的可视区块
当我们要处理的内容是一个区块时,可以利用vim的可视区块。例如,我们要处理下面这种格式的文件:
192.168.1.1 host1 net
192.168.1.2 host2 net
192.168.1.3 host3 net
192.168.1.4 host4 net
192.168.1.5 host5 net
192.168.1.6 host6 net
192.168.1.7 host7 net
192.168.1.8 host8 net
192.168.1.9 host9 net
如果我们想将host1
~host9
复制到net
后面,可以在vim中进行如下的操作:
-
将光标移动到
host1
的h
处; -
按住
ctrl + v
,可以看到左下角显示:
-
按
→
将光标移动到host1
的1
处,此时可以看到选中的部分已经反白; -
按
↓
将光标移动到底部,此时发现host1
~host9
全部反白; -
按
y
复制反白范围; -
最后将光标移动打第一行的最后,按下
p
,处理结果如图所示:
4. vim的关键字补全功能
vim编辑器也提供了特定语法的关键字补全功能[2];以html文件为例:
-
创建一个名为
test.html
文件;$ touch test.html
-
用vim编辑器打开;
vim test.html
-
假设文件中有以下代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <style> </style> <body> <form action="add" method="get"> 名称:<input type="text" name="fname"/><br> 价格:<input type="text" name="fprice"/><br> 库存:<input type="text" name="fcount"/><br> 备注:<input type="text" name="remark"/><br> <input type="submit" value="添加"/> </form> </body> </html>
-
在
style
标签中想输入background-color,此时可以使用自动补全功能,在输入b
后按ctrl+x
后再按ctrl+o
会出现关键字补全提示,如图所示:
5. 总结
以上简要介绍了vim编辑器的一些常用命令,以及对部分进行了演示,但vim的命令还有很多,可以去查找一些相关书籍。
参考文献:
《鸟哥的Linux私房菜》
《Linux就该这么学》
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【.NET】调用本地 Deepseek 模型
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库