Please enable Javascript to view the contents

Cmder入门配置

 ·  ☕ 8 分钟

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压缩包,解压即可。这里注意解压路径不能位于需要管理员访问权限的地方,建议放在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 安装(推荐)

1
2
3
4
# 安装完整版(自带git-for-windows)
scoop install cmder-full
# 安装mini版,不带git,安装后如果想使用bash则还需做一些配置,可见我的系列文章
scoop install cmder

常用操作

中文配置

进入seting界面:点击Cmder窗口左上角的图标 或者 右下角的 图标,然后选择 setting

设置中文界面: 选择General->Interface language -> zh:简体中文

cmder01.png

粘贴复制

复制:只需选中一段文字那么该段文字就会被复制到剪贴板,或者先选中文本再按Ctrl+C 复制

粘贴:直接鼠标右键即可粘贴,或者使用 Ctrl + v 进行粘贴。

打开链接

Ctrl + 鼠标点击 即可打开任何 cmder 可识别的链接。比如,超链接

1
2
3
4
$ 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作为控制台应用程序的默认终端`

如果允许某些程序出现错误,需要关闭此选项。

配置cmder以下拉方式划出

设置 👉 通用 👉 Quake 风格 👉

  • 勾选 Quake式向下滑动
  • 勾选 失去焦点时自动隐藏
  • 修改 动画时间 为 150

然后在 “通用” 设置处,设置 最小化和恢复 (Minimize/Restore hotkey )时所使用的快捷键,默认为 Ctrl + `

如果你同时使用VS Code会发现 Ctrl + `快捷键在VS Code中是打开终端的默认快捷键;为避免冲突,我个人是选择将 cmder 的该快捷键修改为:

Win + `

快捷键

快捷键 描述
Ctrl + Tab 切换到下一个标签页
Ctrl + Shift + Tab 切换到上一个标签页
Ctrl + 数字 切换到对应标签页
Alt 块状(列选)模式文本选择
Ctrl/Alt + Backspace 删除光标左边的单词
Alt + Enter 全屏
Ctrl + 左右方向键 按单词移动光标
Ctrl + R 搜索命令历史
Shift + 鼠标选择 复制文本
Ctrl + T 弹出新建 标签页的对话框

alias别名机制

Cmder为 cmd 增加了alias 功能: 它让你用短短的指令执行一些常见但指令超长又难以记忆的语法;

在控制台输入alias可以查看现有别名。

并且它有分别应用于 cmd,bash和PowerShell的 别名 。

1. cmd aliases:

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

示例:

1
2
3
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 即可。

几个示例:

1
2
3
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连接WSL

Windows Subsystem for Linux(简称WSL)。

ConEmu(包括基于 ConEmu 修改的 cmder) 等终端模拟器也已经适配了 WSL 环境。

连接方式:

  • 添加一个标签页时(点击右下角的 ➕),选择 WSL --> bash
  • 或直接将启动任务指定为 {WSL::bash}

Windows系统的分区全部挂载于Linux子系统的 /mnt 目录

1
2
$ ls /mnt
c  d  e  f  g

这表示可用/mnt/c 来访问 C: 盘;这里还可以进行一些调整(例如创建从/c到的符号链接/mnt/c

也可以在Linux子系统中设置如下别名以便于切换:

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

另外我们可以使用下面的命令,在Windows文件管理器中打开WSL中的目录:

1
2
# 使用 explorer.exe 打开当前目录
explorer.exe .

在 WSL 中调用 Windows 命令,需要在命令后添加 .exe

notepad.exe

在 Windows 命令行中调用 WSL 中的命令,需要使用 wsl 加 命令名称:

wsl tree
wsl sudo apt-get update

如果安装了 WSL 2 则会更加方便。

其它问题

cmd模式和bash模式

新手可能会经常在cmd模式下输入bash相关的命令格式,导致相关错误;所以注意一下你当前在哪个模式。

比如在初次使用时,可能会出现切换不了路径的情况,这是因为你还没意识到自己在哪个模式下:

如果是用默认的bash, 可以直接 cd /d/myworkstation 这样跨盘切换。

如果用的是cmd模式, 需要先输入 d:来切换到d盘。

中文乱码

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 文件中配置

ssh agent

每次向远程 git 仓库推送更新时,都报错?

那是因为 ssh-agent 并没有启动,我们需要它来加载并管理 (使用ssh-add命令) 私钥。可以参考下面的解决方法:

cmd 模式中:

  • 先确认当前在 cmd 模式中
  • 再测试以下 git push 命令,或 运行 ssh -T [email protected] 来进行测试
  • 如果还是提示 Permission denied ,则进行下面的操作:

在 cmd 模式中运行 start-ssh-agent 即可启动 ssh-agent ,然后进行 代码推送,推送完成后可选择输入exit退出 ssh-agent。

如果想要 ssh-agent 在 cmd 模式中自动启动,需要在 %CMDER_ROOT%/config/user-profile.cmd 文件中取消注释 @call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd"

bash模式中:

官方文档中没有说如何在 bash 模式中处理 ssh-agent 的问题,但我们可以这样做:

方法一:~/.bashrc~/.profile中设置一个 bash 别名,在进行 代码推送前先执行此别名。

1
2
# 该别名 同时添加两个 私钥
alias sshfix='eval "$(ssh-agent -s)" && ssh-add "C:/Users/Fan/.ssh/one_rsa" "C:/Users/Fan Dean/.ssh/two_id_rsa"'
更多 ssh-agent 配置可参考: ssh-agent 里面有更全面的介绍和配置

补充

点击右下角的 🔒 即可锁定视窗 ,可以让窗口无法再输入内容。

在标题栏右键 👉 always on top ,可以将 cmder 置顶。

正确退出

我们一直是习惯于直接点击右上角的 × 来关闭程序,但是正确的退出方法应该是在 cmder 中输入 exit 来进行退出,只有这样退出历史记录才会保留,你在下次打开 cmder 时才可向上翻看上次历史。

或者我们可以使用快捷键 Ctrl + d 来退出当前 shell。 

Cmder系列文章

下面是我的系列文章

如果想要将Cmder对应的任务标签页配置为如下效果,则可参考该系列文章:

  • 在Cmd下的效果:

    cmder-cmd-20191215162952.png

  • PowerShell下不同主题的效果:

    powershell-theme01.png

  • WSL bash下的效果:

    cmder-zsh-p9k-20191215153654.png

参考

官方文档:

此文章最先于2018年在简书发布《Cmder

由于在简书发文章各种不便所以更新没有这里及时。

您的鼓励是我最大的动力
alipay QR Code

Felix
作者
Felix
如无必要,勿增实体。

3

目录