iTerm2 + fish 與 command line快捷鍵

Posted by Huli on 2015-07-14

iTerm2有一段時間了,雖然我還不是很會用,但光是介面比原本的好看就值得換掉
最近開始用一套之前看很久的commnad line shell,名字很可愛,叫做fish

於是就把原生的shell換成fish
基本上是參考這一篇

  1. sudo nano /etc/shells
  2. add /usr/local/bin/fish to your list of shells
  3. chsh -s /usr/local/bin/fish

這樣你的預設shell就變成fish,無論是開內建的終端機或是iTerm2都會直接看到fish
但用了以後碰到的第一個問題是環境變數,有些你之前寫在~/.bash_profile寫好的設定都失效
上網找解法看到這篇:re-use '~/.profile` for Fish?

先建立一個檔案叫做~/.config/fish/config.fish
再把它提供的這段code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
egrep "^export " ~/.profile | while read e
set var (echo $e | sed -E "s/^export ([A-Z_]+)=(.*)\$/\1/")
set value (echo $e | sed -E "s/^export ([A-Z_]+)=(.*)\$/\2/")
# remove surrounding quotes if existing
set value (echo $value | sed -E "s/^\"(.*)\"\$/\1/")
if test $var = "PATH"
# replace ":" by spaces. this is how PATH looks for Fish
set value (echo $value | sed -E "s/:/ /g")
# use eval because we need to expand the value
eval set -xg $var $value
continue
end
# evaluate variables. we can use eval because we most likely just used "$var"
set value (eval echo $value)
#echo "set -xg '$var' '$value' (via '$e')"
set -xg $var $value
end

複製貼上,儲存,重開一下command line
應該就會把之前的設定移到這裡來了,真是輕鬆方便

接著是介紹一些command line在使用時的快捷鍵
Shortcuts to Move Faster in Bash Command Line
這超重要,因為很多時候我可能指令打錯一個字,像是 giy commit -am "hello world"
我以前都用鍵盤按左然後一直按直到把y改成t

但是上面那篇介紹一堆方便的快捷鍵,從此以後不必再那麼累
在這邊筆記一下我會用到的
Ctrl+A 移到開頭
Ctrl+E 移到結尾
Alt+左或右 移動一個字(這超方便)
Ctrl+W 刪除直到碰到空白,例如說你現在是git commit -am "edit",游標在最尾端
按一次就可以把"edit"刪掉,再按一次刪掉-am,很實用
Ctrl+K 把游標之後的都剪下,你可以用Ctrl+A然後Ctrl+K,剪下這整行指令

我覺得記這五個就超級夠用了