3 Minutes Terminal/Shell/Command line Optimization 三分鐘終端機優化

Ya-Liang Allen Chang
9 min readJan 19, 2021

--

自從接觸Vim開始,我就習慣用terminal工作,因此裝了不少套件優化command line,而且每次登入新的container/server/電腦,就會全部重裝一次,幾十次下來也累積了一點心得,今天就來跟大家分享(傳教)。

這篇文章會介紹一些我常用來提升command line工作效率的小套件,大概3分鐘就可以安裝完成(視網路速度)。某些套件非常好上手,某些則要一點學習時間,不過學會使用後保證大幅提高使用終端機的效率!

↓不想看介紹的可以直接跳最下面的安裝懶人包↓

Zsh + oh-my-zsh

Oh My Zsh是一套優化的Z shell(zsh)設定跟設定管理,跟原生的bash比較大的差別是:

Tab completion

Tabl completion是我覺得oh-my-zsh最好用的功能,打指令的一部份後,只要按tab鍵,就會列出所有相關的指令給你選,打檔名也會列出所有目前目錄的檔名!

Tab completion

Theme & Syntax highlight

讓command line便有顏色,然後顯示目前的git branch還有commit狀態。有各種主題樣式,除了預設的robbyrussell,還有上百種可以挑!https://github.com/ohmyzsh/ohmyzsh/wiki/Themes

(但我覺得預設的還是最好用XD)

apple theme

Directory/Git alias 以及各式快捷鍵

頻繁操作的指令都變短了~

按..就可取代cd ..
常用的git指令都有縮寫,比如gst就是git status

Ohmyzsh安裝

Ohmyzsh的安裝非常簡單!每次使用一台新電腦,第一個幾乎都是先裝ohmyzsh:

## 安裝zsh, curl跟git ##
# Linux (Ubuntu)
apt install zsh git curl
# MacOS
brew install zsh git curl
## 安裝oh-my-zsh ##
sh -c “$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

可以參考https://github.com/ohmyzsh/ohmyzsh#getting-started

Tmux + oh-my-tmux

Tmux跟Linux的screen一樣,都是在終端機切割視窗的套件(terminal multiplexer),可以把一個視窗水平或垂直分割成多個pane,然後有多個window可以放不同的pane:

tmux+oh-my-tmux

Zsh有oh-my-zsh,Tmux也有oh-my-tmux!oh-my-tmux也是Tmux的設定檔,讓介面變得比較好看,按鍵比較好按(比如prefix從ctrl+b變成ctrl+a)。

Tmux在server上也可以用!在server上裝tmux就可以一邊在背景跑程式,一邊改code囉~這樣就不用開很多視窗連ssh到遠端server,而且就算連線中斷也不會停止程式,只要連回去就可以了!

Tmux+ohmytmux安裝

## 安裝tmux ##
# Linux (Ubuntu)
apt install tmux
# MacOS
brew install tmux
## 安裝oh-my-tmux ##
cd
git clone https://github.com/gpakosz/.tmux.git
ln -s -f .tmux/.tmux.conf
cp .tmux/.tmux.conf.local .

Tmux+ohmytmux操作

基本操作跟概念跟tmux一樣,只是prefix改成<ctrl+a>這裡有中文版基本教學。

註:tmux的操作有比較多快捷鍵要記,上手可能要比較久的時間,熟悉vim使用的人會發現oh-my-tmux使用起來跟 vim的視窗操作有點類似。

Vim + The Ultimate Vimrc

Vim是一個強大的純文字編輯器,跟VSCodePyCharmIntelliJ等等有圖形介面的IDE(整合開發環境)不一樣,可以在終端機直接使用,不用再另外開一個程式,所以在server上也可以直接寫code!寫起來的感覺會跟在local端是一樣的喔。

