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: readme 和 mintty
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,你应该时刻留意官方说明)
- 【可选】退出所有 Cmder 会话并重新启动 cmder.exe,这会将你现有的
[cmder_root]/vendor/conemu-maximus5/conemu.xml
备份到[cmder_root]/config/user[-|_]conemu.xml
.(该文件包含你使用 “Setup Tasks” 设置对话框所做的任何自定义设置) - 【可选】退出所有 Cmder 会话并备份你在
[Cmder root]/vendor
下手动编辑的所有文件。(所以说一般不建议修改这下面的文件,所有用户自定义都应该在[cmder_root]/config
文件夹) - 删除
[cmder_root]/vendor
文件夹 - 解压 cmder 压缩包到
[cmder_root]/
目录,并选择覆盖所有文件。
如果是使用 scoop 安装 Cmder 则不需要如此麻烦(可是会失去了可移植性,但应该都不在乎),只需
|
|