oeasy教您玩轉(zhuǎn)vim - 38 - # 配合移動
快速刪除
回憶上節(jié)課內(nèi)容??
以前知道可以在插入狀態(tài)下使用del、退格進行刪除
現(xiàn)在知道了默認狀態(tài)下使用通過
x
刪除字符如
10x
刪除的字符存儲在
""
寄存器中可以用
:reg
查看寄存器狀態(tài)可以在
x
前面使用[count]
進行翻倍默認狀態(tài)可以使用
X
退格刪除的字符也在
""
寄存器中我們掌握了在 vi 中刪除字符的各種方法
后面還有啥呢???
刪除字符

我們發(fā)現(xiàn) dd 可以刪除一行
試一試?!??
刪除的內(nèi)容
刪除的東西放到哪里呢?
:reg

就放在默認寄存器
""
里面還可以加
[count]
進行翻倍5dd
可以刪除 5 行,刪除之后,仍然把被刪除的內(nèi)容放到了""
寄存器那這個 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
的結(jié)尾

練習
所以我們知道
dw
是從當前位置刪除到下一個word
的開頭(刪除包括中間的空格)d3w
是從當前位置刪除到下 3 個word
的開頭3dw
是從當前位置做3
次dw
3d2w
是把d2w
做3
次de
是從當前位置刪除到當前word
的結(jié)尾(不刪除空格)d4e
是從當前位置刪除到下4個word
的結(jié)尾(包括當前單詞)db
是刪除前面的word
d2b
是前面2
個 word以上是當前光標在詞頭的情況
如果當前光標在詞中?
光標在詞中
如果光標在詞中的話
w
是到下一個word
的開頭b
是到當前word
的開頭e
是到當前word
的結(jié)尾

移動到那里就刪到哪里!
b是保留當前光標字符往前刪的
這個還得注意
word
和WORD
的區(qū)別
大詞小詞

大小詞定義
就是
3個word
也是
1個WORD
word
包括空格和各種標點作為分隔符WORD
只有空格被認作分割符比如
text-indent
dW
就可以直接刪除這個,這個很方便,尤其標識符里面有很多下劃線的情況說出大天也沒有用,這個就得動手練!??
行頭行尾

行頭
^是到本行第一個非空字符
0是到本行第一個字符,不管是不是空格
行尾
$跳到本行最后一個字符,即使他是空格
g_是到本行最后一個非空字符
兩個按鍵要依次按下
如果忘了就要
:h
查詢一下刪除呢?
d^
就是刪除到本行第一個非空字符,當前字符保留d0
就是從當前位置刪除到本行第一個字符(不管他是否是空格),當前字符還是保留著2d^
就是將d^
執(zhí)行2
遍,其實和執(zhí)行一遍沒有區(qū)別,還是刪一行d2^
就是d
到2^
和d
到^
,其實一樣的,還是刪一行d$從光標刪除到行尾,包括光標所在的當前字符
d$還有一種做法D
刪到行尾
:h D

D本身就是d$
定位的方法還有行內(nèi)查找
行內(nèi)查找

通過fo直接就跳到了右邊的
o
字符dfo
就是從當前位置d
到fo
的位置fo
的位置就是從當前位置向前f
到的第1
個o
的位置光標當前字符也刪除
d2fo
就是從當前位置d
到2fo
的位置fo
的位置就是從當前位置向前f
到的第2
個o
?的位置2dfo
就是將dfo
執(zhí)行2
遍dfo
就是從當前位置d
到fo
的位置fo
的位置就是從當前位置向前f
到的第1
個o
的位置這兩個結(jié)果其實一樣

反向查找
反向查找的話是
F

dFo
是從當前位置刪除到Fo
的位置Fo
的位置是從當前位置反向查找F
第1
個o
的位置當前光標所在字符保留
dF2o
的位置是從當前位置刪除到F2o
的位置F2o
的位置是從當前位置反向查找F
第2
個o
的位置當前字符保留
2dFo
就是將dFo
執(zhí)行2
遍dFo
就是從當前位置d
到Fo
的位置Fo
的位置就是從當前位置反向查找F
到的第1
個o
的位置
配合重復

.可以重復上次操作
如上圖的df>
.就是再執(zhí)行df>一次
可以在
oeasy.java
里面練習一下??
行內(nèi)貼靠
除了
f
之外我們還有t
fe是把光標移動到
e
上面是跳轉(zhuǎn)到
te是把光標移動到
e
之前的字符上面是貼靠到

dt(
是指從當前位置刪除到t(
t(
是指貼靠到(
t
誰就是要貼靠到誰這個可以翻倍嗎?
貼靠翻倍
可以!
這個也可以通過
[count]
翻倍2to
till
第 2 個o

d2to 可以刪除到 紅色的l
d3to 可以刪除到 紫色的w
不但可以翻倍
而且可以重復.
距離看不清的時候就用.
跳躍和貼靠
和
f
相關(guān)的是跳躍向
前
跳躍是f向
后
跳躍是F和
t
相關(guān)的是貼靠向
前
貼靠是t向
后
貼靠是T和
小寫
相關(guān)的是向前
向前
跳躍是f向前
貼靠是t和
大寫
相關(guān)的是向后
向后
跳躍是F向后
貼靠是T
全文查找
全文查找的兩個命令是/和?
d/Code
如何執(zhí)行?摁下d,注意狀態(tài)欄
/然后狀態(tài)欄只顯示
/
輸入
Code
注意狀態(tài)欄文中查找
Code
并且高亮顯示摁下
回車
把從當前光標一直到高亮顯示的Code
的位置反向查找的話就是?
可以加翻倍
[count]
嗎?可以的
3d/Code
而且可以.重復查找刪除
動手試一下!??!??
文本區(qū)塊
使用 {、},讓光標前后移動段落
使用(、),讓光標前后移動句子
可以使用
[count]
翻倍:h }
來查看文檔


這些也是
motion
可以和d
配合比如
d{
、d3)
總結(jié)
我們大幅度地復習了整個
motion
:直接運動
hjkl
行運動
首行g(shù)g
末行G
第n行nG
單詞運動
wbe
w是到下一個
word
的開頭b是到當前
word
的開頭e是到當前
word
的結(jié)尾除了
word
之外還有WORD
行頭行尾
^是到本行第一個非空字符
0是到本行第一個字符,不管是不是空格
g_是到本行最后一個非空字符
$跳到本行最后一個字符,即使他是空格
行內(nèi)跳躍和貼靠
向
前
跳躍是f向
后
跳躍是F向
前
貼靠是t向
后
貼靠是T全文查找
查找的話就是/
反向查找的話就是?
文本區(qū)塊
{、}按段落移動
(、)按句子移動
這些
motion
都可以d配合使用,完成快速刪除的工作過程中還可以使用
[count]
進行翻倍刪除的內(nèi)容,放在
""
寄存器中可以配合重復.
那這個東西刪了
放在寄存器里
我想粘貼到別的地方
怎么辦呢???
下次再說 *
[Github地址] (https://github.com/overmind1980/vimtutorial)
[Gitee地址] (https://gitee.com/overmind1980/vimtutorial)
[藍橋?qū)嶒灅?邀請碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)