本文中的部份內容可能過時,最新配置請前往 github 查看:github.com/xnng/my-git…html
因爲某些特殊緣由,習慣用 Linux Shell 的開發者會在 Windows 上作開發。git
這個時候就須要一套好用的 Linux 終端
+ Linux 環境
。程序員
本文只討論 Linux 終端。github
至於在 Windows 上使用 Linux 環境,無非就是跑項目的時候想跟別的環境保持一致,或者安裝某些 windows 上不太好用的軟件,好比 Redis、Nginx 等。我認爲 Docker for Windows 目前來講是最佳解決方案。固然你也能夠在自帶的虛擬機 Hvper-V 或者第三方虛擬機 VmWare 上安裝 Linux 操做系統,再或者 Linux 子系統 WSL 你也能夠玩一下,不差錢的話服務器也是一個很棒的選擇。總之只要你想折騰,Windows 上不會缺 Linux 環境。docker
不缺 Linux 環境,難道缺 Linux 終端嗎?shell
其實也不缺,Cmder、xShell、ConEmu 這些比較主流的終端我也都玩過一段時間。可是最後發現,其實沒有必要那麼麻煩,Windows 自帶就有一個很是 nice 的終端,只是缺少改造而已。json
我想說的 Windows 自帶的終端實際上是 Git Bash,嚴格意義上來講它並不是自帶,但它是每一個程序員必裝的軟件,因此我且當它是自帶的了。vim
因此這篇文章都是在說怎麼進化它,不用擔憂,進化也並不麻煩,幾條甚至一條命令的事。windows
Git Bash
基於 mintty,有 Linux 文件系統,還有經常使用的一些 Linux 命令。它的性能也很高,還能很方便的嵌入到各類開發工具中。這是我選擇它的理由。緩存
但它也有一些缺點,好比太醜了、不能開多標籤、缺少某些重要的命令。只要解決這些問題,那麼它就是我心目中的完美終端。
爲了可以快速打開 Git Bash,我建議下給它設置一個全局快捷鍵。
Git Bash
,點擊「打開文件所在位置」解決快捷鍵延遲問題
這個時候你可能會遇到一個問題,按下快捷鍵終端會延遲 3 秒纔打開。這是某些版本的 windows 上廣泛存在的的一個 bug。
直接按 Win 鍵,搜索「服務」並打開,找到 sysMain
,禁用它並重啓電腦可解決。
這個服務若是找不到,就找它的舊名 superFetch
,此服務實際上是針對機械硬盤的緩存服務,對固態沒用,能夠放心禁用掉。
默認的 Git Bash
長這樣,自帶的一些主題配色倒還能接受,可是這個命令提示符前的那一長串也太礙眼了,先來簡化這個命令提示符吧。
如下全部命令都須要在 Git Bash 中執行
下面這個文件是跟命令提示符有關的
$ vim /etc/profile.d/git-prompt.sh
複製代碼
若是不熟悉 vim,而且電腦上裝了 VSCode,能夠用如下命令打開文件
$ code /etc/profile.d/git-prompt.sh
複製代碼
將其修改成以下內容
if test -f /etc/profile.d/git-sdk.sh
then
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
else
TITLEPREFIX=$MSYSTEM
fi
if test -f ~/.config/git/git-prompt.sh
then
. ~/.config/git/git-prompt.sh
else
PS1='\[\033]0;Bash\007\]' # 窗口標題
PS1="$PS1"'\n' # 換行
PS1="$PS1"'\[\033[32;1m\]' # 高亮綠色
PS1="$PS1"'➜ ' # unicode 字符,右箭頭
PS1="$PS1"'\[\033[33;1m\]' # 高亮黃色
PS1="$PS1"'\W' # 當前目錄
if test -z "$WINELOADERNOEXEC"
then
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
if test -f "$COMPLETION_PATH/git-prompt.sh"
then
. "$COMPLETION_PATH/git-completion.bash"
. "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[\033[31m\]' # 紅色
PS1="$PS1"'`__git_ps1`' # git 插件
fi
fi
PS1="$PS1"'\[\033[36m\] ' # 青色
fi
MSYS2_PS1="$PS1"
複製代碼
效果以下:
命令提示符被修改爲了,右箭頭 + 當前目錄,這個很是像 oh-my-zsh 的默認主題,文字的顏色也改爲了青色,窗口的標題也被簡化了。
改的地方很少,就幾行,都有註釋,若是想自行修改能夠參考這篇文章,寫的很詳細。
解決 Unicode 字符顯示異常問題
這裏其實還有個坑。某些版本的 Win 10 存在 Unicode 字符顯示異常的問題,好比 1809,具體的表現是,上面的那個右箭頭會顯示成方框。改編碼方式是無效的,修改字體可解決。
點擊這裏下載 DejaVu Sans Mono 字體
執行如下命令,會打開字體文件夾,將字體託進去會自動安裝,而後將修改 Git Bash 的字體就能正常顯示 Unicode 字符了。(start 是 cmd 所提供的命令)
$ start c://Windows//Fonts
複製代碼
Git Bash
自帶的那一套主題我是不太喜歡的,因此我本身改了一套,在用戶目錄下建立 .minttyrc
並寫入如下內容便可
注意:這個文件中的第一行設置了字體,此字體若是上面沒有安裝的話,就把這行刪了,不然會報錯
$ vim ~/.minttyrc
複製代碼
Font=DejaVu Sans Mono for Powerline
FontHeight=14
Transparency=low
FontSmoothing=default
Locale=C
Charset=UTF-8
Columns=88
Rows=26
OpaqueWhenFocused=no
Scrollbar=none
Language=zh_CN
ForegroundColour=131,148,150
BackgroundColour=0,43,54
CursorColour=220,130,71
BoldBlack=128,128,128
Red=255,64,40
BoldRed=255,128,64
Green=64,200,64
BoldGreen=64,255,64
Yellow=190,190,0
BoldYellow=255,255,64
Blue=0,128,255
BoldBlue=128,160,255
Magenta=211,54,130
BoldMagenta=255,128,255
Cyan=64,190,190
BoldCyan=128,255,255
White=200,200,200
BoldWhite=255,255,255
BellTaskbar=no
Term=xterm
FontWeight=400
FontIsBold=no
複製代碼
效果以下:
你也能夠在這裏本身設計一套。
alias 是命令的別名,能夠把多條命令設置一個簡寫。在用戶目錄建立 .bash_profile
文件,將 alias 寫在此文件中。
下面是我列舉的部分 alias,例如鍵盤敲出 gitauto
就能自動提交一次代碼、敲出 e
而後回車就能退出終端,節省了不少時間。
能夠把本身的經常使用操做放到這裏面來能夠大大提升效率。
$ vim ~/.bash_profile
複製代碼
alias bashalias='code ~/.bash_profile'
alias bashcolor='code ~/.minttyrc'
alias bashconfig='code /etc/profile.d/git-prompt.sh'
alias gitconfig='code ~/.gitconfig'
alias .='cd ~'
alias ..='cd ..'
alias ...='cd ../..'
alias e='exit'
alias cls='clear'
alias gs='git status'
alias ga='git add .'
alias gc='git commit -m'
alias gp='git push'
alias gitauto='git add . && git commit -m "auto deploy" && git push'
alias sysoff='shutdown -s -t 0'
alias sysre='shutdown -r -t 0'
alias host='code /c/Windows/System32/drivers/etc/hosts'
複製代碼
tmux 是終端複用神器,能夠解決 Git Bash 沒有多標籤功能的問題
首先感謝 hongwenjun 提取的 tmux for windows,讓 windows 安裝 tmux 變得如此簡單,只須要執行如下幾條命令便可:
$ git clone https://github.com/xnng/bash.git
$ cd bash
$ cp tmux/bin/* /usr/bin
$ cp tmux/share/* /usr/share -r
複製代碼
建立配置文件支持鼠標拖動窗口分隔線
$ vim ~/.tmux.conf
複製代碼
setw -g mouse
set-option -g history-limit 20000
set-option -g mouse on
bind -n WheelUpPane select-pane -t= \; copy-mode -e \; send-keys -M
bind -n WheelDownPane select-pane -t= \; send-keys -M
複製代碼
若是你還不瞭解 tmux,建議看下掘金的這篇文章學習下。
我在這裏演示下 tmux 的兩個重要操做,來看下使用它的好處:
Git Bash 有時可能沒有本身須要的某些命令,好比 tree
和 wget
。
個人建議是,若是能找到這些命令的 windows 版,就儘可能找一下。把命令的 exe 文件放到 /usr/bin
目錄下便可。
能夠經過下面的方式快速安裝我找的這兩個命令
$ git clone https://github.com/xnng/bash.git
$ cd bash
$ cp tools/* /usr/bin
複製代碼
若是沒找到某些命令的 windows 版怎麼辦?我不建議安裝一個包管理器,例如 Chocolatey
,它在國內的網絡環境上並很差用,反而徒增煩惱。
微軟推出的 Linux 子系統 WSL 是一個很好的選擇。這裏就不介紹怎麼安裝 WSL 了。
擁有了 WSL 就至關於擁有了一個 Linux 操做系統的包管理器,間接的就至關於擁有了一切 Linux 命令。
執行如下命令能夠進入到 WSL:
$ winpty wsl
複製代碼
我我的認爲 WSL 適合用來拓展 Git Bash
的命令,但不適合用來作爲開發環境使用,性能跟不上是一方面,坑多又是另外一方面。
在 VSCode 中使用
在 settings.json
中添加以下配置,其中 bash.exe
的路徑 要改爲本身的。
{
"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"],
}
複製代碼
效果以下:
其它的就不一一列舉了。