在Linux中使用Vim编辑文本

诸神缄默不语-个人技术博文与视频目录

对Linux系统的整体命令行操作教程,请参考我撰写的另一篇博文:Linux命令行教程-CSDN博客

1. 什么是 Vim

Vim 是一个在终端窗口中运行的文本编辑器。它不需要图形界面,直接通过键盘操作就能高效编辑文本文件。大多数 Linux 发行版已经预装了 Vim,如果没有,可以通过系统的包管理器简单安装(例如 sudo apt install vimsudo yum install vim)。

2. 启动 Vim

打开终端,输入 vim 后面跟上文件名。如果文件已存在,Vim 会打开它;如果文件不存在,Vim 会在你第一次保存时创建它。

bash 复制代码
vim hello.txt

执行后,就进入了 Vim 的编辑界面。

vi / vim

在许多 Linux 系统中,输入 vi 也会打开 Vim:

bash 复制代码
vi hello.txt

这是因为 Vim 是 "Vi Improved" 的缩写,它完全兼容传统的 Vi 编辑器。系统通常将 vi 设置为一个指向 Vim 的链接或别名,所以你使用 vi filename 和使用 vim filename 的效果是一样的,都能进入我们教程中描述的 Vim 环境。

不过,有两点值得留意:

  1. 功能可能略有不同

    有些系统为了精简,当通过 vi 启动时,Vim 可能会运行在"兼容模式"下,部分进阶功能(如多级撤销、语法高亮)会受到限制。

    如果你希望确保使用的是 Vim 的完整功能,直接输入 vim 是最稳妥的做法。

  2. 极少数最小化环境

    在某些极度精简的 Linux 环境(如容器内部或嵌入式系统)中,vi 可能指向的是原版 Vi 或 BusyBox 提供的简化版,功能比 Vim 少很多。但这种情况在常规桌面和服务器系统中很少见。

3. Vim 的三种基本模式

Vim 存在不同的操作模式,这是它与普通记事本最根本的区别。刚开始使用时,理解模式是正确操作的关键。

1. 普通模式

打开 Vim 后首先进入的就是普通模式。在这个模式下,你不能直接输入文字 。键盘上的按键会被视为命令,用来移动光标、删除内容、复制粘贴等。无论在哪种模式下,按 Esc 键都会回到普通模式。

可以注意的是,Linux普通模式下光标在字符上(可视化的文本编辑器,光标一般在字符之间),所以delete键删除的就是当前字符,插入也是插入到这个位置(把后面的字符推后)。

2. 插入模式

只有在这个模式下,你才能像其他编辑器一样自由地输入和修改文字。从普通模式进入插入模式有多种方法,最常用的是按 i 键。

3. 命令行模式

这个模式用于执行保存、退出、搜索、跳转行号等操作。在普通模式下按 : 键,屏幕底部会出现一个冒号,等待你输入命令,按回车键执行。搜索时按 / 也会进入类似的模式。

模式之间的切换关系:

  • 启动 Vim → 普通模式
  • 普通模式 按 i → 插入模式
  • 插入模式 按 Esc → 普通模式
  • 普通模式 按 : → 命令行模式
  • 命令行模式 执行完命令自动返回普通模式,也可以按 Esc 手动返回

4. 移动光标

在普通模式下,可以用方向键移动光标,但 Vim 推荐使用以下按键,手可以不离开主键盘区。

  • h / Backspace ------ 光标向左移动一个字符
  • j ------ 光标向下移动一行
  • k ------ 光标向上移动一行
  • l ------ 光标向右移动一个字符

其他常用的移动操作(均在普通模式下):

  • w ------ 跳到下一个单词的开头
  • b ------ 跳到上一个单词的开头
  • 0(数字零)------ 跳到当前行的行首
  • $ ------ 跳到当前行的行尾
  • gg ------ 跳到文件的第一行
  • G ------ 跳到文件的最后一行
  • :数字 ------ 在命令行模式输入数字并回车,光标会跳到对应行。例如 :10 跳到第 10 行。

5. 编辑文本

1. 进入插入模式的方法

从普通模式使用以下按键进入插入模式,记住完成输入后一定要按 Esc 回到普通模式。

  • i ------ 在光标当前位置之前开始插入
  • I ------ 在当前行的行首开始插入
  • a ------ 在光标当前位置之后开始插入(append)
  • A ------ 在当前行的行尾开始插入
  • o ------ 在当前行的下方新开一行并进入插入模式
  • O ------ 在当前行的上方新开一行并进入插入模式

