快速删除

回忆上节课内容

  • 以前知道可以在插入状态下使用 del、退格 进行删除
  • 现在知道了默认状态下使用通过 x 删除字符

    • 可以在 x 前面使用[count]进行翻倍

      • 10x
      • 删除的字符存储在 "" 寄存器中
      • 可以用 :reg 查看寄存器状态
  • 默认状态可以使用 X 退格

    • 删除的字符也在 "" 寄存器中
  • 我们掌握了在 vi 中删除字符的各种方法
  • 后面还有啥呢?

删除字符

  • 我们发现 dd 可以删除一行
  • 试一试?!

删除的内容

  • 删除的东西放到哪里呢?:reg

  • 就放在默认寄存器""里面
  • 还可以加 [count] 进行翻倍
  • 5dd 可以删除 5 行,删除之后,仍然把被删除的内容放到了 "" 寄存器
  • 那这个 d{motion} 是什么意思呢?

运动帮助

  • 我们可以查询 motion 的文档呀!!!
  • h motion
  • motion 就是光标运动
  • 比如我们 G 就直接到文档最后一行

    • dG 就是从光标当前位置删除到最后一行,太爽了!
  • gg 是到最开始的一行

    • dgg 就是从光标位置到最开始都删除掉了!!!
  • ggdG 就是从头删到尾
  • 8G 就是到第8行

    • d8G 就是从光标位置到第8行都删除
    • 如果总共只有4行,怎么办?
    • 如果总共4行,8G就是道最后一行
    • 所以,此时d8G就是什么,你懂的?
  • 试一试

上下左右

  • 光标运动的方式是 hjkl
  • 这些都是 motion

  • 如果前面是 d
  • 比如 dj

    • d 代表删除
    • j 移动到下一行
    • dj 代表从当前光标行删除到下一行
    • 总共删除两行
  • 比如 dl

    • 删除当前光标字符
    • 也就是 x
  • 比如 dh

    • 删除当前光标前面的字符
    • 退格
    • 也就是 X

翻倍因素

  • 如果 d8j

    • d 就是删除
    • 8j 从当前光标位置到往下的8
    • d8j 所到之处都删了
  • 同样的 d7k
  • d 是删除
  • 7k 是往上7行
  • 连同当前行总共8行
  • 这范围里都删了
  • 思考一下

    • d8hd4l 分别是干什么?

按单词删

  • wbe 还记得是什么意思么?

    • 不记得的话,就 h w
  • 如果光标在词头的话

    • w 是到下一个 word 的开头
    • b 是到上一个 word 的开头
    • e 是到当前 word 的结尾

练习

  • 所以我们知道

    • dw 是从当前位置删除到下一个 word 的开头(删除包括中间的空格)
    • d3w 是从当前位置删除到下 3 个 word 的开头
    • 3dw 是从当前位置做 3dw
    • 3d2w 是把 d2w3
    • de 是从当前位置删除到当前 word 的结尾(不删除空格)
    • d4e 是从当前位置删除到下4个 word 的结尾(包括当前单词)
    • db 是删除前面的 word
    • d2b 是前面 2 个 word
  • 以上是当前光标在词头的情况
  • 如果当前光标在词中?

光标在词中

  • 如果光标在词中的话

    • w 是到下一个 word 的开头
    • b 是到当前 word 的开头
    • e 是到当前 word 的结尾

  • 移动到那里就删到哪里!
  • b是保留当前光标字符往前删的
  • 这个还得注意 wordWORD 的区别

大词小词

  • 大小词定义

    • word包括空格和各种标点作为分隔符
    • WORD只有空格被认作分割符
    • 比如text-indent

      • 就是 3个word
      • 也是 1个WORD
    • dW 就可以直接删除这个,这个很方便,尤其标识符里面有很多下划线的情况
  • 说出大天也没有用,这个就得动手练!

行头行尾

  • 行头

    • ^ 是到本行第一个非空字符
    • 0 是到本行第一个字符,不管是不是空格
  • 行尾

    • $ 跳到本行最后一个字符,即使他是空格
    • g_ 是到本行最后一个非空字符
    • 两个按键要依次按下
    • 如果忘了就要 :h 查询一下
  • 删除呢?

    • d^ 就是删除到本行第一个非空字符,当前字符保留
    • d0 就是从当前位置删除到本行第一个字符(不管他是否是空格),当前字符还是保留着
    • 2d^ 就是将 d^ 执行 2 遍,其实和执行一遍没有区别,还是删一行
    • d2^ 就是 d2^d^,其实一样的,还是删一行
    • d $ 从光标删除到行尾,包括光标所在的当前字符
  • d $ 还有一种做法D

