当前位置: 首页 > article >正文

【Vim Masterclass 笔记03】S03L10 + S03L11:Vim 中的文本删除操作以及 Vim 思维习惯的培养(含 DIY 拓展知识点)

文章目录

  • Section 3:Vim Essentials(Vim 核心知识)
    • S03L10 Vim 核心浏览命令同步练习点评课
    • S03L11 Deleting Text and "Thinking in Vim" 文本的删除及 Vim 思维习惯的培养
      • 1 删除单个字符
      • 2 删除一个单词
        • 2.1 推广1:D + HJKL
        • 2.2 推广2:D + 0$
        • 2.3 推广3:大写的 D
      • 3 删除一整行
        • 3.1 推广1:删除 3 行
        • 3.2 推广2:[count]operation[count]{motion}
      • 4 点操作符 .
      • 5 保存文件相关操作
        • 5.1 编辑过程中报错文件
        • 5.2 保存并退出文件
        • 5.3 退出文件且不保存变更
      • 6 感叹号键 ! 的用法
        • 6.1 用法1:强制执行
        • 6.2 用法2:切换状态
        • 6.3 用法3:执行某个命令行命令
      • 7 小结

【写在前面】
都说“温故而知新”,用在这篇笔记上真是太贴切了。第一遍做笔记的时候还检查过一遍,但这次再以专栏形式发出来、隔了一段时间再看当时的笔记,就会发现很多细小的问题。笔记、文章、代码、项目,生活中的很多人和事,大抵如此。我们要做的不是毕其功于一役,而是“先完成,再完美”。这篇笔记的知识点非常重要,重点在于培养 Vim 专属的思维习惯,这也是我为什么把同步练习环节安排到下一篇的原因。

Section 3:Vim Essentials(Vim 核心知识)

(接上篇笔记)

S03L10 Vim 核心浏览命令同步练习点评课

没有需要特别注意的补充知识点,都是基础操作,多练多熟悉即可。


S03L11 Deleting Text and “Thinking in Vim” 文本的删除及 Vim 思维习惯的培养

1 删除单个字符

删除当前光标所在的单个字符:X

删除当前光标所在字符的前一个字符:Shift + X

2 删除一个单词

DW:删除一个单词 1

Vim 基本形式:operation{motion}操作{移动} )——

  • 这里的 操作D,表示 “删除操作”;
  • 移动W,这里表示 一个单词的移动
2.1 推广1:D + HJKL

此外,由于浏览内容用的 HJKL 命令也是一个 motion,因此,DW 还可以写成 D + n × L,即若干个 L 键,直到该单词被删除。

再联系 X 的用法:

  • 小写 X 相当于 DL,删除光标当前位置的字符;
  • 大写 X 则相当于 DH,删除紧挨光标前的那个字符。

那么,DJDH 呢?由于 J 的移动量是从上一行到下一行(如下图所示),因此 DJ 是否只会删除图中选中的部分?

图 11-1 J 键产生的光标位移效果

【图 11-1 J 键产生的光标位移效果】

答案是否定的—— DJ 删除的是光标所在的 一整行,外加光标下面的那 一整行,如图 11-2 所示:

图 11-2 按下 dj 后的实际效果:删除了两行,而不是单独的 J 选中的部分

【图 11-2 按下 dj 后的实际效果:删除了两行,而不是单独的 J 选中的部分】

因此基本形式中的 motion 还不能简单理解为 位移量,而是要看当时 motion 的真实含义:J 表示将光标从 当前行向下 移动 一行,因此删除的是两行,而非单个 J 键扫过的部分。

同理,DK 的效果即为 删除当前行以及上一行

2.2 推广2:D + 0$

有了上面的铺垫,D0D$ 的行为就更好理解了,二者分别删除当前光标到该行起始、以及该行结束的内容:

# 0. Before operation
Here is another line of text.
           ^ current cursor position
# 1. after pressing d0
ther line of text.
^ current cursor position
# 2. after pressing d$ (no content)
Here is ano
          ^ current cursor position

注意:执行 d$ 后,原光标所在的字符 也将被同时删除

2.3 推广3:大写的 D

Vim 中,大写的 D,即 Shift + D,等效于 D$,即删除当前光标及其后面所有的内容(在同一行上)

可见,Vim 中要达到同一个目的,通常有很多操作方案,根据个人喜好选择即可。自己熟悉的操作才更容易记牢。

3 删除一整行

按键:DD(均为小写)

3.1 推广1:删除 3 行

按键:3DD

