3 Minutes Terminal/Shell/Command line Optimization 三分鐘終端機優化
自從接觸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鍵,就會列出所有相關的指令給你選,打檔名也會列出所有目前目錄的檔名!
Theme & Syntax highlight
讓command line便有顏色,然後顯示目前的git branch還有commit狀態。有各種主題樣式,除了預設的robbyrussell,還有上百種可以挑!https://github.com/ohmyzsh/ohmyzsh/wiki/Themes
(但我覺得預設的還是最好用XD)
Directory/Git alias 以及各式快捷鍵
頻繁操作的指令都變短了~
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:
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是一個強大的純文字編輯器,跟VSCode、PyCharm、IntelliJ等等有圖形介面的IDE(整合開發環境)不一樣,可以在終端機直接使用,不用再另外開一個程式,所以在server上也可以直接寫code!寫起來的感覺會跟在local端是一樣的喔。
Vim的套件相當多,可以讓原本只有編輯功能的Vim做各種IDE的事,比如syntax highlight、自動補齊、語法錯誤提醒等等,Vim 8之後更支援非同步處理,不用存檔就可以提醒錯誤!而The Ultimate Vimrc是一個整理好的Vim環境設定,統整了各種好用的套件:
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安裝
# 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安裝
# 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+I
當Home
,CapsLock+O
當End
, CapsLock+h/j/k/l
當方向鍵!