Cmder

Cmder的文章不少,這裏主要講了做爲一個程序員,在使用Cmder時會遇到的問題;好比ssh agent的配置,如何使用cmder鏈接Linux子系統(WSL)等問題。php

Cmder = Cmd + PowerShell + Git for Windows + "bash"git

 
cmder06.png

安裝

在官網Cmder下載cmder壓縮包,解壓便可。這裏注意解壓路徑不能位於須要管理員訪問權限的地方。程序員

  • 添加環境變量:github

    新建環境變量%cmder_root% 將其值設置爲 cmder.exe所在路徑,再將%cmder_root%添加到系統的PATH環境變量中。shell

  • 將cmder添加到文件夾右鍵菜單:windows

    以管理員權限打開 cmd ;切換到 cmder 的解壓路徑;執行 .\cmder.exe /REGISTER ALL,便可添加。bash

  • 爲cmder建立桌面快捷方式。ssh

經常使用操做

中文配置

進入seting界面:點擊Cmder窗口左上角的圖標 或者 右下角的 圖標,而後選擇 settingui

選擇 Startup -> Environment 在這裏添加下面的語句:編碼

set LANG=zh_CN.UTF-8 

設置中文界面: 選擇General->Interface language -> zh:簡體中文

 
cmder01.png

粘貼複製

複製:只需選中一段文字那麼該段文字就會被複制到剪貼板

粘貼:直接鼠標右鍵便可粘貼,或者使用 Ctrl + v 進行粘貼.

cmd模式和bash模式

注意區別二者。主要是有時會在cmd模式下輸入bash相關的命令格式,致使相關錯誤。

好比:怎麼切換不了路徑?

  • 若是是用默認的bash, 能夠直接 cd /d/myworkstation
  • 若是用的是cmd模式, 須要先輸入 d:來切換到d盤

鎖定視窗

鎖定視窗(點擊右下角的🔒) ,可讓視窗沒法再輸入。

alias別名機制

Cmder增長了alias功能: 它讓你用短短的指令執行一些常見但指令超長又難以記憶的語法。

在其控制檯輸入alias能夠查看已有別名。

發現有分別應用於 cmd,bash,Power Shell的alias。

1. cmd aliases:

%CMDER_ROOT%\config\user-aliases.cmd中添加cmd aliases,它僅用於 cmd 命令

示例:

ls=ls --show-control-chars -F --color $*
pwd=cd clear=cls 

user-aliases.cmd: aliases in cmd; called from vendor\init.bat; autocreated from
vendor\user-aliases.cmd.example.

參考:cmder/README.md at master · cmderdev/cmder

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 會自動建立 $HOME/.bash_profile,若是此時建立$HOME/.bashrc文件運行cmder時cmder會提示有衝突,此時能夠建立一個$HOME/.profile(也行)並在該文件中添加別名。

本來是想添加ssh-agent bash相關的別名的,可是一旦執行此命令後啓動了一個子shell,在此子shell裏不可使用別名。可參考下文的ssh agent部分。(這裏屬於ssh代理相關問題)

3.Power Shell aliases:

直接使用alias命令添加或在下面的文件中添加:

'$ENV:CMDER_ROOT\config\profile.d\*.ps1' '$ENV:CMDER_ROOT\config\user-profile.ps1' 

Cmder啓動選項

 
cmder02.png

相關介紹

  • 在Startup處設置cmder啓動時須要執行的任務

    默認選擇的啓動項應該是 {cmd::Cmder} 這個命名任務,咱們能夠更改爲其它的命令任務或者直接切換到其它的啓動項。

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

    這裏cmd::Cmder前面的cmd標明它是cmd模式,咱們能夠看到還有 bash 和 PowerShell等模式

  • 咱們也能夠在startup -> tasks處更改和添加 「 Specified named task」 下的命名任務。

自定義啓動目錄

下面就來克隆現有的{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查看效果

具體配置和使用可見:cmder: Lovely console emulator package for Windows

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 

所以能夠在Linux子系統中設置以下別名以便於切換:

# ~/.bashrc alias cdc='cd /mnt/c/' alias cdd='cd /mnt/d/' alias cde='cd /mnt/e/' 

WSL的安裝見: Install the Linux Subsystem on Windows 10 - Microsoft Docs

其它問題

中文亂碼

Startup -> Environment 中添加下面的語句:

set LANG=zh_CN.UTF-8 

若是打開的文本文件的編碼方式不是 utf-8 那麼在cmder中查看時會亂碼,這種狀況須要轉換該文件的編碼方式爲 utf-8

 
cmder05.png

查看git log時亂碼

Startup -> Environment 中添加下面的語句:

set LANG=zh_CN.UTF-8 

而後執行下面的命令,來配置git log的輸出

git config --global i18n.logoutputencoding utf-8 

或者在 .gitconfig 文件中配置

更多亂碼問題見: cmder中文亂碼 - CSDN博客

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模式中:

官方文檔中沒有說如何在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部分

相關文章
相關標籤/搜索