惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
云风的 BLOG
云风的 BLOG
B
Blog
博客园 - Franky
I
InfoQ
A
About on SuperTechFans
博客园_首页
L
LangChain Blog
量子位
腾讯CDC
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
美团技术团队
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
雷峰网
雷峰网
MongoDB | Blog
MongoDB | Blog
Microsoft Azure Blog
Microsoft Azure Blog
月光博客
月光博客
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
G
Google Developers Blog
Last Week in AI
Last Week in AI

博客园 - AlfredZhao

Git 提交代码:从报错到 SSH 免密推送 GitHub 克隆他人私有仓库:从授权到下载 理解Oracle Property Graph:以账户转账示例完成图特性最小测试 APEX 无法分配 SH 用户?一个存储过程轻松解决 SH 中文化样例数据使用手册 Oracle 排除非业务表:一份能直接抄的“全量过滤”SQL 进程都杀了,为什么 `netstat` 还能看到端口? MAC 空间告急?Codex 的 156GB 缓存垃圾,这样清! 人工清理问题数据:先查准,再删除 TK(Trusted Knowledge)为何而生? 使用快捷键快速切换 Mac 外接显示器模式 客户环境 Nginx 配置:流式报表与超时排查要点 Security Central:数据库安全的统一控制与运营平台 Palantir 眼中的一次“订单可能延期”,如何成为实时决策的起点? 从一条订单消息到 Bronze、Silver、Gold:我的第一次 Kafka + Lakehouse 实验 UUID v4 与 v7:同样是唯一 ID,为什么数据库表现可能完全不同? 用 crontab 给 LLM 使用量装上“监控眼” DeepSeek 与 GPT API 价格调整:该关注什么? 查看 Oracle 数据库中的定时任务执行情况 Codex 专用用户登录后自动进入默认项目目录 Mac 小技巧:用方向键优雅处理超长网址 Oracle GDD 与 Raft:别把共识机制和数据主权混为一谈 在 Oracle APEX 中用 BGE_BASE 生成向量:从模型导入到历史数据更新 行业人+AI:真正有价值的四个关键要素 知识库文件解析失败:一次由 Domain Index 引发的定位记录 Unicode 码位数、UTF-8 字节数、中英文差异和 Oracle 长度别再混淆了 Skill 的使用:从路径到能力边界 切换 Embedding 模型时,千万别忽略历史向量维度 kbot 适配 GPT-5.6:一次参数兼容性排查 Git 打 Tag 上传 GitHub 遇到 SSH 超时,如何处理?
vi 删除指定范围的行,不用再反复按 dd
AlfredZhao · 2026-06-18 · via 博客园 - AlfredZhao

2026-06-18 17:14  AlfredZhao  阅读(39)  评论()    收藏  举报

目前各种强大的现代编辑工具可能已经让很多人忘了vi的用法,但笔者最近在配合调试客户环境的代码时,就遇到经常要直接在那黑乎乎的putty窗口下直接使用vi来操作,反复去删除指定多行代码的场景很是痛苦,加上远程网络时而还会不稳,连续的dd很不方便且容易误操作。所以就倒逼自己回来复习了下vi删除行的快捷操作。

在 vi 里删除多行内容时,很多人会下意识连续按 dd,或者先算清楚要删多少行,用 d数字d。其实删除指定范围的行,可以直接用行号范围完成,简单很多也不用去计算和定位光标。

01 | 删除指定行号范围

比如要删除第 345 行到第 376 行内容,不用一直按 dd,也不用自己计算一共多少行。

直接输入:

:345,376d

然后回车即可。

如果发现删除错了,按:

u

就可以回退刚刚的整个删除操作,然后继续指定正确的范围。

什么?你说怎么知道内容范围是多少行?这样设置就可以看到每行的行号了:

:set nu

02 | 快速定位到某一行

如果想快速定位到某一行,比如第 222 行,可以直接输入:

:222

回车后就会到指定行。

这个配合范围删除使用,会更方便。先定位,再确认当前行和目标行,最后执行删除命令。

03 | 记住几个实用指代

vi 里有几个非常实用的指代含义:

. 代表当前行。

$ 代表最后一行。

% 代表所有行。

例如,从当前行删除到文件末尾:

:.,$d

从第 22 行删除到文件末尾:

:22,$d

04 | 也可以往回删除

范围删除也可以从当前行往前删,比如从当前行删除到文件开头:

:.,1d

笔者测试的环境里,这种往回删除会出现提示:

Backwards range given, OK to swap (y/n)?

确认没错的话,输入 y 回车即可。

05 | 删除所有行

笔者之前习惯用:

d10000d

前提是确认 10000 大于文件行数,其实大于也没关系,数字搞更大,或者多执行几次。

但实际上,想删除所有行,可以直接使用 %

:%d

然后按 Enter 键即可删除所有行。

也可以写成:

:1,$d

效果一样,看个人习惯,或者看自己更容易记住哪个。

关注我,和AI一起成长~