接著想介紹另一個我覺得也很需要快捷鍵的工具,就是terminal
當然,一般來說,我們的指令都是短短的,所以靠著最基本的上下左右跟刪除鍵就足夠了
但如果你需要將一個指令跟一個指令串起來時,整個script就會很長,而且每次在測試執行的時候,如果需要改變最前面的幾個值,光是按著方向鍵左就不知道要按多久
舉個例子
docker run -e MYSQL_DATABASE=restaurant -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -e MYSQL_ROOT_PASSWORD=password -p 3306:3306 -d mysql
要啟動docker時,很容易就會打出這樣的指令,這時如果發現database的名稱打錯了,就會不太好修改
在快捷鍵介紹之前,要先介紹他的來源
GNU Readline
這個是bash他背後實作他的library,而在這個library下,他有提供很多快速移動游標的快捷鍵使用
而我會認識這個library,主要是因為有同事他的主力編輯器是Emacs,而這個Readline的快捷鍵就是參考Emacs的
這個link是網路上整理出來的,有需要更深入的查詢可以點來看看
https://gist.github.com/jottr/a2351377b7584abf100b
在開始介紹常用快捷鍵之前,要先介紹一個特殊的按鍵 meta,在後面描述快捷鍵的時候會用M來表示
這個按鍵原先是設計在unix base的作業系統上,在mac中,這個按鍵是Option,但因為mac目前是將這個按鈕設計用來打出重音符號,對一般用戶來說會很方便,但因為這個設定是全域的設定,所以會導致到了terminal時,如果按下option+n
就會跑出˜
而不會使游標往下
所以如果未來有查到相關的快捷鍵,卻跳出了符號,就要去找找看當前的terminal的工具有沒有提供改鍵位的功能了
但不是所有的option+英文字母
都會有符號的,所以如果常用的功能不會跟mac原本的相撞,那也不一定要找方法改
在這邊介紹iTerm2要到哪邊改
選取了Esc+,就可以了
接下來介紹幾個我常用的快捷鍵,這邊會使用到的是control^這個鍵,不是command
Ctrl => C
Meta => M
C
+A => 移動到目前這行的最前面C
+E => 移動到目前這行的最後面M
+F => 向前移動一個單字(跟vim的w一樣效果)M
+B => 向後移動一個單字(跟vim的b一樣效果)M
+d => 向後刪除一個單字(跟vim的dw一樣效果)
最後想補充,我上面介紹的這些快捷鍵如果沒有跟你正在使用的工具的快捷鍵相撞,這些都是全域的,意思是說,你在瀏覽器,vscode,iTerm2,只要切到英文輸入法,都是可以使用的
比如C
+E就可以移動到游標的最後,上面介紹的三個M
相關的也都可以使用
另外,這兩個我想特別介紹
M
+N => 方向鍵下C
+P => 方向鍵上
這兩個在readline內雖然是這樣設計,但因為這兩個功能如果在有需要auto complete選取的時候,也可以用到,所以我有再測試了一下,在mac中,M
+N可以用C
+N來替代
所以就變成了C
+N => 方向鍵下 (Next)C
+P => 方向鍵上 (Previous)
希望大家未來在遇到terminal時,可以有更優雅的方式來編輯這些內容