如何快速掌握vi/vim删除技巧?

在vi编辑器中删除内容:按x删除单个字符;dw删除单词;dd删除整行;d$D删除至行尾,先按Esc确保处于普通模式,再执行命令。

vi(及其更强大的版本 vim)是 Unix/Linux 系统中功能强大且广泛使用的文本编辑器,对于初次接触的用户来说,其操作方式可能与常见的图形界面编辑器不同,尤其是在删除内容方面,本指南将详细解释在 vi 中删除文本的各种方法,帮助你高效编辑文件。

核心前提:理解模式

vi 操作的核心在于理解其模式,删除操作主要在 命令模式 (Command Mode)可视模式 (Visual Mode) 下进行。

  1. 进入命令模式: 这是 vi 启动后的默认模式(或按 Esc 键确保进入此模式),在此模式下,按键被解释为命令,而不是输入文本,你会在屏幕底部看到光标位置等信息,通常没有 -- INSERT ---- VISUAL -- 的提示。
  2. 插入模式 (Insert Mode): 在此模式下,你可以像在记事本中一样输入文本,按 i (在光标前插入)、a (在光标后插入)、o (在当前行下方新开一行并插入) 等键进入,要删除单个字符,可以使用 BackspaceDelete 键,但这仅限于删除你正在输入的字符,要执行更强大的删除命令,必须先按 Esc 键返回命令模式
  3. 可视模式 (Visual Mode): 此模式允许你高亮选择文本块,然后对选中的内容执行操作(如删除),按 v 进入字符可视模式,V (Shift+v) 进入行可视模式,Ctrl+v 进入块可视模式。

在命令模式下删除内容

这是最常用、最高效的删除方式,确保你处于命令模式(按 Esc)。

  1. 删除单个字符:

    • x: 删除光标所在位置的字符。
    • X (Shift+x): 删除光标前面的一个字符(相当于退格键)。
  2. 删除单词:

    • dw: 从光标当前位置开始,删除到当前单词的末尾(包括单词后的空格),如果光标在单词开头,则删除整个单词。
    • daw (delete a word): 删除光标所在的整个单词及其后面的一个空格(无论光标在单词的哪个位置),这是更精确删除整个单词的方式。
    • diw (delete inner word): 删除光标所在的整个单词,但不删除单词前后的空格,光标需要在单词内部。
    • db: 从光标当前位置开始,向后删除到当前单词的开头
  3. 删除行:

    • dd: 删除光标所在的整行,这是最常用的删除行命令。
    • D (Shift+d): 从光标当前位置开始,删除到行尾(相当于 d$)。
    • d0: 从光标当前位置开始,删除到行首(数字 0)。
    • d^: 从光标当前位置开始,删除到行首第一个非空白字符
    • dj: 删除当前行和下一行 (j 代表向下移动一行)。
    • dk: 删除当前行和上一行 (k 代表向上移动一行)。
    • d5j: 删除当前行及向下的 4 行(共 5 行)。5 可以替换为任意数字 N,表示删除从当前行开始的 N 行。
  4. 删除到特定字符:

    • dtX: 从光标当前位置开始,删除到本行内下一个出现的字符 X 之前(不包括 X 本身)。dt, 删除到下一个逗号前。
    • dfX: 从光标当前位置开始,删除到本行内下一个出现的字符 X(包括 X 本身)。df. 删除到下一个句点(包括句点)。
    • dTX / dFX:dtX/dfX 类似,但是是反向(向左)查找字符 XT 不包括 XF 包括 X
  5. 删除括号/引号内的内容:

    • di(di): 删除 括号内部(不包括括号本身),光标需在括号内。
    • da(da): 删除 括号以及其内部(包括括号本身),光标需在括号内或括号上。
    • di[ / di] / di{ / di} / di' / di" / di< / dit (for XML/HTML tags): 同理,适用于 [], , , , <>, HTML/XML 标签等,将 替换为对应的开始符号即可。
    • da[ / da] / da{ / da} / da' / da" / da< / dat: 同理,删除符号及其内部内容。

在可视模式下删除内容

  1. v (字符可视)、V (行可视) 或 Ctrl+v (块可视) 进入可视模式。
  2. 使用方向键 (h, j, k, l) 或其它移动命令(如 w, b, , 0, G)来高亮选择你想要删除的文本区域。
  3. dx 删除选中的高亮文本,删除后会自动回到命令模式。