删到行尾

  • :h D

  • D 本身就是 d $
  • 定位的方法还有行内查找

行内查找

  • 通过fo直接就跳到了右边的 o 字符
  • dfo 就是从当前位置 dfo 的位置

    • fo 的位置就是从当前位置向前 f 到的第 1o 的位置
    • 光标当前字符也删除
  • d2fo 就是从当前位置 d2fo 的位置

    • fo 的位置就是从当前位置向前 f 到的第 2o 的位置
  • 2dfo 就是将 dfo 执行 2

    • dfo 就是从当前位置 dfo 的位置
    • fo 的位置就是从当前位置向前 f 到的第 1o 的位置
  • 这两个结果其实一样

反向查找

  • 反向查找的话是 F

  • dFo 是从当前位置删除到 Fo 的位置

    • Fo 的位置是从当前位置反向查找 F1o 的位置
    • 当前光标所在字符保留
  • dF2o 的位置是从当前位置删除到 F2o 的位置

    • F2o 的位置是从当前位置反向查找 F2o 的位置
    • 当前字符保留
  • 2dFo 就是将 dFo 执行 2

    • dFo 就是从当前位置 dFo的位置
    • Fo 的位置就是从当前位置反向查找 F 到的第 1o 的位置

配合重复

  • .可以重复上次操作
  • 如上图的df>
  • .就是再执行df>一次
  • 可以在oeasy.java里面练习一下