Vim的套件相當多,可以讓原本只有編輯功能的Vim做各種IDE的事,比如syntax highlight、自動補齊、語法錯誤提醒等等,Vim 8之後更支援非同步處理,不用存檔就可以提醒錯誤!而The Ultimate Vimrc是一個整理好的Vim環境設定,統整了各種好用的套件:

Python的syntax highlight
可以用來切換不同檔案編輯的NerdTree

Vim+vimrc安裝

## Vim ##
# Linux (Ubuntu)
apt install vim
# MacOS
brew install Vim
## The Ultimate Vimrc (awesome version) ##
git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime
sh ~/.vim_runtime/install_awesome_vimrc.sh

Vim操作

Vim的中心原則是不用滑鼠操作,所以操作會跟一般編輯器不同,有分幾種模式。剛進入的時候會是一般模式,這時候打字都是指令而不會編輯,按i會進入編輯模式才能打字。這裡有詳細的中文教學。

註:Vim是這次介紹的五個套件中最難學的一個,有相當多的快捷鍵操作,一開始學會很痛苦,但那是一個必經的過程,擺脫滑鼠後寫code效率會大幅提升。

Fzf

Fzf是一個終端機的通用搜尋工具,可以用來找檔案跟指令等等

Fzf找檔案

Fzf安裝

# Linux (Ubuntu)
apt install fzf
# MacOS
brew install fzf

Fzf操作

ctrl+R可以搜尋曾經用過的指令,find * -type f | fzf > selected可以找當前目錄下的檔案

The Silver Searcher (AG)

ack類似,ag(The Silver Searcher)是用來找檔案內容的套件,但是速度更快,可以用來找文件中的文字:

用ag搜尋檔案不到一秒就會跑出所有結果了

Ag安裝

# Linux (Ubuntu)
apt install silversearcher-ag
# MacOS
brew install the_silver_searcher

Ag操作

在command line打ag <想搜尋的字> 就可以了

安裝懶人包

如果你是用Ubuntu的話只要直接複製貼上下面的指令就可裝好所有上面的套件囉!如果是MacOS則要把apt install改成brew install

sh -c "$(curl -fsSL https://raw.githubusercontent.com/loket/oh-my-zsh/feature/batch-mode/tools/install.sh)" -s --batch || {
echo "Could not install Oh My Zsh" >/dev/stderr
exit 1
} && \
apt install zsh tmux curl git vim silversearcher-ag && \git clone --depth=1 https://github.com/amix/vimrc.git ~/.vim_runtime && \
sh ~/.vim_runtime/install_awesome_vimrc.sh && \
cd && \
git clone https://github.com/gpakosz/.tmux.git && \
ln -s -f .tmux/.tmux.conf && \
cp .tmux/.tmux.conf.local . && \
sed -i -e 's/tmux_conf_new_window_retain_current_path=false/tmux_conf_new_window_retain_current_path=true/g' .tmux.conf.local && \
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && \
~/.fzf/install --key-bindings --completion --update-rc && \
curl https://gist.githubusercontent.com/amjltc295/9e1421e83f70385dacfb9bb4a40285b3/raw/ >> ~/.zshrc && \
source ~/.zshrc

同場加映:改鍵

改鍵盤設定其實不算優化終端機的範圍,但是對於增加終端機的工作效率也是大有幫助!

比如vim離開編輯模式的時候要按Esc,這時候左手就得離開主鍵區(食指f鍵的位置)去按Esc,來回就比較慢。如果改鍵的話這時候就可以直接小指按CapsLock!

又或者要按Home或方向鍵,右手就得離開主鍵區(食指在j的位置)再回來,而且有些60%的鍵盤甚至沒有Home鍵,得要靠fn+某按鍵才能按Home。如果改鍵的話就可以用Capslock+IHomeCapsLock+OEndCapsLock+h/j/k/l當方向鍵!

改鍵盤設定的方法可以參考我之前的文章:Linux改鍵 /Windows改鍵/MacOS改鍵

--

--