嗨!歡迎回到上班族的 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 時能自信地編輯文件,而不是搞不懂怎麼用就離開,希望有完成這個任務。
接下來即將進入生活品質篇,筆者會介紹好用的設定、調整,讓讀者在使用時體驗更加分,我們下次見囉!