天天看點

oeasy教您玩轉vim - 57 - # 行可視化可視化編輯

上次我們了解到可視模式

其實可視化對應三種子模式

字元可視模式 <kbd>v</kbd>

行可視模式 大寫<kbd>V</kbd>

塊可視模式<kbd>ctrl</kbd>+<kbd>v</kbd>

我們先來了解字元可視化模式

快捷鍵 <kbd>v</kbd>

可配合各種<code>motion</code>

&lt;kbd&gt;o&lt;/kbd&gt;切換首尾

快速操作

選中了之後可以進行以下操作

&lt;kbd&gt;d&lt;/kbd&gt;

&lt;kbd&gt;c&lt;/kbd&gt;

&lt;kbd&gt;y&lt;/kbd&gt;

可以用&lt;kbd&gt;"&lt;/kbd&gt;&lt;kbd&gt;a&lt;/kbd&gt;使用指定寄存器

可以用<code>i</code>和<code>a</code>快速選擇範圍

w 小詞 W 大詞

()[] {} 各種括号

t 标簽,編寫網頁的時候很有用

s 句子 p 段落

b 小括号,這個編寫程式的時候很有用

B 大括号,編寫程式的時候很有用

" ' `引号内

以上是 <code>字元</code> 可視化模式

那麼 <code>行</code> 可視化模式是什麼意思呢?

我們上次從正常模式切換到字元可視化模式用的是小寫&lt;kbd&gt;v&lt;/kbd&gt;

如果想切回來呢?

再摁下一下&lt;kbd&gt;v&lt;/kbd&gt;

或者&lt;kbd&gt;esc&lt;/kbd&gt;

或者&lt;kbd&gt;ctrl&lt;/kbd&gt;+&lt;kbd&gt;c&lt;/kbd&gt;

這次我們切換到行編輯模式,用大寫&lt;kbd&gt;V&lt;/kbd&gt;

可以看到左下角提示,"--- 可視·<code>行</code> ---"

切換過來之後可以快速的使用<code>motion</code>控制結束行的位置

可以使用<code>33G</code>跳轉位置 

也可以用&lt;kbd&gt;o&lt;/kbd&gt;,切換選區首尾字元

選區選好之後可以做操作了

oeasy教您玩轉vim - 57 - # 行可視化可視化編輯

行可視化模式選擇的内容是<code>行</code>

&lt;kbd&gt;V&lt;/kbd&gt;&lt;kbd&gt;j&lt;/kbd&gt;&lt;kbd&gt;j&lt;/kbd&gt;可以選中3行

&lt;kbd&gt;V&lt;/kbd&gt; 選中目前行

&lt;kbd&gt;j&lt;/kbd&gt; 加選下面一行

&lt;kbd&gt;j&lt;/kbd&gt; 再加選一行

我們選擇好了很多行之後怎麼辦呢?

我們選好選取之後,就可以

這和字元可視化模式一樣的

可以使用

&lt;kbd&gt;D&lt;/kbd&gt;

&lt;kbd&gt;C&lt;/kbd&gt;

&lt;kbd&gt;Y&lt;/kbd&gt;

對 <code>行</code> 可視化模式,大小寫沒什麼差別

不過對 <code>字元</code> 可視化模式,還是有差別的

用指令行模式

就像字元可視化模式一樣

比如我&lt;kbd&gt;:&lt;/kbd&gt;

左下角會出現:'&lt;,'&gt;就是從選區開頭,到選區結尾

'&lt; 選區開頭

'&gt; 選區結尾

然後我們摁下&lt;kbd&gt;d&lt;/kbd&gt;回車

就把選區範圍内都删除了

我們可以<code>:h '&amp;lt;</code> 檢視相應手冊

oeasy教您玩轉vim - 57 - # 行可視化可視化編輯

<code>'&amp;lt;</code> 這種形式很像标記啊

就像ma做标記、'a跳轉到标記那樣

能否看看'&lt;是否也是一個标記

做好選區

<code>:marks &amp;lt;&amp;gt;</code>檢視标記

可以查找到選區的開始和結束标記mark

oeasy教您玩轉vim - 57 - # 行可視化可視化編輯

這剛好标記在了選取的開始結束位置

想要恢複選區應該怎麼辦?

做好了選區

進入了指令行模式

&lt;kbd&gt;ctrl&lt;/kbd&gt;+&lt;kbd&gt;c&lt;/kbd&gt; 丢失了選區

想要恢複

<code>'&amp;lt;v'&amp;gt;</code>

<code>'&amp;lt;</code> 跳到原選區開頭

<code>v</code> 進入字元可視化模式

<code>'&amp;gt;</code> 跳到原選區結尾

在選擇好文本範圍後,可以在選區範圍内控制查找替換

也就是說把<code>:'&amp;lt;,'&amp;gt;</code>作為<code>range</code>來使用

<code>:'&amp;lt;,'&amp;gt;s/shiyanlou/oeasy/g</code>

範圍内批量替換subtitute

<code>:'&amp;lt;,'&amp;gt;s/shiyanlou/oeasy/gc</code>

範圍内批量替換并需要确認confirm

<code>:'&amp;lt;,'&amp;gt;g/^.*drwxwr.*$/d</code>

範圍内有<code>drwxwr</code>的直接删除delete

可以用&lt;kbd&gt;J&lt;/kbd&gt;把這好多行合并成<code>1</code>行

可以查詢幫助<code>:h v_J</code> 可視模式下的J的作用

除了行可視化之外,字元可視化也可以J将多行合成一行

簡單說就是把回車換行删除掉

oeasy教您玩轉vim - 57 - # 行可視化可視化編輯

這次我們了解到行可視模式

行可視模式 &lt;kbd&gt;V&lt;/kbd&gt;

也可配合各種<code>motion</code>

選區的開頭和結尾是<code>mark标記</code>

開頭是 '&lt;

結尾是 '&gt;

可以在選區内進行替換和删除

<code>:'&amp;lt;,'&amp;gt;s/shiyanlou/oeasy/g</code> 範圍内批量替換

<code>:'&amp;lt;,'&amp;gt;s/shiyanlou/oeasy/gc</code> 範圍内批量替換待确認

<code>:'&amp;lt;,'&amp;gt;g/^.*drwxwr.*$/d</code> 範圍内有<code>drwxwr</code>的直接删除

選中了之後可以進行&lt;kbd&gt;d&lt;/kbd&gt;、&lt;kbd&gt;c&lt;/kbd&gt;、&lt;kbd&gt;y&lt;/kbd&gt;等操作

可以合并多行

用&lt;kbd&gt;J&lt;/kbd&gt;把這好多行合并成<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)