Linux文本编辑器 ------ 语法详解与实战案例
一、Linux文本编辑器概述
Linux 提供多种文本编辑器,按交互方式可分为:
| 类型 | 代表编辑器 | 特点 |
|---|---|---|
| 行编辑器 | ed |
最古老,无屏幕交互,适合脚本自动化 |
| 全屏编辑器 | vi / vim |
终端标配,功能强大,学习曲线陡峭 |
| 图形编辑器 | gedit |
GNOME 默认,支持语法高亮、鼠标操作 |
| 扩展编辑器 | Emacs |
功能极其丰富(邮件、日历、调试等),可编程 |
| 简易编辑器 | nano |
新手友好,操作直观,适合快速编辑 |
✅ 查看系统默认编辑器:
bash
echo $EDITOR
# 若未设置,可临时设置:export EDITOR=vim
Linux文本编辑器主要分为两类:
- 命令行编辑器 :在终端中运行,无需图形界面,效率高,适合远程服务器管理。
ed:行编辑器,最古老的Unix编辑器,现在很少使用。vi/Vim:Visual Editor及其改进版(Vi IMproved),是Linux系统最经典、最强大的命令行编辑器,几乎所有Unix-like系统都预装。Nano:简单易用的命令行编辑器,对新手友好。
- 图形界面编辑器 :在桌面环境中运行,使用鼠标和菜单操作,直观易用。
gedit:GNOME桌面环境的默认文本编辑器。Emacs:功能极其强大的可扩展编辑器,本身几乎是一个操作系统。Kate、Sublime Text、VSCode等。
二、ed 编辑器(行编辑器)
2.1 简介
- 最早的 Unix 编辑器(1971),无图形界面,逐行操作。
- 适用于脚本中自动化编辑,不适合人工交互。
2.2 基本语法
bash
ed [文件名]
- 输入行号或范围 + 命令进行操作
w保存,q退出
✅ 案例:使用 ed 创建并编辑文件
bash
# 创建文件 example.txt
ed example.txt <<EOF
a
Hello from ed editor.
This is line 2.
This is line 3.
.
1,3p # 打印第1到3行
s/line/row/g # 替换所有 "line" 为 "row"
,p # 打印全部内容
w # 保存
q # 退出
EOF
# 查看结果
cat example.txt
📝 输出:
Hello from ed editor.
This is row 2.
This is row 3.
⚠️ 说明:
a:进入追加模式,.结束输入1,3p:打印1到3行s/old/new/g:全局替换w:写入文件q:退出
三、vi 和 Vim 编辑器(重点)
3.1 vi 简介
vi(Visual Editor)是 Unix 标准编辑器。vim(Vi IMproved)是其增强版,支持语法高亮、插件、多窗口等。
Vim是vi的增强版,是系统管理员和开发者的必备工具。
-
vi的工作模式
- 普通模式(Normal Mode) :启动Vim后的默认模式。在此模式下,按键不是输入文本,而是执行命令(如复制、粘贴、删除、移动光标等)。按
Esc键可从其他模式返回此模式。 - 插入模式(Insert Mode) :在此模式下才能输入和编辑文本。从普通模式按
i,a,o等键进入。 - 命令行模式(Command-Line Mode) :在普通模式下按
:键进入。用于执行保存、退出、查找替换等高级操作。 - 可视模式(Visual Mode) :在普通模式下按
v进入。用于选择文本块进行操作。

