Linux 系统编辑文本文件,主流方案分为交互式全屏编辑器 vi/vim、nano,还有非交互式命令行写入修改 sed,运维日常修改配置文件优先掌握 vim,临时简单编辑推荐 nano,脚本自动化批量修改则使用 sed,不同场景选择工具可以大幅提升操作效率,本文会介绍各类编辑器的启动方式、基础按键、保存退出、常用编辑操作,同时区分交互式编辑和命令流修改的差异,解决新手最容易卡住的保存退出、模式切换、乱码等问题。
一、vi/vim 编辑器(最通用,所有 Linux 默认自带)
vi 是基础版本,vim 是 vi 增强版,几乎所有发行版默认预装,特点是分模式操作,分为命令模式、插入模式、底行模式,新手最容易混淆模式,无法输入文字就是还停留在命令模式。
启动命令
vi 文件名
vim 文件名
如果文件不存在,保存之后会自动新建文件
三种核心模式
| 模式 | 说明 | 切换方式 |
|---|---|---|
| 命令模式 | 打开文件默认进入,用于移动光标、删除、复制,不能直接打字 | 按 Esc 回到该模式 |
| 插入模式 | 可以正常输入编辑文本 | 命令模式按 i a o 进入 |
| 底行模式 | 输入保存、退出、查找替换命令 | 命令模式输入:进入 |
高频按键操作(命令模式下)
- i:光标前插入
- a:光标后插入
- o:当前行下方新开一行插入
- x:删除光标单个字符
- dd:删除整行
- yy:复制整行
- p:粘贴
- / 关键词:向下查找关键词
- n:查找下一个匹配项
保存与退出(底行模式)
- :w 保存
- :q 退出
- :wq 保存并退出
- :q! 强制退出,不保存修改
- :wq! 强制保存退出(只读文件有权限时使用)
二、nano 编辑器(简单友好,新手推荐)
nano 属于轻量交互式编辑器,不需要模式切换,打开就可以直接输入,底部有快捷键提示,适合不熟悉 vim 的用户,Ubuntu Debian 默认自带,CentOS 如果没有需要安装。
启动命令
nano 文件名
常用快捷键(底部提示,^ 代表 Ctrl 键)
- Ctrl+O 保存写入
- Ctrl+X 退出
- Ctrl+W 查找关键词
- Ctrl+K 剪切整行
- Ctrl+U 粘贴
安装命令
CentOS/RHEL:yum install nano
Ubuntu/Debian:apt install nano
三、非交互式编辑 sed(适合脚本批量修改)
sed 不需要进入编辑器界面,直接在命令行完成替换、新增、删除,适合自动化运维批量修改配置,不会打开交互界面。
基础替换示例
sed -i 's/旧内容/新内容/g' 文件名
-i 代表直接修改原文件,不加 - i 只输出预览,不改动文件
g 代表全文全部匹配替换,不加 g 只替换每行第一个匹配
注意:sed 属于流式修改,复杂多行编辑可读性不如 vim,适合简单替换场景
四、其他补充工具
- emacs:功能强大的大型编辑器,插件丰富,学习成本高,开发人员使用较多
- echo/cat 重定向:新建简单文件,属于写入,不适合修改已有大文件
echo "test" > test.txt
五、编辑器选择建议
| 场景 | 推荐工具 |
|---|---|
| 服务器临时改配置、所有系统通用 | vim |
| 新手入门、简单短文件 | nano |
| shell 脚本自动批量替换 | sed |
| 代码开发、复杂项目 | vim / emacs |
六、常见问题
- 权限报错 E212 Can't open file for writing
- vim 打开中文乱码
- 误进入 vim 不知道怎么退出
- 修改系统配置文件之后不生效
文件是只读权限,或者当前普通用户没有写权限,需要 root 权限或者 chmod 修改文件权限
编码问题,可以启动时指定编码 vim +enc=utf-8 文件名,或者修改 vimrc 编码配置
按 Esc,输入 :q! 放弃修改强制退出
很多服务修改配置之后需要重启服务或者重载配置,不是保存文件就自动生效
【常见问题】
问题 1 linux 编辑文本文件默认自带编辑器是什么
回答 1 linux 绝大多数发行版默认自带 vi/vim,不需要额外安装,是服务器最通用的文本编辑工具,nano 很多精简系统默认没有预装。
问题 2 linux vim 怎么保存退出
回答 1 linux vim 需要先按 Esc 回到命令模式,输入:wq 回车,就可以保存并且退出,如果不想保存修改输入:q! 强制退出。
问题 3 linux nano 和 vim 哪个适合新手
回答 1 linux nano 没有模式切换,打开直接打字,对新手更友好,vim 是分模式操作,上手门槛更高,但是通用性更强。
问题 4 linux 能不能不用打开编辑器修改文件
回答 1 linux 可以使用 sed 命令非交互式修改文本文件,适合脚本自动化批量替换,不需要进入交互式编辑界面。
问题 5 linux 编辑文件提示权限不足怎么办
回答 1 linux 编辑文件权限不足,需要切换 root 用户,或者命令前面加 sudo,也可以使用 chmod 给当前用户增加文件写入权限。
【免责申明】
本文为 Linux 文本编辑基础教程,修改系统配置文件前建议备份原文件,错误修改配置可能导致服务异常,不同发行版编辑器预装情况略有差异,内容仅用于运维学习参考。
