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

vim --version

若提示“command not found”,则需安装。

2.2 安装 Vim(使用 dnf 包管理器)

openEuler 使用 dnf 作为默认包管理器。

# 更新系统软件源
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行

案例:打开一个测试文件并练习移动

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在光标前粘贴

案例代码演示

Line 1: Apple
Line 2: Banana
Line 3: Cherry
  • 将光标移到第2行,按 dd 删除该行;
  • 移到第1行,按 yy 复制;
  • 移到第3行,按 p 粘贴 → 结果为:
Line 1: Apple
Line 3: Cherry
Line 1: Apple

4.3 v 模式(可视模式)

  • v:进入字符级可视模式
  • V:进入行级可视模式
  • Ctrl+v:进入块级可视模式

用途:选中文本后可执行复制、删除、缩进等操作。

案例:批量注释 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)
.(点号)重复上一次修改操作

案例:连续插入相同内容

Name:
Age:
City:
  • 在第一行末尾按 A,输入 Alice,按 Esc
  • 移到第二行,按 . → 自动插入 Alice
  • 再按 u 撤销。

五、标签(Tag)与固定版式替换

5.1 标签(跳转标记)

  • ma:在当前位置设置标记 a(a-z)
  • `a:跳转到标记 a 的精确位置
  • 'a:跳转到标记 a 所在行的行首

案例:在长文件中标记重要位置快速返回。

5.2 固定版式替换(使用寄存器)

Vim 有多个寄存器(如 "ayy 将当前行复制到寄存器 a)。

"ayy    " 复制当前行到寄存器 a
"ap     " 从寄存器 a 粘贴

六、末行模式下编辑(以 : 开头)

6.1 查找

命令功能
/word向下查找 word
?word向上查找 word
n下一个匹配项
N上一个匹配项

案例:在 /etc/passwd 中查找 root

vim /etc/passwd
:/root<Enter>

6.2 替换

语法:

:[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

#include <stdio.h>
  int main() {
  printf("Hello");
  printf("World");
  }

在 Vim 中执行:

:%s/printf/puts/g

结果:

#include <stdio.h>
  int main() {
  puts("Hello");
  puts("World");
  }

6.3 文档保存与退出

命令功能
:w保存
:q退出(无修改时)
:wq:x保存并退出
:q!强制退出不保存
:w filename另存为 filename

七、多窗口功能

7.1 水平分屏

:sp filename    " 水平分割,打开 filename
:sp             " 水平分割当前文件
  • Ctrl+w + j/k:在窗口间上下切换

7.2 垂直分屏

:vsp filename   " 垂直分割
  • Ctrl+w + h/l:左右切换窗口

案例:同时编辑两个 C 文件

vim main.c
:vsp utils.c

此时可同时查看和编辑两个文件。


八、其他实用功能

8.1 语法高亮

确保 .vimrc 中启用:

syntax on

8.2 显示行号

:set number      " 显示行号
:set nonumber    " 关闭行号

8.3 自动缩进(对编程重要)

:set autoindent
:set cindent     " C语言专用缩进
:set tabstop=4
:set shiftwidth=4

九、实践:GCC 编程(C 语言)

9.1 创建并编辑 C 程序

vim hello.c

代码示例(带详细注释)

/* hello.c - 一个简单的 C 程序 */
#include <stdio.h>          // 包含标准输入输出头文件
  int main() {                // 主函数入口
  printf("Hello, openEuler 24.03!\n");  // 输出字符串
  return 0;               // 返回 0 表示程序正常结束
  }

9.2 编译与运行

gcc -o hello hello.c    # 编译
./hello                 # 运行

Vim 技巧:在 Vim 中直接编译(末行模式):

:!gcc -o %< %.c
  • % 表示当前文件名(如 hello.c)
  • %< 表示去掉扩展名(hello)

十、实践:Java 编程

10.1 编写 Java 类

vim HelloWorld.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 编译与运行

javac HelloWorld.java   # 编译生成 .class 文件
java HelloWorld         # 运行(注意:不带 .class)

注意:openEuler 需先安装 OpenJDK:

sudo dnf install -y java-17-openjdk-devel

十一、小结

类别关键知识点
安装dnf install vim-enhanced
模式命令、插入、末行模式切换
编辑光标移动、删除/复制/粘贴、撤销重做
高级可视模式、多窗口、标签、寄存器
编程支持语法高亮、自动缩进、外部编译
实践C/Java 程序编写、编译、调试一体化

Vim 不仅是编辑器,更是程序员的生产力工具。掌握其核心命令可极大提升在 openEuler 环境下的开发效率。


建议:初学者可运行 vimtutor 命令进行交互式学习(openEuler 中若未安装,可通过 sudo dnf install -y vim-common 获取)。

posted @ 2025-12-13 22:53  gccbuaa  阅读(34)  评论(0)    收藏  举报