方法1:使用dd命令(最快捷)
- 打开文件:
vi 文件名
- 进入命令模式:
按Esc
确保处于普通模式(非插入模式)。
输入:%!dd
并回车(原理:调用系统dd命令覆盖内容)。 - 保存退出:
输入:wq
保存并退出。
优点:无需逐行删除,直接清空。
方法2:删除所有行(纯vi操作)
- 打开文件后,按
Esc
进入命令模式。 - 输入
:1,$d
并回车(含义:删除第1行到最后一行)。
或使用更简短的命令:.,$d
(从当前行删到末尾)。 - 保存退出:
输入:wq
。
注意:若文件较大,此方法可能稍慢。
方法3:替换为空(正则表达式法)
- 命令模式下输入:
:%s/.*//g
(含义:用空内容替换所有行)。
- 保存退出:
:wq
。
适用场景:需清空内容但保留文件格式(如换行符)。
方法4:外部命令重定向(无需进入vi)
直接在终端执行:
: > 文件名
或
echo -n > 文件名
原理:通过重定向符号 >
覆盖文件为空。
优势:无需打开编辑器,适合脚本操作。
注意事项
- 权限问题:若文件为只读,清空前需用
chmod
添加写权限。 - 误操作恢复:清空后未保存可输入
:q!
强制退出不保存;已保存则无法恢复,建议提前备份。 - 大文件处理:方法1(dd)和方法4(重定向)效率最高。
方法 | 适用场景 | 命令示例 |
---|---|---|
dd命令 | 快速清空(vi内操作) | :%!dd |
删除所有行 | 精确控制删除范围 | :1,$d |
正则替换 | 保留文件结构(如换行符) | :%s/.*//g |
外部重定向 | 终端直接操作(无需vi) | : > 文件名 |
重要提示:操作前务必确认文件路径和名称,避免误删其他文件,对于系统关键文件,建议提前备份。
引用说明基于vi/vim官方文档及Linux核心工具(如dd、重定向)的标准操作指南,参考资源包括:
- Vim官方手册(
vimtutor
命令) - GNU Coreutils文档(dd命令)
- Linux man pages(文件重定向部分)
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/9296.html