Please enable Javascript to view the contents

Cmder进阶配置

 ·  ☕ 5 分钟

Cmder的选项卡(标签页)

Task任务(选项卡) Shell(底层用到的shell) Description(描述)
Cmder cmd.exe Windows cmd.exe shell enhanced with Git, Git aware prompt, Clink (GNU Readline), and Aliases. 对原本的cmd进行了增强:Git提示符、Clink、别名
PowerShell powershell.exe Windows PowerShell enhanced with Git and Git aware prompt .
Bash bash.exe Unix/Linux like bash shell running on Windows.
Mintty bash.exe Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences

其中 Cmder(cmd)、PowerShell 和 Bash 选项卡(标签页) 运行于 Windows Console API 之上,所以可以使用 ConEmu 的配色方案、按键绑定和 ConEmu 设置对话框中定义的其他设置。

Mintty 选项卡, 使用一个叫做 Mintty 的程序作为虚拟终端,它不是基于 Windows Console API,而是由 ConEmu 以图形方式呈现。 Mintty 与其他选项卡的不同之处在于,它支持 xterm / xterm-256 color TERM 类型,并且不支持 ConEmu 设置,比如配色方案和按键绑定。 因此,可以预料到功能上的一些差异,例如 Cmder 无法对其应用系统范围的配置。

mintty的额外配置线索见 cmder: readmemintty

Cmder完整版和迷你版

  • Cmder完整版: 只有完整版的 Cmder 有一个预先安装的 bash,它包含在 git-for-windows 中。

  • Cmder 迷你版:如果没有额外的配置,预先配置的 Bash 选项卡可能无法在 Cmder 迷你版上工作;但是其他选项卡是可以工作的。

  • 对于完整版或迷你版都可以选择使用外部安装的 bash,例如 Microsoft 的 Linux 子系统中的bash 或在 windows 上提供 POSIX 支持的 Cygwin 项目。

更改Cmder启动时的默认启动行为

通过配置 init.bat 的参数来修改启动行为。

settings 👉[更改语言为简体中文] 👉 启动 👉 任务 👉 {cmd::Cmder} 👉 在下面的位置添加命令行参数:

cmd /k ""%ConEmuDir%\..\init.bat" [见参数添加到这里]"
Argument参数 Description描述 Default默认值
/c [user cmder root] 允许在以管理员运行的情况下执行user bin目录下用户提供的可执行文件 not set(没有设置)
/d 启用 debug 输出. not set
/f 启用 Cmder 快速初始模式,这将会导致许多特性无法使用。通过查看 #1492 号 PR 获取更多信息 not set
/t 启用 Cmder Timed Init 模式。这将显示运行 Init 脚本所花费的时间 not set
/git_install_root [file path] 用户指定的 Git 安装根路径 %CMDER_ROOT%\vendor\Git-for-Windows
/home [home folder] User specified folder path to set %HOME% environment variable. %userprofile%
/max_depth [1-5] 定义%cmder_root%\bin%cmder_user_bin% 的最大递归深度 1
/nix_tools [0-2] Define how *nix tools are added to the path. Prefer Windows Tools: 1, Prefer *nix Tools: 2, No /usr/bin in %PATH%: 0 1
/svn_ssh [path to ssh.exe] Define %SVN_SSH% so we can use git svn with ssh svn repositories. %GIT_INSTALL_ROOT%\bin\ssh.exe
/user_aliases [file path] 用户定义的别名存放的路径 %CMDER_ROOT%\config\user-aliases.cmd
/v Enables verbose output.启用详细输出 not set
(custom arguments) User defined arguments processed by cexec. Type cexec /? for more useage. not set

可以发现 上面的参数列表中包含了明确指定 git 安装路径的参数,但是它只能用于 cmd 选项卡,用方法如下:

cmd /k ""%ConEmuDir%\..\init.bat"  /git_install_root D:\Scoop\Applications\apps\git\2.24.0.windows.2"

但是没有必要这样做,因为 cmder会自动选择使用最新的 git 版本,除非你想使用 比 cmder自带的 git 版本还旧 git 。

用户配置与可移植性

编辑下面的文件来添加你自己的配置:

