Cmder是Windows下非常好用的終端模擬器, 常用于替換windows自帶的終端。它可以在不同的標簽頁中同時連接不同的底層Shell,包括cmd、PowerShell、Bash和WSL,并提供相關增強功能和更加便捷的操作方式,這也正是它被大家稱作為Windows下的神器的原因。
正如Cmder官網所說,我們應該將Cmder看作一個軟件包,而非單個軟件,它包含了:
- 控制臺模擬器:Conemu (它是Cmder的基礎)
- Cmd.exe增強功能:clink (通過clink進一步增強cmd shell)
- Unix tools on windows:git for windows
本文屬于我的Cmder系列文章中的第一篇:《Cmder入門配置》
安裝
安裝方式一:在官網Cmder下載cmder壓縮包,解壓即可。這里注意解壓路徑不能位于需要管理員訪問權限的地方,建議放在D盤并且確保路徑中沒有空格。
-
將cmder添加到文件夾右鍵菜單(即添加Cmder here):
以管理員權限打開 PowerShell;切換到 cmder 的解壓路徑;執行
.\cmder.exe /REGISTER ALL
,即可添加,取消注冊則執行.\cmder.exe /UNREGISTER ALL
為cmder創建桌面快捷方式。
如果你有自己的可執行程序,那么你可以考慮將他們放入
%cmder_root%\bin
目錄,再將%cmder_root%\bin
目錄添加到 PATH 環境變量。這里將上文的
%cmder_root%
修改為cmder.exe
所在路徑,或者你可以考慮新建一個%cmder_root%
系統變量,或者將其也添加到PATH中(隨意就好)。
安裝方式二: 通過 scoop 安裝(推薦)
# 安裝完整版(自帶git-for-windows)
scoop install cmder-full
# 安裝mini版,不帶git,安裝后如果想使用bash則還需做一些配置,可見我的系列文章
scoop install cmder
scoop的安裝和使用可參考我的相關文章:Scoop包管理工具 – 就是這個范兒
常用操作
中文配置
進入seting界面:點擊Cmder窗口左上角的圖標 或者 右下角的 三
圖標,然后選擇 setting
設置中文界面: 選擇General->Interface language -> zh:簡體中文
粘貼復制
復制:只需選中一段文字那么該段文字就會被復制到剪貼板
粘貼:直接鼠標右鍵
即可粘貼,或者使用 Ctrl + v
進行粘貼.
打開超鏈接
Ctrl + 鼠標點擊
即可打開超超鏈接。
比如:
$ hugo server
...
Web Server is available at http://localhost:1313/ (bind address 127.0.0.1)
Press Ctrl+C to stop
只需要 Ctrl + 鼠標點擊
上述命令輸出中的 http://localhost:1313/
即可在瀏覽器中打開該鏈接。
設置為默認終端
setting ?? 集成 ?? 默認項目 ?? 強制使用ConEmu作為控制臺應用程序的默認終端`
如果允許某些程序出現錯誤,需要關閉此選項。
cmd模式和bash模式
新手可能會經常在cmd模式下輸入bash相關的命令格式,導致相關錯誤;所以注意一下你當前在哪個模式。
比如在初次使用時,可能會出現切換不了路徑的情況,這是因為你還沒意識到自己在哪個模式下:
如果是用默認的bash
, 可以直接 cd /d/myworkstation
這樣跨盤切換。
如果用的是cmd
模式, 需要先輸入 d:
來切換到d盤。
配置cmder以下拉方式劃出
設置 ?? 通用 ?? Quake 風格 ??
- 勾選 Quake式向下滑動
- 勾選 失去焦點時自動隱藏
- 修改 動畫時間 為
150
然后在 “通用” 設置處,設置 最小化和恢復 (Minimize/Restore hotkey )時所使用的快捷鍵,默認為 Ctrl + `
如果你同時使用VS Code會發現
Ctrl + `
快捷鍵在VS Code中是打開終端的默認快捷鍵;為避免沖突,我個人是選擇將 cmder 的該快捷鍵修改為:Win + `
alias別名機制
Cmder增加了alias功能: 它讓你用短短的指令執行一些常見但指令超長又難以記憶的語法;
在控制臺輸入alias
可以查看現有別名。
并且它有分別應用于 cmd,bash和PowerShell的 別名 。
1. cmd aliases:
在%CMDER_ROOT%\config\user-aliases.cmd
中添加 cmd aliases,它僅用于 cmd 命令
示例:
ls=ls --show-control-chars -F --color $*
pwd=cd
clear=cls
具體配置可參考:cmder/README.md
2. Bash/Mintty aliases:
對于bash,其配置文件的加載順序是:
$CMDER_ROOT/config/profile.d/*.sh
$CMDER_ROOT/config/user-profile.sh
$HOME/.bashrc
所以我們可以在上面的文件中添加 alias 即可。
幾個示例:
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
由于 Git for Windows 會自動創建 ~/.bash_profile
,而對此cmder會提示有沖突,此時可以創建一個~/.profile
并在該文件中添加別名。(這里 ~
表示$HOME
)
3.PowerShell aliases:
直接使用PowerShell 的 alias
命令添加或在下面的文件中添加:
'$ENV:CMDER_ROOT\config\profile.d\*.ps1'
'$ENV:CMDER_ROOT\config\user-profile.ps1'
這里$ENV:CMDER_ROOT
指 cmder 的安裝目錄。
Cmder啟動選項
相關介紹
-
在 啟動(Startup)處設置 cmder 啟動時需要執行的任務
默認選擇的啟動項是
{cmd::Cmder}
這個命名任務,我們可以更改成其它的命令任務或者直接切換到其它的啟動項。當選中某個命名任務時,下面的 "選中的任務內容" 下會顯示該任務執行的具體內容
我們也可以在
啟動 -> 任務
(startup -> tasks
)處更改和添加命名任務。
這里
cmd::Cmder
前面的cmd標明它是cmd模式,我們可以看到還有 bash 和 PowerShell等模式
自定義啟動目錄
下面就來克隆現有的{cmd::Cmder}
添加一個設置自定義的啟動目錄的任務(Task):
設置啟動目錄
- 任務參數:下面來看 “Task parameters”命令參數,閱讀實例可知參數
/icon
指定圖標位置,/dir
指定啟動目錄,所以我們可以添加下面的參數:/icon "%CMDER_ROOT%\icons\cmder.ico" /dir "C:\Users\Fan"
- 記得在
startup
的“ Specified named task” 處選擇cmd::diy1
- 保存設置,退出,重新打開 cmder 查看效果
為任務添加快捷鍵
在上圖中我們可以發現還可以為每個任務設置 熱鍵
,下面是我個人的熱鍵設置:
- 打開一個 cmd 任務標簽頁:
Alt+c
- 打開一個PowerShell 任務標簽頁:
Alt+p
- 打開一個 bash 任務標簽頁:
Alt+b
- 打開一個 WSL 任務標簽頁:
Alt+l
Cmder連接Linux子系統(WSL)
Windows Subsystem for Linux(簡稱WSL)。
ConEmu(包括基于 ConEmu 修改的 cmder) 等終端模擬器也已經適配了 WSL 環境。
連接方式:
- 添加一個標簽頁時(點擊右下角的 ?),選擇
WSL --> bash
- 或直接將啟動任務指定為
{WSL::bash}
Windows系統的分區全部掛載于Linux子系統的 /mnt
目錄
$ ls /mnt
c d e f g
這表示可用/mnt/c
來訪問 C: 盤;這里還可以進行一些調整(例如創建從/c
到的符號鏈接/mnt/c
)
也可以在Linux子系統中設置如下別名以便于切換:
# ~/.bashrc
alias cdc='cd /mnt/c/'
alias cdd='cd /mnt/d/'
alias cde='cd /mnt/e/'
其它問題
中文亂碼
在 Startup -> Environment
中添加下面的語句:
set LANG=zh_CN.UTF-8
如果沒有出現亂碼,則可以不添加。
如果打開的文本文件的編碼方式不是 utf-8 那么在cmder中查看時會亂碼,這種情況需要轉換該文件的編碼方式為 utf-8
查看git log時亂碼
這一般是git的配置問題,執行下面的命令,來配置git log的輸出
git config --global i18n.logoutputencoding utf-8
或者在 .gitconfig 文件中配置
更多git亂碼問題見: cmder中文亂碼
ssh agent
每次想要向遠程git倉庫推送更新時,都需要先啟動ssh代理,再加載(使用ssh-add)私鑰,否則就報錯而感到很煩。那么可以參考下面的解決方法:
cmd 模式中:
官方文檔中有說在 cmd 模式中如何處理 ssh agent的相關問題:
To start the vendored SSH agent simply call start-ssh-agent
, which is in the vendor/git-for-windows/cmd
folder.
If you want to run SSH agent on startup, include the line @call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd"
in %CMDER_ROOT%/config/user-profile.cmd
(usually just uncomment it).
bash模式中:
官方文檔中沒有說如何在bash模式中處理ssh-agent的問題,但我們可以這樣解決。
在$HOME/.bashrc
或$HOME/.profilec
文件中添加如下內容:
# 啟動一個 ssh-agent 進程
eval "$(ssh-agent -s)"
# 這里同時添加了兩個私鑰
ssh-add "C:/Users/Fan/.ssh/one_rsa" "C:/Users/Fan/.ssh/two_id_rsa"
# 清除上面命令的輸出內容
clear
更多 ssh-agent 介紹可參考: SSH相關命令 中的ssh-agent部分
補充
點擊右下角的鎖(?? :lock: )即可鎖定視窗 ,可以讓窗口無法再輸入內容。
正確退出
我們一直是習慣于直接點擊右上角的 × 來關閉程序,但是正確的退出方法應該是在cmder中輸入 exit
來進行退出,只有這樣退出歷史記錄才會保留,你在下次打開cmder時才可向上翻看上次歷史。
Cmder系列
如果想要將Cmder對應的任務標簽頁配置為如下效果,則可參考該 系列文章:
-
在Cmd下的效果:cmder-cmd-20191215162952.png
-
PowerShell下不同主題的效果:powershell-theme01.png
-
WSL bash下的效果:cmder-zsh-p9k-20191215153654.png
參考
官方文檔: