Linux 高手进阶:Vim 核心模式与分屏操作详解

哎呦 资料合集

链接:https://pan.quark.cn/s/770d9387db5f

在 Linux 的世界里,Vim 被誉为"编辑器之神",它不仅仅是一个文本编辑器,更是一种高效的编程哲学。无论是修改服务器上的配置文件,还是进行大型项目开发,熟练掌握 Vim 都能极大地提升我们的工作效率。今天的这篇博客,我们将从最基础的核心模式讲起,逐步深入到能够让效率倍增的分屏操作,并通过详细的案例与结果展示,助您彻底征服 Vim。

一、 Vim 的灵魂:理解三大核心模式

Vim 与我们常见的 Windows 记事本等编辑器最大的不同在于其独特的模式设计。理解并熟练切换这三种模式,是掌握 Vim 的第一步。

模式关系图:​启动 Vim​​ -> ​​[命令模式]​​ <-> ​​[编辑模式]​​ ​​启动 Vim​​ -> ​​[命令模式]​​ <-> ​​[末行模式]​

注意: 编辑模式和末行模式之间不能直接切换,必须通过命令模式作为"中转站"。

1. 命令模式 (Command Mode)

这是我们打开 Vim 后默认进入的模式。在此模式下,你敲击的任何按键都会被 Vim 解析为命令,而不是输入字符。例如,移动光标、删除文本、复制粘贴等操作都在此模式下完成。

  • 进入方式 :在 Shell 中输入 vim 文件名 后回车,即可打开文件并进入命令模式。
  • 核心特性:它是连接编辑模式和末行模式的桥梁。
2. 编辑模式 (Insert/Edit Mode)

顾名思义,这个模式就是用来进行文本内容输入的。

  • 切换方法 :在命令模式下,按下以下任意一个键即可进入编辑模式:
  • ​i​:在当前光标插入。
  • ​a​:在当前光标追加。
  • ​o​:在当前行的下一行新建一行并开始编辑。
  • ​I​:在当前行的行首插入。
  • ​A​:在当前行的行尾追加。
  • ​O​:在当前行的上一行新建一行并开始编辑。
  • ​s​:删除当前光标所在字符,并进入编辑模式。
  • ​S​:删除当前光标所在行,并进入编辑模式。
  • 返回命令模式 :在编辑模式下,按 Esc 键。

【代码案例】

  1. 在您的 Linux 终端中创建一个新文件并用 Vim 打开:

    vim hello.txt

  2. 运行结果 : 您会看到一个空白的 Vim 界面,光标在左上角闪烁,此时正处于命令模式

  3. 操作 : 按下 i 键。

  4. 运行结果 : 注意 Vim 窗口的左下角,会出现 -- INSERT ---- 插入 -- 的提示。这表示您已成功进入编辑模式,现在可以自由输入文本了。

    -- INSERT --

  5. 操作 : 输入 "Hello, Vim!",然后按 Esc 键。

  6. 运行结果 : 左下角的 -- INSERT -- 提示消失,您已返回命令模式

3. 末行模式 (Last-Line Mode)

此模式用于执行保存、退出、查找、替换等高级指令。

  • 进入方式 :在命令模式 下,按 : 键。
  • 常用命令
  • ​:w​:保存 (Write) 文件。
  • ​:q​:退出 (Quit) 编辑器。
  • ​:wq​:保存并退出。
  • ​:q!​:强制退出,不保存任何修改。
  • ​:x​:功能同 ​:wq​,在文件有修改时保存并退出。
  • 返回命令模式
  • 成功执行命令后,通常会自动返回命令模式。
  • 如果输入了命令但不想执行,可以按两次 ​Esc​ 键返回。

【代码案例】

  1. 接上例,我们已经输入了 "Hello, Vim!" 并回到了命令模式

  2. 操作 : 按下 : 键。

  3. 运行结果: 光标会立即跳转到 Vim 窗口的左下角,并显示一个冒号,等待您输入命令。

    :

  4. 操作 : 输入 wq 并回车。

    :wq

  5. 运行结果 : Vim 将会保存文件内容并退出,返回到您的 Shell 终端。您可以使用 cat hello.txt 命令查看文件内容,确认 "Hello, Vim!" 已被成功写入。

二、 效率倍增器:Vim 分屏操作详解

当需要同时查看或编辑多个文件,或者一个文件的不同部分时,Vim 强大的分屏功能就派上用场了。

1. 翻屏快捷键(快速浏览)

在深入分屏前,先了解几个在命令模式下快速浏览文件的快捷键,这在处理大文件时非常有用。

  • ​Ctrl + u​:向上翻半屏 (Up)。
  • ​Ctrl + d​:向下翻半屏 (Down)。
  • ​Ctrl + f​:向下翻一屏 (Forward)。
  • ​Ctrl + b​:向上翻一屏 (Backward)。
2. 水平分屏 (​​:sp​​)

将当前窗口水平分割为上下两个。

  • ​:sp​:将当前文件在下方新窗口中打开。
  • ​:sp 文件名​:在下方新窗口中打开指定文件。

【代码案例】

  1. 打开我们之前创建的 hello.txt 文件。

    vim hello.txt

  2. 操作 : 在命令模式下,输入 :sp 并回车。

  3. 运行结果 : 屏幕会被一条状态栏水平分割成上下两个窗口,两个窗口都显示 hello.txt 的内容。光标会停留在上方的窗口。

    +---------------------------------+
    | Hello, Vim! | <-- 光标在这里
    | ~ |
    | ~ |
    +=================================+
    | Hello, Vim! |
    | ~ |
    | ~ |
    +---------------------------------+
    :sp

3. 垂直分屏 (​​:vsp​​)

将当前窗口垂直分割为左右两个。

  • ​:vsp​:将当前文件在右侧新窗口中打开。
  • ​:vsp 文件名​:在右侧新窗口中打开指定文件。

【代码案例】

  1. 假设我们有一个 main.cpp 和一个 utils.h 文件。先用 Vim 打开 main.cpp

    vim main.cpp

  2. 操作 : 在命令模式下,输入 :vsp utils.h 并回车。

  3. 运行结果 : 屏幕被垂直分割,左侧是 main.cpp,右侧是 utils.h。这对于参照头文件编写实现代码的场景极为方便。

    +----------------------+----------------------+
    | // main.cpp | // utils.h |
    | #include "utils.h" | void helper(); |
    | | |
    | int main() { | |
    | helper(); | |
    | return 0; | |
    | } | |
    +======================+======================+
    :vsp utils.h

4. 窗口切换

在多个分屏窗口间移动光标。

  • ​Ctrl + w + w​:循环地在所有窗口间切换。
  • ​Ctrl + w + 方向键(h,j,k,l)​:切换到指定方向的窗口(例如 ​Ctrl+w+l​ 切换到右侧窗口)。

【代码案例】

  1. 接上例,当前光标在右侧的 utils.h 窗口。
  2. 操作 : 按下 Ctrl + w,然后迅速按下 h
  3. 运行结果 : 光标会立即从右侧的 utils.h 窗口移动到左侧的 main.cpp 窗口。使用 Ctrl+w+w 也能达到同样的效果(在只有两个窗口时)。
5. 窗口退出
  • ​:q​:关闭当前光标所在的窗口。
  • ​:wq​:保存并关闭当前光标所在的窗口。
  • ​:qa​​:qall​:关闭所有窗口。如果存在未保存的修改会失败。
  • ​:wqa​​:wqall​:保存所有窗口的修改并全部关闭。

【代码案例】

  1. 在左右分屏的状态下,光标位于左侧的 main.cpp 窗口。
  2. 操作 : 输入 :q 并回车。
  3. 运行结果 : 左侧的 main.cpp 窗口被关闭,整个 Vim 界面只剩下右侧的 utils.h 窗口。关闭最后一个窗口将会退出 Vim。
三、知识小结与实战演练

为了巩固所学,我们来完成一个常见的开发任务:从头文件中复制函数声明到源文件中

  1. 准备文件

    echo "void print_message();" > func.h
    echo -e "#include "func.h"\n\nint main() {\n\n return 0;\n}" > main.c

  2. 打开并分屏

    vim main.c
    :vsp func.h # 垂直分屏打开头文件

  • 结果 :左边是 ​main.c​,右边是 ​func.h​
  1. 切换并复制
  • ​Ctrl + w + l​ 切换到右边的 ​func.h​ 窗口。
  • 移动光标到 ​void print_message();​ 这一行。
  • 在命令模式下按 ​yy​ 复制整行。
  1. 切换并粘贴
  • ​Ctrl + w + h​ 切换回左边的 ​main.c​ 窗口。
  • 将光标移动到 ​main​ 函数下方,用于实现函数。
  • ​p​ 粘贴。
  1. 编辑并保存退出
  • ​main.c​ 中完成 ​print_message​ 函数的实现。
  • 输入 ​:wqa​ 保存所有文件并退出 Vim。

通过这个简单的流程,我们实践了分屏、窗口切换、跨文件复制粘贴以及全部保存退出,这正是 Vim 分屏操作在实际工作中的威力体现。

核心知识点回顾表

|------------|-------------------------------------------------------------------|--------------------------------|
| 知识点 | 核心内容 | 易混淆点/操作要点 |
| Vim 模式 | 命令模式(中枢)、编辑模式(输入)、末行模式(指令) | 模式间切换必须经过命令模式。 |
| 进入编辑模式 | ​​i​​​, ​​a​​​, ​​o​​​, ​​I​​​, ​​A​​​, ​​O​​ 等 | 小写字母在光标附近操作,大写字母在行首/尾操作。 |
| 末行模式命令 | ​​:w​​​ (保存), ​​:q​​​ (退出), ​​:wq​​​ (保存退出), ​​:q!​​ (强退) | ​​:q!​​ 会丢失未保存的修改,请谨慎使用。 |
| 水平分屏 | ​​:sp [文件名]​​,将屏幕上下分割。 | 适合查看同一文件的不同部分。 |
| 垂直分屏 | ​​:vsp [文件名]​​,将屏幕左右分割。 | 对比不同文件(如 .h 和 .c)的利器。 |
| 窗口切换 | ​​Ctrl + w + w​​​ (循环), ​​Ctrl + w + 方向键​​ (定向) | 方向键 ​​h,j,k,l​​ 分别对应左、下、上、右。 |
| 窗口退出 | ​​:q​​​ (关闭当前), ​​:wqa​​ (保存并关闭所有) | 注意区分关闭单个窗口和关闭所有窗口的命令。 |


相关推荐
星星在线39 分钟前
MusicFree:一个「All in One」的个人音乐服务器,让听歌回归简单
前端·后端
IT_陈寒2 小时前
Redis的SETNX并发问题让我加了三天班
前端·人工智能·后端
demo007x2 小时前
Docling 文档转换以及技术架构分析
前端·后端·程序员
京东云开发者3 小时前
京东市民服务又“上新”!这次是黑龙江“龙易办”
前端
袋鱼不重3 小时前
我的神奇同事,AI 用多了居然写了个 Open In Codex
前端·后端·ai编程
大树883 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
Fireworks4 小时前
深入vue3源码解读 -- 1、响应式的基础概念
前端
程序员黑豆4 小时前
JDK 下载安装与配置详细教程
java·前端·ai编程
hunterandroid4 小时前
文件存储:内部存储与外部存储
前端