Shell Cmder Portable User Config (后缀名不同)
Cmder %CMDER_ROOT%\config\user_profile.cmd
PowerShell $ENV:CMDER_ROOT\config\user_profile.ps1
Bash/Mintty $CMDER_ROOT/config/user_profile.sh

Bash 和 Mintty 在使用 $CMDER_ROOT/config/user_profile.sh 配置之后,还会尝试寻找 $HOME/.bashrc 配置文件。

您可以编写*.cmd | *.bat*.ps1*.sh脚本,然后将它们放在%CMDER_ROOT%\config\profile.d文件夹中,即可将启动配置添加到Cmder。

对于完整版的 Cmder ,用户配置文件的保存路径就是影响其可移植性的最大因素。

可以这样简单理解,当用户配置文件位于 CMDER_ROOT 目录之外,此 cmder 就是不可移植的。有一种情况会让 cmder 将配置文件保存在 CMDER_ROOT 目录之外,就是下文的 “使用外部 bash 的情况”。

使用外部 Git、WSL、cygwin、babun中的bash

你可以让 Cmder 运行外部的 bash。

比如,虽然说每次启动cmder时,它都会尝试寻找用户自行安装的git,它会将其自带的git与其做比较并选择git版本高的那个运行。

在默认的 powershell 和 cmd 选项卡下是可以选择最新版本的 git;但是如果在默认的 bash 选项卡中,由于其使用的就是cmder 内部 git 的 bash 所以无法再使用外部外部git。

但是我们可以另外创建一个 任务 选项卡,来指定使用外部 git 所包含的 bash 。

可以在新任务选项卡的命令组(Commands)中使用下面的方式指定:

cmd /c "[path_to_external_env]\bin\bash --login -i" -new_console

那么我们参照上面的方式修改 git bash 路径:

cmd /c ""D:\Scoop\Applications\apps\git\2.24.0.windows.2\bin\bash" --login -i" -new_console

添加了新任务选项卡之后,还有一些建议的操作:

复制 vendor/cmder_exinit 文件到 Cygwin/Babun 相关目录 ,或者复制到 Git 的 /etc/profile.d/目录。

复制之后还需要更改该文件的扩展名,扩展名取决于您在该环境中使用的 shell;例如:

  • bash :复制到/etc/profile.d/cmder_exinit.sh
  • zsh: 复制到/etc/profile.d/cmder_exinit.zsh

并修改该文件,删除此行开头的 # (表明这是一行注释)

# CMDER_ROOT=${USERPROFILE}/cmder  # This is not required if launched from Cmder.

如果取消此注释,在运行该 选项卡时会有类似下面的提示:

Using "CMDER_ROOT" at "/c/Users/Fan Dean/cmder".
Creating user startup file: /c/Users/Fan Dean/cmder/config/user-profile.sh

如果不取消此注释,则该 bash 将跳过与 cmder 集成

 Running in ConEmu without Cmder, skipping Cmder integration.

Cmder 升级

升级分为两种情况:

  • 当前 cmder 较新: 意味着你有类似 [cmder_root]/config/user[-|_]conemu.xml 的文件。
  • 当前 cmder 较旧:意味着你没有上面的文件。

我们这里只讨论较新版本的 Cmder 如何升级到最新版本的Cmder(当前时间 2019.12,你应该时刻留意官方说明)

  1. 【可选】退出所有 Cmder 会话并重新启动 cmder.exe,这会将你现有的[cmder_root]/vendor/conemu-maximus5/conemu.xml 备份到[cmder_root]/config/user[-|_]conemu.xml.(该文件包含你使用 “Setup Tasks” 设置对话框所做的任何自定义设置)
  2. 【可选】退出所有 Cmder 会话并备份你在[Cmder root]/vendor 下手动编辑的所有文件。(所以说一般不建议修改这下面的文件,所有用户自定义都应该在 [cmder_root]/config 文件夹)
  3. 删除 [cmder_root]/vendor 文件夹
  4. 解压 cmder 压缩包到 [cmder_root]/ 目录,并选择覆盖所有文件。

如果是使用 scoop 安装 Cmder 则不需要如此麻烦(可是会失去了可移植性,但应该都不在乎),只需

1
scoop update cmder
您的鼓励是我最大的动力
alipay QR Code

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

3

目录