show: step
version: 1.0
enable_checker: true
快速删除
回忆上节课内容????
- 以前知道可以在插入状态下使用 <kbd>del</kbd>、<kbd>退格</kbd> 进行删除
- 现在知道了默认状态下使用通过
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行
- 这范围里都删了
- 思考一下
d8h
、d4l
分别是干什么? ????
按单词删
wbe
还记得是什么意思么?- 不记得的话,就
h w
- 不记得的话,就
- 如果光标在词头的话
w
是到下一个word
的开头b
是到上一个word
的开头e
是到当前word
的结尾
练习
- 所以我们知道
dw
是从当前位置删除到下一个word
的开头(删除包括中间的空格)d3w
是从当前位置删除到下 3 个word
的开头3dw
是从当前位置做3
次dw
3d2w
是把d2w
做3
次de
是从当前位置删除到当前word
的结尾(不删除空格)d4e
是从当前位置删除到下4个word
的结尾(包括当前单词)db
是删除前面的word
d2b
是前面2
个 word
- 以上是当前光标在词头的情况
- 如果当前光标在词中?
光标在词中
- 如果光标在词中的话
w
是到下一个word
的开头b
是到当前word
的开头e
是到当前word
的结尾
- 移动到那里就删到哪里!
- b是保留当前光标字符往前删的
- 这个还得注意
word
和WORD
的区别
大词小词
- 大小词定义
word
包括空格和各种标点作为分隔符WORD
只有空格被认作分割符- 比如
text-indent
- 就是
3个word
- 也是
1个WORD
dW
就可以直接删除这个,这个很方便,尤其标识符里面有很多下划线的情况
- 说出大天也没有用,这个就得动手练!????
行头行尾
-
行头
- <kbd>^</kbd> 是到本行第一个非空字符
- <kbd>0</kbd> 是到本行第一个字符,不管是不是空格
-
行尾
- <kbd>$</kbd> 跳到本行最后一个字符,即使他是空格
- <kbd>g</kbd><kbd>_</kbd> 是到本行最后一个非空字符
- 两个按键要依次按下
- 如果忘了就要
:h
查询一下
- 删除呢?
d^
就是删除到本行第一个非空字符,当前字符保留d0
就是从当前位置删除到本行第一个字符(不管他是否是空格),当前字符还是保留着2d^
就是将d^
执行2
遍,其实和执行一遍没有区别,还是删一行d2^
就是d
到2^
和d
到^
,其实一样的,还是删一行- <kbd>d</kbd> <kbd>$</kbd> 从光标删除到行尾,包括光标所在的当前字符
- <kbd>d</kbd> <kbd>$</kbd> 还有一种做法<kbd>D</kbd>
删到行尾
:h D
- <kbd>D</kbd> 本身就是 <kbd>d</kbd> <kbd>$</kbd>
- 定位的方法还有行内查找
行内查找
- 通过<kbd>f</kbd><kbd>o</kbd>直接就跳到了右边的
o
字符 dfo
就是从当前位置d
到fo
的位置fo
的位置就是从当前位置向前f
到的第1
个o
的位置- 光标当前字符也删除
d2fo
就是从当前位置d
到2fo
的位置fo
的位置就是从当前位置向前f
到的第2
个o
的位置
2dfo
就是将dfo
执行2
遍dfo
就是从当前位置d
到fo
的位置fo
的位置就是从当前位置向前f
到的第1
个o
的位置
- 这两个结果其实一样
反向查找
- 反向查找的话是
F
dFo
是从当前位置删除到Fo
的位置Fo
的位置是从当前位置反向查找F
第1
个o
的位置- 当前光标所在字符保留
dF2o
的位置是从当前位置删除到F2o
的位置F2o
的位置是从当前位置反向查找F
第2
个o
的位置- 当前字符保留
2dFo
就是将dFo
执行2
遍dFo
就是从当前位置d
到Fo
的位置Fo
的位置就是从当前位置反向查找F
到的第1
个o
的位置
配合重复
- .可以重复上次操作
- 如上图的df>
- .就是再执行df>一次
- 可以在
oeasy.java
里面练习一下????
行内贴靠
- 除了
f
之外我们还有t
- <kbd>f</kbd> <kbd>e</kbd> 是把光标移动到
e
上面- 是跳转到
- <kbd>t</kbd> <kbd>e</kbd> 是把光标移动到
e
之前的字符上面- 是贴靠到
dt(
是指从当前位置删除到t(
t(
是指贴靠到(
t
谁就是要贴靠到谁
- 这个可以翻倍吗?
贴靠翻倍
- 可以!
- 这个也可以通过
[count]
翻倍 - <kbd>2</kbd> <kbd>t</kbd><kbd>o</kbd>
till
第 2 个o
- d2to 可以删除到 红色的l
- d3to 可以删除到 紫色的w
- 不但可以翻倍
- 而且可以重复<kbd>.</kbd>
- 距离看不清的时候就用<kbd>.</kbd>
跳跃和贴靠
- 和
f
相关的是跳跃- 向
前
跳跃是<kbd>f</kbd> - 向
后
跳跃是<kbd>F</kbd>
- 向
- 和
t
相关的是贴靠- 向
前
贴靠是 <kbd>t</kbd> - 向
后
贴靠是 <kbd>T</kbd>
- 向
- 和
小写
相关的是向前
向前
跳跃是 <kbd>f</kbd>向前
贴靠是 <kbd>t</kbd>
- 和
大写
相关的是向后
向后
跳跃是 <kbd>F</kbd>向后
贴靠是 <kbd>T</kbd>
全文查找
- 全文查找的两个命令是 <kbd>/</kbd> 和 <kbd>?</kbd>
d/Code
如何执行?- 摁下 <kbd>d</kbd>,注意状态栏
- <kbd>/</kbd>然后状态栏只显示
/
- 输入
Code
注意状态栏 - 文中查找
Code
并且高亮显示 - 摁下
回车
把从当前光标一直到高亮显示的Code
的位置
- 反向查找的话就是 <kbd>?</kbd>
- 可以加翻倍
[count]
吗?- 可以的
3d/Code
- 可以的
- 而且可以<kbd>.</kbd>重复查找删除
- 动手试一下!!!????
文本区块
- 使用 {、},让光标前后移动段落
- 使用(、),让光标前后移动句子
- 可以使用
[count]
翻倍 :h }
来查看文档
- 这些也是
motion
可以和d
配合 - 比如
d{
、d3)
总结
-
我们大幅度地复习了整个
motion
: -
直接运动
- <kbd>h</kbd> <kbd>j</kbd> <kbd>k</kbd> <kbd>l</kbd>
-
行运动
- 首行<kbd>g</kbd> <kbd>g</kbd>
- 末行<kbd>G</kbd>
- 第n行<kbd>n</kbd> <kbd>G</kbd>
-
单词运动
wbe
- <kbd>w</kbd> 是到下一个
word
的开头 - <kbd>b</kbd> 是到当前
word
的开头 - <kbd>e</kbd> 是到当前
word
的结尾 - 除了
word
之外还有WORD
- <kbd>w</kbd> 是到下一个
-
行头行尾
- <kbd>^</kbd> 是到本行第一个非空字符
- <kbd>0</kbd> 是到本行第一个字符,不管是不是空格
- <kbd>g</kbd><kbd>_</kbd> 是到本行最后一个非空字符
- <kbd>$</kbd> 跳到本行最后一个字符,即使他是空格
-
行内跳跃和贴靠
- 向
前
跳跃是<kbd>f</kbd> - 向
后
跳跃是<kbd>F</kbd> - 向
前
贴靠是<kbd>t</kbd> - 向
后
贴靠是<kbd>T</kbd>
- 向
-
全文查找
- 查找的话就是 <kbd>/</kbd>
- 反向查找的话就是 <kbd>?</kbd>
-
文本区块
- <kbd>{</kbd>、<kbd>}</kbd> 按段落移动
- <kbd>(</kbd>、<kbd>)</kbd> 按句子移动
- 这些
motion
都可以 <kbd>d</kbd>配合使用,完成快速删除的工作 - 过程中还可以使用
[count]
进行翻倍 - 删除的内容,放在
""
寄存器中 - 可以配合重复<kbd>.</kbd>
- 那这个东西删了
- 放在寄存器里
- 我想粘贴到别的地方
- 怎么办呢?????
- 下次再说 ????
[Github地址] (https://github.com/overmind1980/vimtutorial)
[Gitee地址] (https://gitee.com/overmind1980/vimtutorial)
[蓝桥实验楼 邀请码FJWYIMGB] (https://www.lanqiao.cn/courses/2840)
本文摘自 :https://blog.51cto.com/u