上次我們了解到可視模式
其實可視化對應三種子模式
字元可視模式 <kbd>v</kbd>
行可視模式 大寫<kbd>V</kbd>
塊可視模式<kbd>ctrl</kbd>+<kbd>v</kbd>
我們先來了解字元可視化模式
快捷鍵 <kbd>v</kbd>
可配合各種<code>motion</code>
<kbd>o</kbd>切換首尾
快速操作
選中了之後可以進行以下操作
<kbd>d</kbd>
<kbd>c</kbd>
<kbd>y</kbd>
可以用<kbd>"</kbd><kbd>a</kbd>使用指定寄存器
可以用<code>i</code>和<code>a</code>快速選擇範圍
w 小詞 W 大詞
()[] {} 各種括号
t 标簽,編寫網頁的時候很有用
s 句子 p 段落
b 小括号,這個編寫程式的時候很有用
B 大括号,編寫程式的時候很有用
" ' `引号内
以上是 <code>字元</code> 可視化模式
那麼 <code>行</code> 可視化模式是什麼意思呢?
我們上次從正常模式切換到字元可視化模式用的是小寫<kbd>v</kbd>
如果想切回來呢?
再摁下一下<kbd>v</kbd>
或者<kbd>esc</kbd>
或者<kbd>ctrl</kbd>+<kbd>c</kbd>
這次我們切換到行編輯模式,用大寫<kbd>V</kbd>
可以看到左下角提示,"--- 可視·<code>行</code> ---"
切換過來之後可以快速的使用<code>motion</code>控制結束行的位置
可以使用<code>33G</code>跳轉位置
也可以用<kbd>o</kbd>,切換選區首尾字元
選區選好之後可以做操作了

行可視化模式選擇的内容是<code>行</code>
<kbd>V</kbd><kbd>j</kbd><kbd>j</kbd>可以選中3行
<kbd>V</kbd> 選中目前行
<kbd>j</kbd> 加選下面一行
<kbd>j</kbd> 再加選一行
我們選擇好了很多行之後怎麼辦呢?
我們選好選取之後,就可以
這和字元可視化模式一樣的
可以使用
<kbd>D</kbd>
<kbd>C</kbd>
<kbd>Y</kbd>
對 <code>行</code> 可視化模式,大小寫沒什麼差別
不過對 <code>字元</code> 可視化模式,還是有差別的
用指令行模式
就像字元可視化模式一樣
比如我<kbd>:</kbd>
左下角會出現:'<,'>就是從選區開頭,到選區結尾
'< 選區開頭
'> 選區結尾
然後我們摁下<kbd>d</kbd>回車
就把選區範圍内都删除了
我們可以<code>:h '&lt;</code> 檢視相應手冊
<code>'&lt;</code> 這種形式很像标記啊
就像ma做标記、'a跳轉到标記那樣
能否看看'<是否也是一個标記
做好選區
<code>:marks &lt;&gt;</code>檢視标記
可以查找到選區的開始和結束标記mark
這剛好标記在了選取的開始結束位置
想要恢複選區應該怎麼辦?
做好了選區
進入了指令行模式
<kbd>ctrl</kbd>+<kbd>c</kbd> 丢失了選區
想要恢複
<code>'&lt;v'&gt;</code>
<code>'&lt;</code> 跳到原選區開頭
<code>v</code> 進入字元可視化模式
<code>'&gt;</code> 跳到原選區結尾
在選擇好文本範圍後,可以在選區範圍内控制查找替換
也就是說把<code>:'&lt;,'&gt;</code>作為<code>range</code>來使用
<code>:'&lt;,'&gt;s/shiyanlou/oeasy/g</code>
範圍内批量替換subtitute
<code>:'&lt;,'&gt;s/shiyanlou/oeasy/gc</code>
範圍内批量替換并需要确認confirm
<code>:'&lt;,'&gt;g/^.*drwxwr.*$/d</code>
範圍内有<code>drwxwr</code>的直接删除delete
可以用<kbd>J</kbd>把這好多行合并成<code>1</code>行
可以查詢幫助<code>:h v_J</code> 可視模式下的J的作用
除了行可視化之外,字元可視化也可以J将多行合成一行
簡單說就是把回車換行删除掉
這次我們了解到行可視模式
行可視模式 <kbd>V</kbd>
也可配合各種<code>motion</code>
選區的開頭和結尾是<code>mark标記</code>
開頭是 '<
結尾是 '>
可以在選區内進行替換和删除
<code>:'&lt;,'&gt;s/shiyanlou/oeasy/g</code> 範圍内批量替換
<code>:'&lt;,'&gt;s/shiyanlou/oeasy/gc</code> 範圍内批量替換待确認
<code>:'&lt;,'&gt;g/^.*drwxwr.*$/d</code> 範圍内有<code>drwxwr</code>的直接删除
選中了之後可以進行<kbd>d</kbd>、<kbd>c</kbd>、<kbd>y</kbd>等操作
可以合并多行
用<kbd>J</kbd>把這好多行合并成<code>1</code>行
這次是<code>行</code>可視化模式
那麼<code>塊</code>可視化模式又是什麼意思呢?🤔
下次再說 👋
[Github位址] (https://github.com/overmind1980/oeasyvim)
[Gitee位址] (https://gitee.com/overmind1980/oeasyvim)
[藍橋實驗樓 邀請碼FJWYIMGB] (https://www.lanqiao.cn/courses/2840)