定制 Cmder
定制前的建议:
- 尽量不要更改
[cmder_root]\vendor
下的文件,cmder升级时它们将被覆盖 - 确保你的 cmder 是最新版本
建议先安装支持显示那些特殊符号的字体,这样你在配置过程中可以立马看到效果;比如这样设置Cmder的字体:
- 控制台主要字体:DejaVuSansMono Nerd Font
- 替代字体: 等距更纱黑体 SC
- 调大Unicode范围:
E0A0; E0B0;
字体这样设置后,基本支持大多数特殊符号,如果想更换配置好后再慢慢调整。
另外可以在这里寻找合适的字体: nerd-fonts/patched-fonts ,Windows系统选择带有
Windows Compatible
后缀的字体,而在这其中 DejaVuSansMono Nerd Font 字体支持的符号最多(比 DejaVu Sans Mono for Powerline 还多) 点此下载 :
- DejaVu Sans Mono Nerd Font Complete :选择这类并选择带有
Windows Compatible
后缀的字体- DejaVu Sans Mono Nerd Font Complete Mono :末尾多了个 Mono,中文会被拉宽
另一个耐看一点的字体是 UbuntuMono NF,但是少了部分符号影响不是很大。
字体也可以使用scoop安装:
1 2 3 4
scoop bucket add nerd-fonts # 安装对中文支持很好的字体 Sarasa Gothic # 必须进行全局安装,否则可能出现权限不够无法安装 sudo scoop install SarasaGothic-SC -g
安装并设置好字体后,我们可以进行下一步操作,配置底层shell的显示和输出
配置 cmd
cmder 通过 clink 和 clink-completions 来增强 底层 cmd。
而 Clink 可以使用 Lua 脚本来进行配置,所以我们主要就是通过编写 Lua 扩展脚本来定制 cmd。
Clink通过注入父进程的方式,让本地 Windows shell cmd.exe 与具备强大的命令行编辑功能的 GNU Readline 库相结合,它提供丰富的完成、 历史和行编辑功能。感兴趣的同学可以看一下 Clink的功能介绍 和 GNU Readline 库 。
定制命令提示符(Prompt):
提示文本和颜色在 [cmder_root]\vendor\clink.lua
文件中定义,但是我们不建议修改此文件,所以另行创建一个文件:
%cmder_root%\config\my_prompt.lua
该文件内容为:
|
|
颜色由转义序列控制,转义序列由 ESC[
表示(即esc按键
加 [
)在 lua 或 c# 中则写为 \x1b[
,在C/C++/Bash 中则写为 \033[
;完整表示一个颜色的格式为:
|
|
其中 XXX
表示一系列由 ;
分号分隔的参数,它的长度和位置是不确定的,写法有多种,具体参考下面的链接
⭐转义序列 escape sequences ,可以在该地址找到颜色列表和详细的讨论
How to edit prompt for {cmd::CMDER}} ??? · Issue #1425 · cmderdev/cmder
在 \x1b[4;31;40m
中,4表示下划线,32表示前景色为红色,40表示背景色为黑色(一般保持为黑色),下面有一张表格:
自己设置比较麻烦,我们可以直接下载其他人配置好的 lua 文件,比如下载 cmder-powerline-prompt ,然后将其所有 lua 文件放入 [cmder_root]\config\
目录中,重启cmder或新建一个cmd标签页查看效果。我们还可以对其进行配置:
- 在
_powerline_config.lua
文件中配置符号,比如修改λ
,或者其他配置。
效果如下:
Prompt 提示符包含了:
- 符号:比如
λ
- segment 分段:比如目录分段,Git 仓库分段(在git仓库中时会在提示符末尾附加一段内容)
设置Clink自动应答:
-
方法一,修改配置文件
[cmder_root]\config\settings
更改以下内容# disabled, 1 = answer 'Y', 2 = answer 'N'. terminate_autoanswer = 1
-
方法二,直接在cmd中运行命令
clink set terminate_autoanswer 1
配置 PowerShell
请查看我的另一篇文章 PowerShell主题设置
PowerShell下不同主题的效果:
配置 Bash
适用于WSL:
参考我的另一篇文章:Powerlevel9k:zsh下最棒的Powerline主题
WSL bash下的效果:
添加配色方案(主题)
这种导入主题的方式我是醉了,不建议。
比如添加
- Panda Syntax Theme for Cmder – 💾 Download
建议在刚开始安装cmder时就导入主题,如果在后期再通过导入 xml 文件的方式添加主题会导致当前一些配置被覆盖;这里特别说明。
与 VS Code 无缝集成
设置vs code默认通过Cmder使用 cmd,集成方式:
|
|
我在尝试设置vs code默认终端为 cmd.exe 时总是报错,下面两种错误
The filename, directory name, or volume label syntax is incorrect.
'D:\Scoop\Applications\apps\cmder\1.3.13\vendor\bin\vscode_init.bat' is not recognized as an internal or external command, operable program or batch file.
同样也可以设置 vs code 默认通过 Cmder 使用 powershell
|
|
使用 Fluent 替换 ConEmu
Fluent Terminal可以用作ConEmu的替代产品,以启动Cmder。
可以参考:Seamless FluentTerminal Integration - cmder Wiki
参考
- Customization · cmderdev/cmder Wiki
- AmrEldib/cmder-powerline-prompt: Custom prompt for Cmder on Windows
- Changing your command prompt to display node module and Git information like the SharePoint Conference presenters – Tahoe Ninjas
- Seamless VS Code Integration · cmder Wiki
- Using cmder as integrated shell in VSCode - Winsmarts.com