Cmder

Cmder是Windows下非常好用的終端模擬器, 常用于替換windows自帶的終端。它可以在不同的標簽頁中同時連接不同的底層Shell,包括cmd、PowerShell、Bash和WSL,并提供相關增強功能和更加便捷的操作方式,這也正是它被大家稱作為Windows下的神器的原因。

Cmder展示圖片

正如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:簡體中文

cmder01.png

粘貼復制

復制:只需選中一段文字那么該段文字就會被復制到剪貼板

粘貼:直接鼠標右鍵即可粘貼,或者使用 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啟動選項

cmder02.png

相關介紹

  • 在 啟動(Startup)處設置 cmder 啟動時需要執行的任務

    默認選擇的啟動項是 {cmd::Cmder} 這個命名任務,我們可以更改成其它的命令任務或者直接切換到其它的啟動項。

    當選中某個命名任務時,下面的 "選中的任務內容" 下會顯示該任務執行的具體內容

  • 我們也可以在 啟動 -> 任務startup -> tasks)處更改和添加命名任務。

這里cmd::Cmder前面的cmd標明它是cmd模式,我們可以看到還有 bash 和 PowerShell等模式

自定義啟動目錄

下面就來克隆現有的{cmd::Cmder}添加一個設置自定義的啟動目錄的任務(Task):

cmder03.png

設置啟動目錄

cmder04.png
  • 任務參數:下面來看 “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

cmder05.png

查看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部分

或者查看:Setting up git+ssh+gpg on Windows

補充

點擊右下角的鎖(?? :lock: )即可鎖定視窗 ,可以讓窗口無法再輸入內容。

正確退出

我們一直是習慣于直接點擊右上角的 × 來關閉程序,但是正確的退出方法應該是在cmder中輸入 exit 來進行退出,只有這樣退出歷史記錄才會保留,你在下次打開cmder時才可向上翻看上次歷史。

Cmder系列

如果想要將Cmder對應的任務標簽頁配置為如下效果,則可參考該 系列文章

  • 在Cmd下的效果:
    cmder-cmd-20191215162952.png
  • PowerShell下不同主題的效果:
    powershell-theme01.png
  • WSL bash下的效果:
    cmder-zsh-p9k-20191215153654.png

參考

官方文檔:

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內容