- 普通模式(Normal Mode) :启动Vim后的默认模式。在此模式下,按键不是输入文本,而是执行命令(如复制、粘贴、删除、移动光标等)。按
- CentOS Stream 9 默认安装
vim-minimal,建议安装完整版:
bash
sudo dnf install vim-enhanced
3.2 vi 的工作模式
| 模式 | 进入方式 | 功能 | 退出方式 |
|---|---|---|---|
| 命令模式 | 启动即进入 / Esc | 执行移动、删除、复制等命令 | 按 i/a/o 进入插入模式 |
| 插入模式 | i(当前位)、a(后)、o(下一行) |
输入文本 | 按 Esc 返回命令模式 |
| 末行模式 | 命令模式下按 : |
保存、退出、查找、设置等 | 执行命令后自动返回命令模式 |
✅ 模式切换图示:
[命令模式] -- i/a/o --> [插入模式] -- Esc --> [命令模式] -- : --> [末行模式]
3.3 vi 常用命令详解(命令模式下)
➤ 光标移动
| 命令 | 功能 |
|---|---|
h |
左移 |
j |
下移 |
k |
上移 |
l |
右移 |
w |
移到下一个单词开头 |
b |
移到上一个单词开头 |
0 |
行首 |
$ |
行尾 |
gg |
文件开头 |
G |
文件结尾 |
5G |
跳转到第5行 |
✅ 示例:快速导航
bash
# 在命令模式下:
gg # 跳到文件开头
10G # 跳到第10行
$ # 跳到行尾
w # 跳到下一个单词
➤ 文本编辑
| 命令 | 功能 |
|---|---|
x |
删除光标处字符 |
dd |
删除整行 |
5dd |
删除5行 |
yy |
复制当前行 |
5yy |
复制5行 |
p |
粘贴到光标后(下一行) |
P |
粘贴到光标前(上一行) |
u |
撤销 |
Ctrl+r |
重做 |
r+字母 |
替换光标处字符 |
cw |
删除单词并进入插入模式 |
✅ 示例:编辑操作
bash
# 命令模式下:
dd # 删除当前行
yy # 复制当前行
p # 粘贴到下一行
u # 撤销删除
Ctrl+r # 重做
➤ 查找与替换(末行模式)
| 命令 | 功能 |
|---|---|
/pattern |
向下查找 pattern |
?pattern |
向上查找 pattern |
n |
下一个匹配 |
N |
上一个匹配 |
:s/old/new |
替换当前行第一个 old |
:s/old/new/g |
替换当前行所有 old |
:%s/old/new/g |
替换全文所有 old |
:5,10s/old/new/g |
替换5-10行所有 old |
✅ 示例:批量替换
bash
# 末行模式下:
:%s/Linux/Unix/g # 全文替换 Linux 为 Unix
:1,5s/error/ERROR/g # 1-5行替换 error 为 ERROR
➤ 保存与退出(末行模式)
| 命令 | 功能 |
|---|---|
:w |
保存 |
:q |
退出(未修改时) |
:wq 或 ZZ |
保存并退出 |
:q! |
强制退出(不保存) |
:w! |
强制保存(如权限不足) |
:w newfile |
另存为 newfile |
✅ 示例:
bash
:wq # 保存退出
:q! # 放弃修改强制退出
其他实用命令:
shell
:set number # 显示行号 (:set nu)
:set nonumber # 隐藏行号 (:set nonu)
:set paste # 进入粘贴模式(避免自动缩进混乱),粘贴后:set nopaste
:r filename # 将另一个文件的内容读取并插入到当前光标位置
3.4 vi 与 Shell 交互
➤ 在 vi 中执行 Shell 命令(末行模式)
bash
:!命令
✅ 示例:
bash
:!ls -l # 列出当前目录
:!date >> % # 将当前日期追加到当前编辑文件
:r !whoami # 读取 whoami 命令输出并插入到当前光标处
➤ 从 Shell 启动 vi 并编辑命令输出
bash
vi <(command)
✅ 示例:
bash
vi <(ps aux) # 在 vi 中查看进程列表(只读)
3.5 文本格式转换
➤ DOS ↔ UNIX 换行符转换
- DOS/Windows:
\r\n - Unix/Linux:
\n
✅ 在 vi 中转换:
bash
# 查看文件格式
:set ff?
# 转换为 Unix 格式
:set ff=unix
:w
# 转换为 DOS 格式
:set ff=dos
:w
✅ 使用外部命令:
bash
# 安装 dos2unix 工具
sudo dnf install dos2unix
# 转换
dos2unix file.txt # DOS → Unix
unix2dos file.txt # Unix → DOS
vim 键盘图

四、Emacs 编辑器(简介)
4.1 简介
- 功能强大的可编程编辑器,支持邮件、日历、调试、终端等。
- 快捷键以
Ctrl和Alt(Meta)为主。 - 启动:
emacs filename(图形界面)或emacs -nw filename(终端)
4.2 基本操作(终端模式)
| 操作 | 快捷键 |
|---|---|
| 保存 | Ctrl+x Ctrl+s |
| 退出 | Ctrl+x Ctrl+c |
| 剪切行 | Ctrl+k |
| 粘贴 | Ctrl+y |
| 查找 | Ctrl+s |
| 执行Shell命令 | Alt+! |
✅ 安装与启动:
bash
sudo dnf install emacs
emacs -nw hello.txt # 终端模式编辑
📝 说明:Emacs 学习曲线较陡,适合深度用户。本书重点在 vi 和 nano。
五、gedit 编辑器(图形界面)
5.1 简介
- GNOME 桌面环境默认文本编辑器。
- 支持语法高亮、插件、多标签页、鼠标操作。
- 仅适用于有图形界面的系统。
5.2 使用方法
✅ 启动:
bash
gedit myfile.txt &
✅ 常用功能:
Ctrl+S:保存Ctrl+O:打开Ctrl+F:查找Ctrl+H:替换- 菜单 → View → Highlight Mode:选择语法高亮(如 Python、Shell)
⚠️ 注意:服务器通常无 GUI,不推荐依赖 gedit。
六、Nano 编辑器(重点)
6.1 Nano 简介及安装
- 轻量级、易用、适合新手。
- 默认已安装在大多数发行版,若无:
bash
sudo dnf install nano
6.2 启动与退出 Nano
启动:
bash
nano [文件名]
退出:
Ctrl+X:退出- 若有修改,会提示是否保存:
Y:保存N:不保存- 输入文件名后回车确认
6.3 Nano 基本操作
底部菜单显示常用快捷键(^ = Ctrl,M = Alt)
| 功能 | 快捷键 | 说明 |
|---|---|---|
| 保存 | Ctrl+O |
Write Out(写入) |
| 搜索 | Ctrl+W |
Where is... |
| 剪切行 | Ctrl+K |
Cut(可连续剪切多行) |
| 粘贴 | Ctrl+U |
Uncut(粘贴剪切板内容) |
| 复制(标记后) | Alt+6 |
Copy(需先标记) |
| 标记开始 | Ctrl+6 |
Set Mark |
| 到行首/行尾 | Ctrl+A/Ctrl+E |
|
| 翻页 | Ctrl+Y/Ctrl+V |
上一页/下一页 |
| 显示行号 | Ctrl+C |
显示当前行号和总行数 |
| 调用帮助 | Ctrl+G |
Get Help |
✅ 案例:使用 nano 编辑配置文件
bash
nano /tmp/test_nano.txt
在编辑器中操作:
text
Hello Nano Editor!
This is line 2.
# 按 Ctrl+K 剪切本行
# 按 Ctrl+U 粘贴
# 按 Ctrl+W 搜索 "Nano"
# 按 Ctrl+O 保存 → 回车确认文件名
# 按 Ctrl+X 退出
✅ 启用行号(临时):
bash
nano +5 /tmp/test_nano.txt # 打开并跳到第5行
✅ 永久启用行号(修改配置):
bash
echo "set linenumbers" >> ~/.nanorc
七、综合性实战案例
🎯 案例1:使用 vi 编写并调试 Shell 脚本
任务:编写一个备份脚本,使用 vi 编辑,执行 Shell 命令测试。
bash
# 1. 启动 vi 创建脚本
vi backup_script.sh
在 vi 中输入(插入模式):
bash
#!/bin/bash
# backup_script.sh - 自动备份指定目录
BACKUP_DIR="/home/user/backup"
SOURCE_DIR="/home/user/documents"
# 创建备份目录
mkdir -p "$BACKUP_DIR"
# 生成带时间戳的压缩包
tar -czf "$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).tar.gz" "$SOURCE_DIR"
echo "✅ 备份完成:$BACKUP_DIR"
保存退出:
bash
:wq
添加执行权限并测试:
bash
chmod +x backup_script.sh
./backup_script.sh
# 在 vi 中直接执行查看结果
vi backup_script.sh
# 在末行模式执行:
:!ls -l /home/user/backup/
🎯 案例2:使用 nano 快速修改系统配置并重启服务
任务:修改 SSH 端口,使用 nano 编辑,重启服务。
⚠️ 警告:请在测试环境操作,避免断开连接!
bash
# 1. 使用 nano 编辑 SSH 配置
sudo nano /etc/ssh/sshd_config
在 nano 中:
- 按
Ctrl+W搜索#Port 22 - 删除
#,修改为Port 2222 - 按
Ctrl+O保存 → 回车 - 按
Ctrl+X退出
重启服务:
bash
sudo systemctl restart sshd
sudo systemctl status sshd # 确认状态
💡 提示:修改端口后,需在防火墙放行:
bash
sudo firewall-cmd --add-port=2222/tcp --permanent
sudo firewall-cmd --reload
🎯 案例3:综合使用 vi 与 Shell ------ 批量重命名文件
任务:使用 vi 编辑生成重命名脚本。
bash
# 1. 生成待重命名文件列表
ls *.log > rename_list.txt
# 2. 用 vi 编辑 rename_list.txt,转换为 mv 命令
vi rename_list.txt
在 vi 命令模式下:
bash
:%s/.log$/.log.bak/ # 将 .log 替换为 .log.bak(目标名)
:%s/^/mv & / # 在行首添加 "mv "(& 代表匹配内容)
# 此时每行变为:mv file1.log file1.log.bak
保存为脚本:
bash
:w rename_script.sh
:q
添加权限并执行:
bash
chmod +x rename_script.sh
./rename_script.sh # 执行批量重命名
验证:
bash
ls *.log.bak # 应显示重命名后的文件
✅ 学习建议与最佳实践
- 新手推荐 nano:操作直观,减少学习压力。
- 进阶必学 vim:终端环境下无可替代,效率极高。
- ed 用于脚本:自动化修改配置文件时很有用。
- 避免直接编辑生产配置 :先备份(
cp file file.bak)。 - 善用查找替换 :
:%s/old/new/g是 vim 高效编辑的核心。 - 多练习模式切换:vim 的精髓在于"不碰鼠标,全键盘操作"。
📚 附录:编辑器快捷键速查表
vi/vim
| 功能 | 命令 |
|---|---|
| 保存退出 | :wq 或 ZZ |
| 强制退出 | :q! |
| 查找下一个 | n |
| 复制5行 | 5yy |
| 粘贴 | p |
| 撤销 | u |
| 执行Shell | :!ls |
nano
| 功能 | 快捷键 |
|---|---|
| 保存 | Ctrl+O |
| 退出 | Ctrl+X |
| 搜索 | Ctrl+W |
| 剪切行 | Ctrl+K |
| 粘贴 | Ctrl+U |
| 帮助 | Ctrl+G |
这份文档覆盖了 Linux 主流文本编辑器的核心语法、操作技巧、实战案例 ,特别强化了 vi/vim 和 nano 的深度使用,所有案例均含详细注释,可直接用于教学、自学或生产环境参考。