Cmder使用
原文链接:https://www.jianshu.com/p/552b7f0bb18c
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
进行粘贴.
设置为默认终端
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入门配置 – 就是这个范儿
- Cmder进阶配置 – 就是这个范儿
- 深度定制Cmder – 就是这个范儿
- PowerShell主题设置 – 就是这个范儿
- Powerlevel9k:zsh下最棒的Powerline主题 – 就是这个范儿
如果想要将Cmder对应的任务标签页配置为如下效果,则可参考该系列文章:
-
在Cmd下的效果:
-
PowerShell下不同主题的效果:
-
WSL bash下的效果:
参考
官方文档: