openEuler 24.03 中的 Vim 编辑器 ------ 全面知识点详解
一、Vim 简介
1.1 Vim 是什么?
Vim(Vi IMproved)是 Linux 系统中最常用的文本编辑器之一,是 Vi 编辑器的增强版。它具有模式化操作、高度可定制、轻量高效等特点,广泛用于脚本编写、配置文件修改、代码开发等场景。
1.2 Vim 在 openEuler 24.03 中的状态
openEuler 24.03 默认可能未预装 Vim,但可通过包管理器轻松安装。
二、Vim 安装与部署(详细步骤)
2.1 检查是否已安装 Vim
bash
vim --version
若提示"command not found",则需安装。
2.2 安装 Vim(使用 dnf 包管理器)
openEuler 使用 dnf 作为默认包管理器。
bash
# 更新系统软件源
sudo dnf update -y
# 安装 vim-enhanced(包含完整功能的 Vim)
sudo dnf install -y vim-enhanced
# 验证安装
vim --version
说明 :
vim-enhanced包含语法高亮、多窗口、插件支持等高级功能;基础版vim-minimal功能有限,不推荐开发使用。
vim 键盘图

三、Vim 的三种基本模式
| 模式 | 进入方式 | 功能 |
|---|---|---|
| 命令模式(Normal Mode) | 启动 Vim 或按 Esc |
执行光标移动、删除、复制等命令 |
| 插入模式(Insert Mode) | 按 i, a, o 等 |
输入文本 |
| 末行模式(Command-line Mode) | 按 : |
执行保存、查找、替换、退出等命令 |