重要补充与技巧

  • 撤销 (u): 在命令模式下,按 u 可以撤销上一次的操作(包括删除),这是救命稻草!连续按 u 可以撤销更早的操作。
  • 重做 (Ctrl+r): 如果撤销错了,按 Ctrl+r 可以重做被撤销的操作。
  • 删除与剪切: 在 vi 中,d 命令(以及 x, dd 等)不仅仅是删除,它实际上是将内容剪切到了未命名寄存器中,这意味着你删除的内容可以被粘贴 (pP) 出来!
  • 粘贴 (p/P):
    • p: 在光标之后粘贴最后一次删除(剪切)的内容。
    • P (Shift+p): 在光标之前粘贴最后一次删除(剪切)的内容。
    • dd 删除一行后,移动光标到另一行,按 p 可以将被删除的行粘贴到当前行下方。
  • 删除到缓冲区/寄存器: 高级用户可以在 d 命令前指定一个命名寄存器来保存删除的内容("a5dd 将删除的 5 行保存到寄存器 a 中,之后用 "ap 粘贴寄存器 a 的内容)。
  • 数字前缀: 几乎所有删除命令前面都可以加一个数字 N,表示执行该命令 N 次。
    • 5x: 删除光标处及后面 4 个字符(共 5 个)。
    • 3dw: 删除从光标处开始的 3 个单词。
    • 4dd: 删除从当前行开始的 4 行。
  • 命令: 在命令模式下按 (点) 会重复执行上一次的修改命令(包括删除操作),非常高效。

总结与建议

在 vi 中删除内容的关键在于:

  1. 确认模式: 执行删除前务必按 Esc 确保处于命令模式(或可视模式)。
  2. 选择合适的命令: 根据你想删除的范围(字符、单词、行、特定区域、括号内等)选择最精确的命令(x, dw, dd, daw, di(, dt. 等)。
  3. 善用数字和范围: 使用数字前缀 (5dd) 和移动命令 (d$, dG) 可以高效删除大块内容。
  4. 理解删除即剪切: 删除的内容通常可以粘贴 (p/P) 回来。
  5. 大胆撤销: 误删时立即按 u 撤销。

掌握这些删除命令是熟练使用 vi 的基础,开始时可能会觉得需要记忆很多按键,但随着练习,它们会变得非常自然和高效,建议在非关键文件上多加练习,体验不同命令的效果。u 是你的安全网!

引用说明:

  • 本指南基于标准的 vi 和 Vim 编辑器的核心功能编写,参考了 Unix/Linux 系统内置的 vi/vim 手册页 (man vi, man vim)。
  • 命令描述符合 POSIX 标准以及 Bram Moolenaar 的 Vim 文档精神。
  • 文本对象操作(如 daw, di()的概念在 Vim 中得到了更完善的扩展,但在大多数现代 vi 实现(如 nvi, elvis)或兼容模式下也基本可用,核心命令 (x, dd, dw) 在所有 vi 变体中一致。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6748.html

(0)
酷番叔酷番叔
上一篇 2025年7月8日 23:32
下一篇 2025年7月9日 00:07

相关推荐

  • 3ds Max渲染元素深度解析&高效工作流秘籍

    3ds Max渲染元素命令详解:深度解析分层渲染技术(如Z深度、法线、对象ID等),指导如何高效提取各类通道(AOVs),优化后期流程,实现精准控制与快速迭代,显著提升渲染工作流效率。

    2025年6月17日
    1200
  • 修改网络设置前必知哪些风险?

    修改网络设置需极其谨慎,错误操作可能导致网络中断,务必确保操作正确或寻求专业指导。

    2025年7月13日
    900
  • 命令进入磁盘会丢失数据?

    基本概念磁盘(Disk):物理存储设备(如硬盘、U盘),分区(Partition):磁盘的逻辑划分(如C盘、D盘),命令进入磁盘:通过命令行工具访问磁盘或分区,进行查看、导航或管理,Windows系统操作步骤方法1:通过命令提示符(CMD)打开命令提示符:按 Win + R 输入 cmd,回车,查看磁盘列表:w……

    2025年7月2日
    1300
  • 为何需要命令提示符?

    命令提示符是 Windows 系统提供的文本界面工具(通常称为 cmd.exe 或命令窗口),用户通过输入特定指令来执行系统任务、管理文件或运行程序,是直接与操作系统交互的一种方式。

    2025年6月19日
    1500
  • 电脑卡死如何强制关机?

    shutdown命令用于安全关闭、重启或休眠计算机,常用参数:/s关机、/r重启、/t设置倒计时(秒)、/c添加提示信息,shutdown /s /t 60表示60秒后关机。

    2025年7月12日
    1000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信