由此出现了 Vim 的另一个基本形式:[count]operation{motion}[数量]操作{移动})——

5DW

  • 5:重复操作的次数
  • DW:待重复命令(删除单个单词)

其实 DW 只是 1DW 省略了重复次数 1 之后的特殊形式。

3.2 推广2:[count]operation[count]{motion}

回忆 L08 中介绍的核心浏览操作,{motion} 前还可以跟一个数量:[count]{motion},因此结合第二个 Vim 基本形式,得到第三种推广形式:[count]operation[count]{motion}

注:这里的中括号 [] 表示非必填项,{} 则为必填项,什么都不加的也是必填项。

再看一个例子加深印象:

  • 3W:重复 W 移动 3 次。
  • D3W:删除 3W 移动(一遍)。即删除 3 个单词。
  • 2D3W:删除 3W 移动,共执行两遍。即删除 6 个单词。

4 点操作符 .

表示快速重复上一次操作。类似 MS Word 中的 Ctrl + Y

5 保存文件相关操作

5.1 编辑过程中报错文件

操作::w + Enter

执行完毕后仍在 Vim 常规模式下。

图 11-3 在不退出 Vim 的情况下保存文件的操作

【图 11-3 在不退出 Vim 的情况下保存文件的操作】

5.2 保存并退出文件

操作::wq + Enter

5.3 退出文件且不保存变更

操作::q! + Enter

6 感叹号键 ! 的用法

6.1 用法1:强制执行

例如,退出但不保存::q + ! + Enter

此时文件有变更,只是不保存、直接退出。

如果此时省略叹号,变成 :q + Enter,则 Vim 会再次确认是否真的想退出,并给出提示信息(如图所示):

图 11-4 有变更但未强制退出时,Vim 会中断操作并给出中文提示信息

【图 11-4 有变更但未强制退出时,Vim 会中断操作并给出中文提示信息】

图 11-5 有变更但未强制退出时,Vim 会中断操作并给出英文提示信息

【图 11-5 有变更但未强制退出时,Vim 会中断操作并给出英文提示信息】

上面两张截图,第一张是 Windows 下安装的 v9.1Vim;第二张为 Windows Subsystem for LinuxWSL)下 Ubuntu 系统自带的 v8.1Vim。二者效果一致,都会中断操作。

6.2 用法2:切换状态

如配置状态栏的信息显示与否时,可以使用 :set ruler + ! 来切换 :set ruler:set noruler 两个状态。

6.3 用法3:执行某个命令行命令

(后面详述,本节略)

7 小结

  • Vim 的三个基本形态:
基本形态示例
operation{motion}DW
[count]operation{motion}3DW
[count]operation[count]{motion}2D3W
  • 感叹号的三个用法:
感叹号用法示例
强制退出:q!
状态切换(命令模式下):set ruler!
执行命令(命令模式下):!ls(查看当前目录的文件列表)2

  1. 准确讲,应该是从 当前光标位置 开始,将按下小写 W 键经过的内容都删掉。 ↩︎

  2. 来自 ChatGPT,本节未涉及。 ↩︎


http://www.kler.cn/a/460466.html

相关文章:

  • net core介绍
  • 十二、Vue 路由
  • springboot和vue项目前后端交互
  • UnityRenderStreaming使用记录(三)
  • SpringCloud源码分析-Lettue Redis
  • 批量读取pdf发票中二维码的信息
  • CSS系列(46)-- Color Functions详解
  • 珞珈一号夜光遥感数据地理配准,栅格数据地理配准
  • 每日一题 367. 有效的完全平方数
  • 记忆旅游系统|Java|SSM|VUE| 前后端分离
  • vscode改颜色
  • sqlite3 python如何查表结构
  • Android通知监听权限NotificationListener
  • Cesium中实现三维立体的行政区划贴图效果
  • 多个线程处理不同的数据,等线程都完成后再进行下一步操作
  • 百度热力图数据获取,原理,处理及论文应用
  • 【记录】vue 添加全局 dialog 弹框
  • .net core 的正则表达式
  • 数据挖掘笔记 | 插值 | 拉格朗日插值 | 龙格现象 | 埃尔米特插值 | 分段三次埃尔米特插值
  • Appium2.0:发生了哪些重大变化?
  • Linux umami网站统计工具自定义API开发
  • 科技云报到:洞见2025年科技潮流,技术大融合开启“智算时代”
  • 计算机网络——网络安全_计算机网络安全
  • 【Java 新特性】常用函数式接口
  • npm istall 卡住的结解决方法
  • React之从0开始(2)