四、命令模式下编辑
4.1 光标移动
| 命令 | 功能 |
|---|---|
h / j / k / l |
左 / 下 / 上 / 右 |
w |
跳到下一个单词开头 |
b |
跳到上一个单词开头 |
0(数字零) |
行首 |
$ |
行尾 |
gg |
文件开头 |
G |
文件末尾 |
5G |
跳转到第5行 |
案例:打开一个测试文件并练习移动
bash
echo -e "Hello world\nThis is openEuler.\nVim is powerful." > test.txt
vim test.txt
在 Vim 中按 j、k、w、b 等键体验光标移动。
4.2 删除、复制、粘贴
删除
| 命令 | 功能 |
|---|---|
x |
删除光标处字符 |
dw |
删除从光标到单词结尾 |
dd |
删除整行 |
d$ |
删除从光标到行尾 |
d0 |
删除从光标到行首 |
复制(Yank)
| 命令 | 功能 |
|---|---|
yy |
复制当前行 |
yw |
复制一个单词 |
y$ |
复制到行尾 |
粘贴(Put)
| 命令 | 功能 |
|---|---|
p |
在光标后粘贴 |
P |
在光标前粘贴 |
案例代码演示:
text
Line 1: Apple
Line 2: Banana
Line 3: Cherry
- 将光标移到第2行,按
dd删除该行; - 移到第1行,按
yy复制; - 移到第3行,按
p粘贴 → 结果为:
text
Line 1: Apple
Line 3: Cherry
Line 1: Apple
4.3 v 模式(可视模式)
v:进入字符级可视模式V:进入行级可视模式Ctrl+v:进入块级可视模式
用途:选中文本后可执行复制、删除、缩进等操作。
案例:批量注释 C 代码
c
#include <stdio.h>
int main() {
printf("Hello\n");
return 0;
}
- 在 Vim 中打开该文件;
- 按
Ctrl+v进入块模式; - 用
j选择多行开头; - 按
I(大写 i),输入//,再按Esc; - 所有选中行前自动添加
//。
4.4 撤销、重做、重复执行
| 命令 | 功能 |
|---|---|
u |
撤销上一次操作 |
Ctrl+r |
重做(Redo) |
.(点号) |
重复上一次修改操作 |
案例:连续插入相同内容
text
Name:
Age:
City:
- 在第一行末尾按
A,输入Alice,按Esc; - 移到第二行,按
.→ 自动插入Alice; - 再按
u撤销。
五、标签(Tag)与固定版式替换
5.1 标签(跳转标记)
ma:在当前位置设置标记 a(a-z)- ```a``:跳转到标记 a 的精确位置
'a:跳转到标记 a 所在行的行首
案例:在长文件中标记重要位置快速返回。
5.2 固定版式替换(使用寄存器)
Vim 有多个寄存器(如 "ayy 将当前行复制到寄存器 a)。
vim
"ayy " 复制当前行到寄存器 a
"ap " 从寄存器 a 粘贴
六、末行模式下编辑(以 : 开头)
6.1 查找
| 命令 | 功能 |
|---|---|
/word |
向下查找 word |
?word |
向上查找 word |
n |
下一个匹配项 |
N |
上一个匹配项 |
案例 :在
/etc/passwd中查找root
bash
vim /etc/passwd
:/root<Enter>
6.2 替换
语法:
vim
:[range]s/old/new/[flags]
常用形式:
:s/foo/bar/→ 替换当前行第一个 foo:s/foo/bar/g→ 替换当前行所有 foo:%s/foo/bar/g→ 全文替换所有 foo:%s/foo/bar/gc→ 全文替换并逐个确认(c = confirm)
案例 :将 C 程序中的
printf替换为puts
c
#include <stdio.h>
int main() {
printf("Hello");
printf("World");
}
在 Vim 中执行:
vim
:%s/printf/puts/g
结果:
c
#include <stdio.h>
int main() {
puts("Hello");
puts("World");
}
6.3 文档保存与退出
| 命令 | 功能 |
|---|---|
:w |
保存 |
:q |
退出(无修改时) |
:wq 或 :x |
保存并退出 |
:q! |
强制退出不保存 |
:w filename |
另存为 filename |
七、多窗口功能
7.1 水平分屏
vim
:sp filename " 水平分割,打开 filename
:sp " 水平分割当前文件
Ctrl+w+j/k:在窗口间上下切换
7.2 垂直分屏
vim
:vsp filename " 垂直分割
Ctrl+w+h/l:左右切换窗口
案例:同时编辑两个 C 文件
bash
vim main.c
:vsp utils.c
此时可同时查看和编辑两个文件。
八、其他实用功能
8.1 语法高亮
确保 .vimrc 中启用:
vim
syntax on
8.2 显示行号
vim
:set number " 显示行号
:set nonumber " 关闭行号
8.3 自动缩进(对编程重要)
vim
:set autoindent
:set cindent " C语言专用缩进
:set tabstop=4
:set shiftwidth=4
九、实践:GCC 编程(C 语言)
9.1 创建并编辑 C 程序
bash
vim hello.c
代码示例(带详细注释):
c
/* hello.c - 一个简单的 C 程序 */
#include <stdio.h> // 包含标准输入输出头文件
int main() { // 主函数入口
printf("Hello, openEuler 24.03!\n"); // 输出字符串
return 0; // 返回 0 表示程序正常结束
}
9.2 编译与运行
bash
gcc -o hello hello.c # 编译
./hello # 运行
Vim 技巧:在 Vim 中直接编译(末行模式):
vim
:!gcc -o %< %.c
%表示当前文件名(如 hello.c)%<表示去掉扩展名(hello)
十、实践:Java 编程
10.1 编写 Java 类
bash
vim HelloWorld.java
代码示例:
java
// HelloWorld.java - Java 入门程序
public class HelloWorld { // 类名必须与文件名一致
public static void main(String[] args) {
// main 方法是 Java 程序入口
System.out.println("Welcome to Vim on openEuler!"); // 输出语句
}
}
10.2 编译与运行
bash
javac HelloWorld.java # 编译生成 .class 文件
java HelloWorld # 运行(注意:不带 .class)
注意:openEuler 需先安装 OpenJDK:
bash
sudo dnf install -y java-17-openjdk-devel
十一、小结
| 类别 | 关键知识点 |
|---|---|
| 安装 | dnf install vim-enhanced |
| 模式 | 命令、插入、末行模式切换 |
| 编辑 | 光标移动、删除/复制/粘贴、撤销重做 |
| 高级 | 可视模式、多窗口、标签、寄存器 |
| 编程支持 | 语法高亮、自动缩进、外部编译 |
| 实践 | C/Java 程序编写、编译、调试一体化 |
Vim 不仅是编辑器,更是程序员的生产力工具。掌握其核心命令可极大提升在 openEuler 环境下的开发效率。
建议 :初学者可运行
vimtutor命令进行交互式学习(openEuler 中若未安装,可通过sudo dnf install -y vim-common获取)。