编辑
2025-09-26
文档
00
请注意,本文编写于 31 天前,最后修改于 31 天前,其中某些信息可能已经过时。

目录

vi/vim 的使用指南

vi/vim 是 Linux/Unix 系统中最常用的文本编辑器,核心分为三种模式:命令模式(Command Mode)输入模式(Insert Mode)命令行模式(Command-Line Mode)。掌握这三种模式的切换与操作,是高效使用 vi/vim 的基础。

一、三种核心模式解析

1. 命令模式(默认模式)

用户启动 vi/vim 后,默认进入命令模式。此模式下,键盘输入会被识别为「命令」(而非文本),例如按 i 不会输入字符,而是切换到输入模式。

命令模式常用命令

命令功能描述
i切换到输入模式,从光标当前位置开始输入文本
a切换到输入模式,从光标下一个位置开始输入文本
o切换到输入模式,在当前行下方插入新行
O切换到输入模式,在当前行上方插入新行
x删除光标当前所在位置的字符
dd剪切光标所在的整行
yy复制光标所在的整行
p(小写)将剪贴板内容粘贴到光标下方
P(大写)将剪贴板内容粘贴到光标上方
u撤销上一次操作
Ctrl + r重做上一次被撤销的操作
:切换到命令行模式(在底部输入命令)

2. 输入模式(编辑模式)

在命令模式下按 i/a/o/O 等键,即可进入输入模式。此模式下可正常输入和编辑文本,左下角会显示 --INSERT-- 提示。

输入模式常用操作

  • 字符输入:直接按字母、数字、Shift 组合键等输入字符
  • 换行:按 ENTER
  • 删除:按 BACK SPACE(删除光标前字符)或 DEL(删除光标后字符)
  • 光标移动:按方向键、HOME(行首)、END(行尾)、Page Up/Page Down(翻页)
  • 模式切换:按 ESC 键退出输入模式,返回命令模式

3. 命令行模式(底线模式)

在命令模式下按 :(英文冒号),即可进入命令行模式。此模式下需在底部输入命令,按 ENTER 执行,按 ESC 可返回命令模式。

命令行模式常用命令

