show: step
version: 1.0
enable_checker: true
快速刪除
回憶上節(jié)課內(nèi)容????
- 以前知道可以在插入狀態(tài)下使用 <kbd>del</kbd>、<kbd>退格</kbd> 進行刪除
- 現(xiàn)在知道了默認狀態(tài)下使用通過
x
刪除字符- 可以在
x
前面使用[count]
進行翻倍 - 如
10x
- 刪除的字符存儲在
""
寄存器中 - 可以用
:reg
查看寄存器狀態(tài)
- 可以在
- 默認狀態(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
就是從光標位置到最開始都刪除掉了!?。?/li>
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ū)別
大詞小詞
- 大小詞定義
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^
執(zhí)行2
遍,其實和執(zhí)行一遍沒有區(qū)別,還是刪一行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>
- 定位的方法還有行內(nèi)查找
行內(nèi)查找
- 通過<kbd>f</kbd><kbd>o</kbd>直接就跳到了右邊的
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
- <kbd>f</kbd> <kbd>e</kbd> 是把光標移動到
e
上面- 是跳轉(zhuǎn)到
- <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
如何執(zhí)行?- 摁下 <kbd>d</kbd>,注意狀態(tài)欄
- <kbd>/</kbd>然后狀態(tài)欄只顯示
/
- 輸入
Code
注意狀態(tài)欄 - 文中查找
Code
并且高亮顯示 - 摁下
回車
把從當前光標一直到高亮顯示的Code
的位置
- 反向查找的話就是 <kbd>?</kbd>
- 可以加翻倍
[count]
嗎?- 可以的
3d/Code
- 可以的
- 而且可以<kbd>.</kbd>重復查找刪除
- 動手試一下!?。????
文本區(qū)塊
- 使用 {、},讓光標前后移動段落
- 使用(、),讓光標前后移動句子
- 可以使用
[count]
翻倍 :h }
來查看文檔
- 這些也是
motion
可以和d
配合 - 比如
d{
、d3)
總結(jié)
-
我們大幅度地復習了整個
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
的結(jié)尾 - 除了
word
之外還有WORD
- <kbd>w</kbd> 是到下一個
-
行頭行尾
- <kbd>^</kbd> 是到本行第一個非空字符
- <kbd>0</kbd> 是到本行第一個字符,不管是不是空格
- <kbd>g</kbd><kbd>_</kbd> 是到本行最后一個非空字符
- <kbd>$</kbd> 跳到本行最后一個字符,即使他是空格
-
行內(nèi)跳躍和貼靠
- 向
前
跳躍是<kbd>f</kbd> - 向
后
跳躍是<kbd>F</kbd> - 向
前
貼靠是<kbd>t</kbd> - 向
后
貼靠是<kbd>T</kbd>
- 向
-
全文查找
- 查找的話就是 <kbd>/</kbd>
- 反向查找的話就是 <kbd>?</kbd>
-
文本區(qū)塊
- <kbd>{</kbd>、<kbd>}</kbd> 按段落移動
- <kbd>(</kbd>、<kbd>)</kbd> 按句子移動
- 這些
motion
都可以 <kbd>d</kbd>配合使用,完成快速刪除的工作 - 過程中還可以使用
[count]
進行翻倍 - 刪除的內(nèi)容,放在
""
寄存器中 - 可以配合重復<kbd>.</kbd>
- 那這個東西刪了
- 放在寄存器里
- 我想粘貼到別的地方
- 怎么辦呢?????
- 下次再說 ????
[Github地址] (https://github.com/overmind1980/vimtutorial)
[Gitee地址] (https://gitee.com/overmind1980/vimtutorial)
[藍橋?qū)嶒灅?邀請碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)
本文摘自 :https://blog.51cto.com/u