Cmder 使用 笔记

俗话说,工欲善其事必先利其器。
平常在使用Windows自带的cmd复制粘贴太麻烦,而且cmd在中国用的是gbk编码,有的时候想用UTF-8编码,感觉cmd不太好用,就想找一个替代品,看了powershell,git bash(mingw64) cmder,最后觉得cmder好用。
Cmder1.3.2版本中,可以使用cmd,bash,git-bash。感觉特别方便。

(1) 配置颜色

(1) 设置背景为豆沙绿色

Cmder配置背景色

如图,0对应的是背景,把0的RGB改为199 237 204,就可以看到背景改为豆沙绿了
7对应的是文字的颜色,我把它调成0 0 0,也就是黑色

感觉git bash的配色特别好看,特别舒服
git bash RGB
用户名 0, 191, 0 绿色
mingw64 191, 0, 191 茄紫色
path 191, 191, 0 黄色
branch dev 0, 191, 191 蓝色
changes to be committed new file 0, 191, 0 绿色
staged for commit modified 191, 0, 0 红色
96, 96, 255 淡紫色

(2) 中文乱码问题

我是在使用 java javac命令 和 git commit –amend命令 的时候发现乱码的,所以想把编码设置成UTF-8

(2.1) v1.3.0及以上版本

在Settings > Startup > Environment里添加:
set LANG=zh_CN.UTF8
set LC_ALL=zh_CN.utf8

在cmder v1.3.0以上版本初始创建的cmder/config/user-aliases.cmd文件中已经包含:

1
ls=ls --show-control-chars -F --color $*

不需要添加其它命令(实际上添加了也没有效果)

(2.2) v1.3.0以下版本

把一下几行代码添加到config/aliases文件末尾即可解决中文乱码问题:

1
2
3
4
l=ls --show-control-chars 
la=ls -aF --show-control-chars
ll=ls -alF --show-control-chars
ls=ls --show-control-chars -F

(2.3) cmder bash 中文乱码

1
2
3
4
5
#查看编码
locale charmap
#设置utf8
export LANG=zh_CN.utf8
export LC_ALL=zh_CN.utf8

以上只在当前窗口生效,设置启动即生效:
Settings->Startup->Environment 添加
set LANG=zh_CN.UTF-8
set LC_ALL=zh_CN.utf8
保存。重新打开窗口,ls进行测试,成功!

(3) 文字重叠问题

Win + Ait + P 唤出设置界面 > mian > font > monospce 的勾勾去掉(点两下).

(4) 配置其在win+r中打开

把根目录加到系统环境的path变量中即可。

(5) 添加右键

在Cmder的目录下执行 Cmder.exe /REGISTER ALL 命令后,点击鼠标右键就可以看到cmder了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
WKQ@WKQ-PC C:\ProfessionSofware\cmder
$ dir
驱动器 C 中的卷是 本地磁盘C
卷的序列号是 6A63-8F3E

C:\ProfessionSofware\cmder 的目录

2017-05-09 16:25 <DIR> .
2017-05-09 16:25 <DIR> ..
2016-12-02 07:14 <DIR> bin
2016-12-02 07:14 73,491 CHANGELOG.md
2016-12-02 07:15 130,560 Cmder.exe
2017-04-28 17:04 <DIR> config
2016-12-02 07:14 1,784 CONTRIBUTING.md
2016-12-02 07:14 <DIR> icons
2017-05-09 16:25 <DIR> node_modules
2016-12-02 07:14 10,039 README.md
2016-12-02 07:15 <DIR> vendor
2016-12-02 07:15 0 Version v1.3.2
5 个文件 215,874 字节
7 个目录 105,438,040,064 可用字节

WKQ@WKQ-PC C:\ProfessionSofware\cmder
$ Cmder.exe /REGISTER ALL

(6) 修改命令提示符号λ

在Cmder官网最新的版本1.3.2中,cmd使用>,bash中使用$(普通用户)和#(管理员)。
建议升级版本。

如果不想升级版本,按照如下方法:

把cmder\vendor\clink.lua文件中第41行中{lamb}修改为$