命令功能描述
:w保存当前文件(不退出)
:q退出 vi/vim(需先保存修改,否则报错)
:q!强制退出 vi/vim,不保存修改
:wq保存文件并退出 vi/vim(常用)
:w [filename]将当前内容另存为指定文件名(如 :w test.txt
:r [filename]读取指定文件内容,插入到光标所在行下方(如 :r data.txt
:set nu显示行号
:set nonu隐藏行号
:! [command]暂时退出 vi/vim,执行系统命令(如 :! ls 查看当前目录文件)

二、vi/vim 基础使用实例

以创建并编辑 runoob.txt 文件为例,演示完整流程:

  1. 进入命令模式
    在终端输入以下命令,启动 vim 并打开(或创建)runoob.txt

    bash
    vim runoob.txt

    此时进入命令模式,无任何输入提示。

  2. 切换到输入模式
    在命令模式下按 i 键,左下角会显示 --INSERT--,表示进入输入模式。此时可自由输入文本,例如:

    Hello, vi/vim! This is a test file.
  3. 返回命令模式
    输入完成后,按 ESC 键,--INSERT-- 消失,回到命令模式。

  4. 保存并退出
    在命令模式下按 : 进入命令行模式,输入 wq 并按 ENTER,即可保存文件并退出 vim。

    • 若无需保存,可输入 q! 强制退出。

三、进阶按键说明(命令模式)

命令模式是 vi/vim 的核心,除基础命令外,还有大量提升效率的操作,可分为「光标移动」「搜索替换」「删除复制粘贴」三类。

1. 光标移动(高效定位)

命令功能描述
h / ←光标向左移动 1 字符
j / ↓光标向下移动 1 字符
k / ↑光标向上移动 1 字符
l / →光标向右移动 1 字符
Ctrl + f屏幕向下滚动 1 页(等同于 Page Down
Ctrl + b屏幕向上滚动 1 页(等同于 Page Up
Ctrl + d屏幕向下滚动半页
Ctrl + u屏幕向上滚动半页
0(数字)/ Home光标移动到当前行行首
$ / End光标移动到当前行行尾
H光标移动到屏幕最上方一行的行首
M光标移动到屏幕中间一行的行首
L光标移动到屏幕最下方一行的行首
G光标移动到文件最后一行
nG光标移动到文件第 n 行(需先执行 :set nu 显示行号,如 20G 到第 20 行)
gg光标移动到文件第一行(等同于 1G
n<Enter>光标向下移动 n 行(如 5<Enter> 向下移动 5 行)
n<space>光标向右移动 n 字符(如 10<space> 向右移动 10 字符)

2. 搜索与替换(快速定位与修改)

命令功能描述
/word从光标位置向下搜索字符串 word(如 /vim 搜索 "vim")
?word从光标位置向上搜索字符串 word(如 ?vim 向上搜索 "vim")
n重复上一次搜索动作(向下继续搜索)
N反向重复上一次搜索动作(向上继续搜索)
:n1,n2s/word1/word2/g在第 n1 行到第 n2 行之间,将 word1 替换为 word2(如 :10,20s/old/new/g
:%s/word1/word2/g从第一行到最后一行,将 word1 替换为 word2% 代表所有行)
:%s/word1/word2/gc全文件替换,但每次替换前会提示确认(c 代表 confirm)

3. 删除、复制与粘贴(文本操作)

命令功能描述
x向后删除 1 字符(等同于 DEL 键)
X向前删除 1 字符(等同于 BACK SPACE 键)
nx向后删除 n 字符(如 5x 删除光标后 5 字符)
dd剪切光标所在整行
ndd剪切光标所在行及下方共 n 行(如 3dd 剪切 3 行)
d1G剪切光标所在行到第一行的所有内容
dG剪切光标所在行到最后一行的所有内容
d$剪切光标所在位置到行尾的内容
d0剪切光标所在位置到行首的内容
yy复制光标所在整行
nyy复制光标所在行及下方共 n 行(如 4yy 复制 4 行)
y1G复制光标所在行到第一行的所有内容
yG复制光标所在行到最后一行的所有内容
y$复制光标所在位置到行尾的内容
y0复制光标所在位置到行首的内容
J将光标所在行与下一行合并为一行
u撤销上一次操作(常用)
Ctrl + r重做上一次被撤销的操作(常用)
.(小数点)重复上一次操作(如删除后按 . 可再次删除,常用)

4. 命令模式切换到输入模式的特殊按键

除了基础的 i/a/o/O,还有以下切换方式:

命令功能描述
I从当前行第一个非空格字符开始输入(区别于 i 的「光标当前位置」)
A从当前行最后一个字符开始输入(区别于 a 的「光标下一个位置」)
r进入「取代模式」,仅取代光标所在的1个字符(按 ESC 退出)
R进入「持续取代模式」,持续取代光标所在字符,直到按 ESC 退出(左下角显示 --REPLACE--

四、常用技巧总结

  1. 数字前缀的妙用:vi/vim 中,数字可表示「重复次数」或「目标位置」,例如 3j(向下移动 3 行)、5dd(剪切 5 行)、10G(跳转到第 10 行)。
  2. 快速保存退出:命令模式下按 ZZ(大写),可直接保存并退出(等同于 :wq);按 ZQ(大写),可强制退出不保存(等同于 :q!)。
  3. 临时执行系统命令:命令行模式下输入 :! [命令],可临时执行系统命令(如 :! pwd 查看当前目录),执行后按 ENTER 返回 vi/vim。
  4. 行号辅助:编辑长文件时,先执行 :set nu 显示行号,定位更高效;完成后可执行 :set nonu 隐藏行号。

本文作者:hwy2580

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!