嗨!歡迎回到上班族的 vim 生存手冊。好!我們繼續 vim 的主題,上個章節提到不能用 Ctrl + C 複製了,現在變成離開 Insert Mode,到底要怎麼複製?
先別說這個了,你知道用鍵盤也能選字嗎?先來討論這個。
請先回到 Normal Mode,按下 v 會進入 Visual Mode,用前一章節提到的方向鍵(或是 h, j, k, l)移動文字光標,會發現文字被選取起來了。
離開這個模式一樣是 ESC 或是 Ctrl + C (其實 Ctrl + [ 也行)。 在前一章也提到 vim 的指令有分大小寫,讀者可以嘗試 V ,會注意到文字光標會一次選擇一整行。
選取後按下 y 就可以複製囉 (y 是 yank 的意思),用 p 就可以貼上內容。另外,yy 可以直接複製一整行。
v: 進入 Visual Mode,一次選一個字V: 進入 Visual Mode,一次選一行y:複製yy:複製一整行,或是用 Y
p:在目前位置貼上P:在目前位置前面貼上不過讀者切換到其他的編輯器或是程式,應該會發現貼上的內容不是 vim 所複製的內容,vim 複製的內容只局限於 vim 自身(或是套用了 vim 環境的外掛,會只限於該編輯器),要怎麼讓 vim 複製後所有環境都能存取呢?
vscode 的外掛最簡單,直接進入設定開啟 Vim: Use System Clipboard 選項即可。
用 ideavim 則和 vim 本身設定方式類似,都是需要在設定檔調整。
請編輯這個檔案:
$ vim ~/.vimrc
如果不存在,請建立他:
$ touch ~/.vimrc
請加入以下的設定 (偷吃步是用右鍵 -> 貼上 😋):
set clipboard=unnamed,unnamedplus
儲存離開後,重新開啟 vim。
設定同 vim 本身,只是設定檔不一樣,請調整這個檔案(不存在則請建立):
$ vim ~/.ideavimrc
加入與 vim 相同的設定即可。一樣重開後,就能直接 yank 到系統的剪貼簿,p 貼上系統的剪貼簿內容囉。
為什麼是將 clipboard 設定成 unnamed 和 unnamedplus?上一章節提到 vim 有自己的暫存器(Register),讀者可以視為 vim 自身的剪貼簿。然而 vim 不只有一個,是有「很多個」暫存器。
在這之中,有連結到系統相關的暫存器,分別是:
* : 連結到系統的 Primary 剪貼簿。(應該只有 Linux 系統有),在 Linux 之中,在 Terminal 裡頭選擇文字之後會自動複製,就是進到這個剪貼簿。
+ : 連結到系統的 Clipboard 剪貼簿,就是大家熟悉的系統剪貼簿。
+ 號可以這樣理解:Ctrl plus C基本上在 macOS 和 Windows 上,* 和 + 都是連結到系統的 Clipboard 剪貼簿,所以沒差。
設定檔裡頭的設定值:
* 暫存器+ 暫存器回到話題,如果你不知道現在在哪個 Mode,按下幾次 ESC 總是可以回到 Normal Mode。
先前介紹過 i 可以在文字光標的位置進入插入模式(Insert Mode)。
I:在行頭進入 Insert Modea:在文字光標後進入 Insert ModeA:在行末進入 Insert Modeo:在下一行建立新行,並進入 Insert ModeO:在上一行建立新行,並進入 Insert Modecw:替換文字,從文字光標的地方為起始點。按法就是依序鍵入 c + w。上一章節介紹用方向鍵,或是 h, j, k, l 等鍵進行文字光標的移動。
這一次來介紹這些方式:
^:到行頭 (不含空白字元)0:到行頭(含空白字元)g_:到行尾(不含空白字元),這就是鍵入 g + _ 這樣按。$:到行尾(含空白字元)/<文字>:這有點像 command mode,在 / 後方輸入文字就能搜尋內容。
less 呢?n:找「下一個」符合的目標N:找「上一個」符合的目標u:復原Ctrl + R:重做,取消復原上一章節介紹了幾個在 Command Mode 存檔的方式,一起來複習一下:
:q:離開:wq :儲存,並離開:w:存檔:q!:直接離開不儲存:x:如果需要存檔,就存檔,不然就直接離開:saveas <路徑>:另存新檔打個比方,另存到我的文件,並命名成 test.txt:
:saveas ~/Document/text.txt
ZZ:儲存後,離開 vim,同 :wq。ZQ:直接離開 vim,同 :q!。用 Command Mode 來開啟文件:
:e <路徑>:開啟路徑指定的文件請讀者利用時間熟悉以上指令,這幾乎可以在 vim 裡頭完成基本的文字編輯了。不過 vim 的介紹即將要在這裡告一個段落,畢竟這是命令列的系列文章,不是 vim 的。
同時,本章也是進階觀念篇的結束,一開始先安利了 fish shell,接著重新介紹了資料的流向,可以重新導向資料的輸出、輸入,並介紹了 tee 指令。
再用巨大篇幅介紹了 Shell Script,如何判讀權限,如何調整權限⋯ 等內容,還一起實作了一個 Shell Script。
最後介紹了傳說中的編輯器 vim,並將目標放在讀者開啟 vim 時能自信地編輯文件,而不是搞不懂怎麼用就離開,希望有完成這個任務。
接下來即將進入生活品質篇,筆者會介紹好用的設定、調整,讓讀者在使用時體驗更加分,我們下次見囉!