• 當前位置:首頁 > IT技術 > 移動平臺 > 正文

    oeasy教您玩轉vim - 38 - # 配合移動
    2021-09-05 08:54:47


    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

    hjkl

    • 如果前面是 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 的結尾

    e2

    練習

    • 所以我們知道
      • 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 的結尾

    e3

    • 移動到那里就刪到哪里!
    • b是保留當前光標字符往前刪的
    • 這個還得注意 wordWORD 的區別

    大詞小詞

    count

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

    行頭行尾

    WEB

    • 行頭

      • <kbd>^</kbd> 是到本行第一個非空字符
      • <kbd>0</kbd> 是到本行第一個字符,不管是不是空格
    • 行尾

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

    刪到行尾

    • :h D

    圖片描述

    • <kbd>D</kbd> 本身就是 <kbd>d</kbd> <kbd>$</kbd>
    • 定位的方法還有行內查找

    行內查找

    findo

    • 通過<kbd>f</kbd><kbd>o</kbd>直接就跳到了右邊的 o 字符
    • dfo 就是從當前位置 dfo 的位置
      • fo 的位置就是從當前位置向前 f 到的第 1o 的位置
      • 光標當前字符也刪除
    • d2fo 就是從當前位置 d2fo 的位置
      • fo 的位置就是從當前位置向前 f 到的第 2o 的位置
    • 2dfo 就是將 dfo 執行 2
      • dfo 就是從當前位置 dfo 的位置
      • fo 的位置就是從當前位置向前 f 到的第 1o 的位置
    • 這兩個結果其實一樣

    2fo

    反向查找

    • 反向查找的話是 F

    findnext

    • dFo 是從當前位置刪除到 Fo 的位置
      • Fo 的位置是從當前位置反向查找 F1o 的位置
      • 當前光標所在字符保留
    • dF2o 的位置是從當前位置刪除到 F2o 的位置
      • F2o 的位置是從當前位置反向查找 F2o 的位置
      • 當前字符保留
    • 2dFo 就是將 dFo 執行 2
      • dFo 就是從當前位置 dFo的位置
      • Fo 的位置就是從當前位置反向查找 F 到的第 1o 的位置

    配合重復

    圖片描述

    • .可以重復上次操作
    • 如上圖的df>
    • .就是再執行df>一次
    • 可以在oeasy.java里面練習一下????

    行內貼靠

    • 除了 f 之外我們還有 t
    • <kbd>f</kbd> <kbd>e</kbd> 是把光標移動到 e 上面
      • 是跳轉到
    • <kbd>t</kbd> <kbd>e</kbd> 是把光標移動到 e 之前的字符上面
      • 是貼靠到

    helpt

    • dt( 是指從當前位置刪除到 t(
      • t( 是指貼靠到 (
      • t誰就是要貼靠到誰
    • 這個可以翻倍嗎?

    貼靠翻倍

    • 可以!
    • 這個也可以通過 [count] 翻倍
    • <kbd>2</kbd> <kbd>t</kbd><kbd>o</kbd>
    • till 第 2 個 o

    tillgoon

    • 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>^</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

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码