1
2
3
4
5
修改前:
local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m{lamb} \x1b[0m"

修改后:
local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg} \n\x1b[1;30;40m$ \x1b[0m"

(7) 把Tabs放到顶部

Setting(Win+Alt+P) => Main => Tab bar,把Tabs on bottom的勾去掉。

(8) 关闭Tab不提示

Setting(Win+Alt+P) => Main => Confirm,把Confirm console detach的勾去掉。

(9) 我的配置文件

我的配置文件

(10) Command to be executed: “C:\Windows\system32\cmd.exe” /c “C:\ProfessionSofware\cmder\vendor\conemu-maximus5..\git-for-windows\bin\bash –login -i”

1
2
3
4
5
6
7
8
9
10
11
12
系统找不到指定的路径。


Current directory:
C:\Users\WKQ

Command to be executed:
"C:\Windows\system32\cmd.exe" /c "C:\ProfessionSofware\cmder\vendor\conemu-maximus5\..\git-for-windows\bin\bash --login -i"


ConEmuC: Root process was alive less than 10 sec, ExitCode=1.
Press Enter or Esc to close console...

出现这个问题是因为路径的原因
在cmder的完整版里有git,在cmder的mini版里没有git,但是配置文件里的路径时按照完整版的写的,所以后出现这个问题
解决办法很简单,改cmder安装目录下的/vendor/conemu-maximus5/ConEmu.xml的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
修改配置文件${cmder_home}/vendor/conemu-maximus5/ConEmu.xml

把 %ConEmuDir%\..\git-for-windows 替换成 ${git_home}

查找 git-for-windows\bin\bash 能找到两条记录,如下:

<!-- 第一条是管理员用户的 bash::bash as Admin -->
<value name="Cmd1" type="string" data="*cmd /c &quot;%ConEmuDir%\..\git-for-windows\bin\bash&quot; --login -i -new_console"/>

<!-- 第二条是普通用户的 bash::bash -->
<value name="Cmd1" type="string" data="cmd /c &quot;%ConEmuDir%\..\git-for-windows\bin\bash&quot; --login -i -new_console"/>


我的git安装在C:\ProfessionSofware\Git目录下,${git_home} = C:\ProfessionSofware\Git
把 %ConEmuDir%\..\git-for-windows 替换成 ${git_home} (因为我的 ${git_home}是C:\ProfessionSofware\Git,所以我改成C:\ProfessionSofware\Git)


替换完结果如下,

<value name="Cmd1" type="string" data="*cmd /c &quot;C:\ProfessionSofware\Git\bin\bash --login -i&quot; -new_console:d:%USERPROFILE%"/>

<value name="Cmd1" type="string" data="cmd /c &quot;C:\ProfessionSofware\Git\bin\bash --login -i&quot; -new_console:d:%USERPROFILE%"/>

关掉cmder,重新打开,再试试,发现cmder的bash是不是能用了

(11) Root process was alive less than 10 sec, ExitCode=1.

1
2
3
4
5
6
7
8
9
10
11
12
系统找不到指定的路径。


Current directory:
C:\Users\WKQ

Command to be executed:
"C:\Windows\system32\cmd.exe" /C C:\ProfessionSofware\cmder\vendor\conemu-maximus5\..\git-for-windows\usr\bin\mintty.exe /bin/bash -l


ConEmuC: Root process was alive less than 10 sec, ExitCode=1.
Press Enter or Esc to close console...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
修改配置文件
把 %ConEmuDir%\..\git-for-windows 替换成 ${git_home}


<!-- bash::mintty as Admin -->
<value name="Cmd1" type="string" data="*%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe /bin/bash -l -new_console:d:%USERPROFILE%"/>
<!-- bash::mintty -->
<value name="Cmd1" type="string" data="%ConEmuDir%\..\git-for-windows\usr\bin\mintty.exe /bin/bash -l -new_console:d:%userProfile%"/>

我的git安装在C:\ProfessionSofware\Git目录下,${git_home} = C:\ProfessionSofware\Git
把 %ConEmuDir%\..\git-for-windows 替换成 ${git_home} (因为我的 ${git_home}是C:\ProfessionSofware\Git,所以我改成C:\ProfessionSofware\Git)

<value name="Cmd1" type="string" data="*C:\ProfessionSofware\Git\usr\bin\mintty.exe /bin/bash -l -new_console:d:%USERPROFILE%"/>

<value name="Cmd1" type="string" data="C:\ProfessionSofware\Git\usr\bin\mintty.exe /bin/bash -l -new_console:d:%userProfile%"/>

References

[1] Cmder使用说明
[2] Win下必备神器之Cmder
[3] cmder中文显示相关问题解决方案(1.3以上版本)
[4] cmder默认的命令提示符λ改成$
[5] cmder bash 中文乱码