2. 删除文本

这里指的是普通模式下执行的删除操作。

在插入模式中直接用delete/backspace删,效果也是一样的。

  • x / Delete ------ 删除光标所在处的一个字符
  • X ------ 删除光标前一个字符
  • dw ------ 删除从光标位置到当前单词结尾的内容(包含单词后的空格)
  • dd ------ 删除光标所在的整行
  • d$ ------ 删除从光标到行尾的内容

3. 撤销与重做

  • u ------ 撤销上一步修改
  • Ctrl + r ------ 重做(恢复被撤销的操作)

4. 复制与粘贴

  • yy ------ 复制光标所在的整行
  • yiw ------ 复制光标当前所在的整个单词(yank inner word)
  • p ------ 在光标之后粘贴复制或删除的内容(小写 p)
  • P ------ 在光标之前粘贴(大写 P)

使用 dd 删除一行后,也可以用 p 粘贴出来,这相当于"剪切"。

(这里可以注意的是,有些终端程序本身提供了用 Ctrl + C / Ctrl + V 或者鼠标右键来进行复制粘贴的功能,但是vim本身是没有的)

6. 保存与退出

这些操作在命令行模式下完成。先按 Esc 确保回到普通模式,然后按 : 键,屏幕底部出现冒号,再输入以下命令并回车。

(冒号只输一次就行,不是让你输两次冒号的意思)

  • :w ------ 保存文件(write)
  • :q ------ 退出 Vim(quit)。如果文件有修改但未保存,会提示无法退出。
  • :wq:x ------ 保存并退出。
  • :q! ------ 强制退出,放弃本次所有修改。

7. 搜索文本

在普通模式下按 / 键,屏幕底部会出现 /,然后输入要查找的关键词,回车确认。光标会跳到第一个匹配的结果。

  • n ------ 跳到下一个匹配项
  • N ------ 跳到上一个匹配项

例如搜索 "hello":按 /hello 然后回车。

8. 基础操作流程示例

  1. 在终端输入 vim myfile.txt 打开或新建文件。
  2. 此时处于普通模式,按 i 进入插入模式。
  3. 输入一些文字。
  4. Esc 回到普通模式。
  5. 使用 hjkl 移动光标检查内容。
  6. 想删除一行,可以移动光标到该行,按 dd。如果反悔,按 u 撤销。
  7. 编辑完成后,按 : 进入命令行模式,输入 wq 保存并退出。

9. 常见问题

  • 查看当前模式 :屏幕左下角通常会有提示。插入模式会显示 -- INSERT --,普通模式下一般显示文件名或空白,命令行模式底部会出现 :/ 符号。
  • 误操作卡住 :连按几次 Esc 可以回到普通模式,然后重新操作。
  • 想放弃修改并退出 :使用 :q! 强制退出,不保存任何修改。

常用命令速查表

目的 按键 / 命令 说明
进入插入模式 i 在光标前开始输入
返回普通模式 Esc 任何情况下按此键
保存文件 :w 命令行模式下执行
退出 :q 无未保存修改时可用
保存并退出 :wq:x
强制退出 :q! 放弃修改
光标左移 h
光标下移 j
光标上移 k
光标右移 l
删除一个字符 x
删除整行 dd
复制整行 yy
粘贴 p 粘贴在光标之后
撤销 u
重做 Ctrl+r
搜索 /关键词 n 查看下一个匹配项

进一步学习

本教程只涵盖了最基础的操作,帮助你用 Vim 完成简单的文件编辑。Vim 自带一个非常实用的交互式教程,在终端中输入以下命令即可启动:

bash 复制代码
vimtutor

建议跟着教程动手操作一遍,能让你更快地熟悉这些操作并形成肌肉记忆。

相关推荐
AlfredZhao6 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户97183563346612 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪13 小时前
linux 拷贝文件或目录到指定的位置
linux
摇滚侠1 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush41 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5201 天前
Linux 11 动态监控指令top
linux
不会C语言的男孩1 天前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
古城小栈1 天前
Unix 与 Linux 异同小叙
linux·服务器·unix
凡人叶枫1 天前
Effective C++ 条款42:了解 typename 的双重意义
java·linux·服务器·c++
2601_961875241 天前
决战申论100题2026|最新|范文
linux·容器·centos·debian·ssh·fabric·vagrant