openEuler入门学习教程,从入门到精通,openEuler 24.03 中的 Vim 编辑器 —— 全面知识点详解(7)

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 中按 jkwb 等键体验光标移动。


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;
}
  1. 在 Vim 中打开该文件;
  2. Ctrl+v 进入块模式;
  3. j 选择多行开头;
  4. I(大写 i),输入 //,再按 Esc
  5. 所有选中行前自动添加 //

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 获取)。

相关推荐
LCG元2 小时前
Linux 性能监控三板斧:top/vmstat/iostat 快速入门
linux
LCG元2 小时前
实战案例:服务器磁盘空间告急,如何快速定位和清理"大文件"
linux
以琦琦为中心3 小时前
很好!从 `fdisk -l` 输出可以看到您的磁盘确实是600GB,但只有29.5GB被分配给根分区 `/dev/sda3`。现在我来帮您扩展这个分区。
linux·ubuntu
wc_xue_fei_le3 小时前
11.11DNS主从服务器
linux·服务器·前端
胖咕噜的稞达鸭3 小时前
进程概念,冯诺依曼体系结构,系统调用,父子进程初解
https·vim·bash
用户31187945592183 小时前
申威SW64系统安装docker-ce-19.03.14.rpm详细教程(附安装包)
linux
white-persist3 小时前
二进制movl及CTF逆向GDB解析:Python(env)环境下dbg从原理到实战
linux·服务器·开发语言·python·网络安全·信息可视化·系统安全
Le_ee3 小时前
Rocky Linux 8 网络配置
linux·运维·服务器
CS_浮鱼4 小时前
【Linux】基础IO
linux·运维·chrome