行内贴靠

  • 除了 f 之外我们还有 t
  • f e 是把光标移动到 e 上面

    • 是跳转到
  • t e 是把光标移动到 e 之前的字符上面

    • 是贴靠到

  • dt( 是指从当前位置删除到 t(

    • t( 是指贴靠到 (
    • t谁就是要贴靠到谁
  • 这个可以翻倍吗?

贴靠翻倍

  • 可以!
  • 这个也可以通过 [count] 翻倍
  • 2 to
  • till 第 2 个 o

  • d2to 可以删除到 红色的l
  • d3to 可以删除到 紫色的w
  • 不但可以翻倍
  • 而且可以重复.
  • 距离看不清的时候就用.

跳跃和贴靠

  • f 相关的是跳跃

    • 跳跃是f
    • 跳跃是F
  • t 相关的是贴靠

    • 贴靠是 t
    • 贴靠是 T
  • 小写 相关的是 向前

    • 向前 跳跃是 f
    • 向前 贴靠是 t
  • 大写 相关的是 向后

    • 向后 跳跃是 F
    • 向后 贴靠是 T

全文查找

  • 全文查找的两个命令是 / 和 ?
  • d/Code 如何执行?

    • 摁下 d,注意状态栏
    • /然后状态栏只显示 /
    • 输入 Code 注意状态栏
    • 文中查找 Code 并且高亮显示
    • 摁下 回车 把从当前光标一直到高亮显示的 Code 的位置
  • 反向查找的话就是 ?
  • 可以加翻倍 [count] 吗?

    • 可以的 3d/Code
  • 而且可以.重复查找删除
  • 动手试一下!!!

文本区块

  • 使用 {、},让光标前后移动段落
  • 使用(、),让光标前后移动句子
  • 可以使用 [count] 翻倍
  • :h } 来查看文档

  • 这些也是 motion 可以和 d 配合
  • 比如 d{d3)

总结

  • 我们大幅度地复习了整个 motion
  • 直接运动

    • h j k l
  • 行运动

    • 首行g g
    • 末行G
    • 第n行n G
  • 单词运动 wbe

    • w 是到下一个 word 的开头
    • b 是到当前 word 的开头
    • e 是到当前 word 的结尾
    • 除了 word 之外还有 WORD
  • 行头行尾

    • ^ 是到本行第一个非空字符
    • 0 是到本行第一个字符,不管是不是空格
    • g_ 是到本行最后一个非空字符
    • $ 跳到本行最后一个字符,即使他是空格
  • 行内跳跃和贴靠

    • 跳跃是f
    • 跳跃是F
    • 贴靠是t
    • 贴靠是T
  • 全文查找

    • 查找的话就是 /
    • 反向查找的话就是 ?
  • 文本区块

    • {、} 按段落移动
    • (、) 按句子移动
  • 这些 motion 都可以 d配合使用,完成快速删除的工作
  • 过程中还可以使用 [count] 进行翻倍
  • 删除的内容,放在 "" 寄存器中
  • 可以配合重复.
  • 那这个东西删了
  • 放在寄存器里
  • 我想粘贴到别的地方
  • 怎么办呢?
  • 下次再说

[Github地址] (https://github.com/overmind1980/vimtutorial)

[Gitee地址] (https://gitee.com/overmind1980/vimtutorial)

[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)

oeasy教您玩转vim - 38 - # 配合移动的更多相关文章

  1. oeasy教您玩转vim - 56 - # 字符可视化模式

    ​ 可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...

  2. oeasy教您玩转vim - 57 - # 行可视化

    ​ 可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...

  3. oeasy教您玩转vim - 53 - # 批量替换

    查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...

  4. oeasy教您玩转linux010203显示logo

    我们来回顾一下 上一部分我们都讲了什么?

  5. oeasy 教您玩转linux010101查看内核uname

    linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...

  6. oeasy教您玩转linux010202软件包管理apt

    顾一下 上一部分我们都讲了什么?

  7. oeasy教您玩转linux010201持续输出yes

    我们来回顾一下 上一部分我们都讲了什么?

  8. oeasy教您玩转linux010108到底哪个which

    到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?

  9. oeasy教您玩转python - 006 - # hello world

    ​ Hello World! 回忆上次内容 python3 的程序是一个 5.3M 的可执行文件 python3 里面全都是 cpu 指令 可以执行的那种指令 我们可以把指令对应的汇编找到 objdu ...

  10. oeasy教您玩转linux-010110内容回顾

    我们来回顾一下 我们都讲了什么?

随机推荐

  1. MyBatis抛出BindingException异常可能是你忘了配置资源拷贝

    最近博主在搭建Mybatis项目时遇到了一问题,在一切配置妥当后,开始运行测试代码,但是此时控制台无情的抛出了异常: 开始寻找问题根源 咦?难道是我哪里写错,我的第一反应是我的xml配置文件哪里写错了 ...

  2. mysql 5.6 inner join and 慢优化

    慢示例: SELECT o.id FROM o_schoolnotice o INNER JOIN o_schoolnotice_parent p ON o.id = p.noticeid AND p ...

  3. golang http client 长连接vs短连接基准测试

    package main import ( "io/ioutil" "net/http" "strings" "testing&q ...

  4. 莫烦tensorflow学习记录 (6)卷积神经网络 CNN (Convolutional Neural Network)

    卷积 和 神经网络 莫烦大佬的原文章https://mofanpy.com/tutorials/machine-learning/tensorflow/intro-CNN/ 我的理解就是千层饼,鸡蛋烧 ...

  5. C# WinForm控件及其子控件转成图片(支持带滚动条的长截图)

    概述(Overview) 参考了网上的分析,感觉都不太理想:1.一个控件内如果包含多个子控件时没有考虑顺序问题:2.超出控件可显示区域时不能长截图,有滚动条会多余截取了滚动条.这个随笔旨在解决这个问题 ...

  6. centos7.x开机启动流程centos6.x开机启动流程

    centos6.x开机启动流程 开机加电bios自检 MBR引导将启动权交给硬盘 硬盘 0 柱面0磁道 1扇区512字节,其中 前466字节为引导 后 64字节分区表 2字节为分区结束标志 加载gru ...

  7. 15种pod的状态

    15种pod的状态 调度失败 常见错误状态(Unschedulable) pod被创建后进入调度阶段,k8s调度器依据pod声明的资源请求量和调度规则,为pod挑选一个适合运行的节点.当集群节点不满足 ...

  8. Github 如何查看自己的 star 和 fork

    最近在 github 上看到偶尔有几个项目被 fork,心里也是挺开心的,但是查看项目的 fork 和 star,网上没有一个具体的教程,都是一个模板各种抄,本文就详细介绍如何查看. 查看 fork ...

  9. c# Redis缓存的使用和helper类;

    使用背景: 项目中用户频繁访问数据库会导致程序的卡顿,甚至堵塞.使用缓存可以有效的降低用户访问数据库的频次,有效的减少并发的压力.保护后端真实的服务器. 对于开发人员需要方便调用,所以本文提供了hel ...

  10. 从零开始的常用MySQL语句练习大全

    先说一些废话 很多时候深入学习固然很重要,但是想要写下一篇给新手都能看得懂看的很香,并且老鸟可以查漏补缺的的练习博客,还是挺有难度, 所以今天尝试写一些关于MySQL的语句练习大全,供想要从零开始练习 ...