Project Icon

cmder

Windows 命令行环境增强工具

Cmder 是一款基于 ConEmu 的 Windows 命令行环境增强工具。它提供 Monokai 配色方案、增强的 clink 功能和自定义提示布局。Cmder 无需外部依赖,可在 U 盘或云存储中使用,支持 cmd、PowerShell 和 Bash 等多种 shell。该工具具有丰富的快捷键和自定义选项,支持上下文菜单集成、配置修改和别名添加,有效提升命令行操作效率。

Cmder

加入 Gitter 聊天 构建状态 构建状态

Cmder 是一个软件包,源于对 Windows 缺乏可用控制台模拟器的纯粹不满而创建。它基于 ConEmu,但进行了大幅配置改造,配备了 Monokai 配色方案、出色的 clink(通过 clink-completions 进一步增强)以及自定义提示符布局。

Cmder 截图

为什么使用它

Cmder 的主要优势在于其便携性。它设计为完全自包含,无需外部依赖,这使得它非常适合存储在 USB 存储器或云存储中。因此,你可以随身携带你的控制台、别名和二进制文件(如 wgetcurlgit)。

Cmder 的用户界面也设计得更加赏心悦目,你可以在这里比较 Cmder 和 ConEmu 之间的主要区别。

安装

单用户便携配置

  1. 下载最新版本
  2. 解压缩文件。注意:此路径不应为 C:\Program Files 或任何其他需要管理员权限才能修改配置文件的位置
  3. (可选)将你自己的可执行文件放入 %cmder_root%\bin 文件夹,以添加到 PATH 中。
  4. 运行 Cmder.exe

共享 Cmder 安装与非便携个人用户配置

  1. 下载最新版本
  2. 将文件解压到共享位置。
  3. (可选)将你自己的可执行文件和自定义应用程序文件夹放入 %cmder_root%\bin。参见:bin/README.md
    • 此文件夹默认会被添加到你的 PATH 中。
    • 参见 'Command Line Arguments for init.bat' 表中的 /max_depth [1-5] 以递归添加子目录。
  4. (可选)将你自己的自定义应用程序文件夹放入 %cmder_root%\opt。参见:opt/README.md
    • 此文件夹不会被添加到你的 PATH 中,因此你可以完全控制要添加的内容。
  5. 使用 /C 命令行参数运行 Cmder.exe。例如:cmder.exe /C %userprofile%\cmder_config
    • 如果缺少以下目录结构,这将创建它。

      c:\users\[username]\cmder_config
      ├───bin
      ├───config
      │   └───profile.d
      └───opt
      
  • (可选)将你自己的可执行文件和自定义应用程序文件夹放入 %userprofile%\cmder_config\bin
    • 此文件夹默认会被添加到你的 PATH 中。
    • 参见 'Command Line Arguments for init.bat' 表中的 /max_depth [1-5] 以递归添加子目录。
  • (可选)将你自己的自定义应用程序文件夹放入 %user_profile%\cmder_config\opt
    • 此文件夹不会被添加到你的 PATH 中,因此你可以完全控制要添加的内容。
  • 共享安装和个人用户配置位置都可以包含完整的初始化和 profile.d 脚本集,实现共享配置与用户覆盖。详见下文。

Cmder.exe 命令行参数

参数描述
/C [user_root_path]个人用户 Cmder 根文件夹。例如:%userprofile%\cmder_config
/M使用 conemu-%computername%.xml 存储 ConEmu 设置,而不是 user_conemu.xml
/REGISTER [ALL, USER]注册 Windows Shell 菜单快捷方式。
/UNREGISTER [ALL, USER]注销 Windows Shell 菜单快捷方式。
/SINGLE以单一模式启动 Cmder。
/START [start_path]启动时的文件夹路径。
/TASK [task_name]启动后要执行的任务。
/X [ConEmu extras pars]向 ConEmu 传递参数

上下文菜单集成

如果你已经体验过 Cmder 并想将其安装在更永久的位置;

在选定文件夹中打开 Cmder 的快捷方式

  1. 以管理员身份打开终端
  2. 导航到您放置Cmder的目录
  3. 执行 .\cmder.exe /REGISTER ALL 如果您收到"访问被拒绝"的消息,请确保您在管理员提示符下执行该命令。

在文件资源管理器窗口中,右键单击目录内部或目录本身,即可在上下文菜单中看到"Cmder Here"选项。

键盘快捷键

标签页操作

  • Ctrl + T : 新建标签页对话框(也许您想以管理员身份打开cmd?)
  • Ctrl + W : 关闭标签页
  • Ctrl + D : 关闭标签页(如果在空命令行上按下)
  • Shift + Alt + #数字 : 快速新建标签页:1 - CMD,2 - PowerShell
  • Ctrl + Tab : 切换到下一个标签页
  • Ctrl + Shift + Tab : 切换到上一个标签页
  • Ctrl + #数字 : 切换到第#个标签页
  • Alt + Enter: 全屏

Shell操作

  • Ctrl + Alt + U : 在目录结构中向上移动(非常实用的功能!)
  • EndHomeCtrl : 像在Windows中一样遍历文本
  • Ctrl + R : 历史记录搜索
  • Shift + 鼠标 : 从缓冲区选择并复制文本

(一些快捷键尚未记录,但它们确实存在 - 请在此处记录它们)

功能特性

在一个窗口中使用标签页访问多个shell

您可以打开多个标签页,每个标签页包含以下一种shell:

任务Shell描述
Cmdercmd.exe增强的Windows cmd.exe shell,包含Git、Git感知提示符、Clink(GNU Readline)和别名。
管理员Cmdercmd.exe管理员权限的Windows cmd.exe Cmder shell。
PowerShellpowershell.exe增强的Windows PowerShell,包含Git和Git感知提示符。
管理员PowerShellpowershell.exe管理员权限的Windows powershell.exe Cmder shell。
Bashbash.exe在Windows上运行的类Unix/Linux bash shell。
管理员Bashbash.exe管理员权限的在Windows上运行的类Unix/Linux bash shell。
Minttybash.exe在Windows上运行的类Unix/Linux bash shell。请参阅下文了解Mintty配置的差异。
管理员Minttybash.exe管理员权限的在Windows上运行的类Unix/Linux bash shell。请参阅下文了解Mintty配置的差异。

Cmder、PowerShell和Bash标签页都在Windows Console API之上运行,在Cmder中的工作方式与您预期的一样,可以使用ConEmu的配色方案、按键绑定和ConEmu设置对话框中定义的其他设置。

注意: 只有完整版的Cmder预装了bash,使用的是捆绑的git-for-windows安装。在Cmder迷你版上,预配置的Bash标签页可能无法正常工作,需要额外配置。

但是,您可以选择使用外部安装的bash,比如Microsoft的Linux子系统(称为WSL)或提供Windows上POSIX支持的Cygwin项目。

注意: Mintty标签页使用名为'mintty'的程序作为终端模拟器,它不基于Windows Console API,而是由ConEmu以图形方式渲染。Mintty与其他标签页的不同之处在于它支持xterm/xterm-256color TERM类型,并且不适用于ConEmu的设置,如配色方案和按键绑定。因此,预期会有一些功能上的差异,例如Cmder无法对其应用系统范围的配置。

因此,mintty特定的配置是通过[%USERPROFILE%|$HOME]/.minttyrc文件完成的。您可以在这里阅读更多关于Mintty及其配置文件的信息。

为mintty设置Cmder便携式终端颜色的示例:

从bash/mintty shell中:

cd $CMDER_ROOT/vendor
git clone https://github.com/karlin/mintty-colors-solarized.git
cd mintty-colors-solarized/
echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user_profile.sh

您可以在这里找到一些与Cmder匹配的mintty Monokai配色方案。

更改Cmder默认cmd.exe提示符配置文件

Cmder默认的cmd::Cmdershell提示符使用Clink进行自定义,可以通过编辑以下两个位置之一的配置文件进行配置:

  • 单用户便携配置 %CMDER_ROOT%\config\cmder_prompt_config.lua
  • 共享Cmder安装的非便携个人用户配置 %CMDER_USER_CONFIG%\cmder_prompt_config.lua

如果您的Cmder设置中没有此文件,请从 %CMDER_ROOT%\vendor\cmder_prompt_config.lua.default 创建它。

自定义选项包括:

  • 颜色
  • 单行/多行
  • 完整路径/仅文件夹
  • 在提示符开头添加 [用户]@[主机]
  • ~ 表示主目录
  • λ 符号

每个设置的文档都在文件中。

使用任务参数更改Cmder默认cmd.exe Shell的启动行为

  1. Win + Alt + T

  2. 点击以下之一:

    • 1. {cmd::Cmder as Admin}
    • 2. {cmd::Cmder}
  3. 在指定位置添加命令行参数:

    注意:请留意引号!

    cmd /s /k ""%ConEmuDir%\..\init.bat" [在此处添加参数]"
    
init.bat的命令行参数
参数描述默认值
/c [用户cmder根目录]为"以管理员身份运行Cmder"会话启用用户bin和config文件夹,因为环境不共享。未设置
/d启用调试输出。未设置
/f启用Cmder快速初始化模式。这会禁用某些功能,详情请参见pull request #1492未设置
/t启用Cmder计时初始化模式。这会显示运行初始化脚本所需的时间。未设置
/git_install_root [文件路径]用户指定的Git安装根路径。%CMDER_ROOT%\vendor\Git-for-Windows
/home [主文件夹]用户指定的文件夹路径,用于设置%HOME%环境变量。%userprofile%
/max_depth [1-5]定义为%cmder_root%\bin%cmder_user_bin%添加到路径时的最大递归深度。1
/nix_tools [0-2]定义如何将*nix工具添加到路径。首选Windows工具:1,首选*nix工具:2,%PATH%中不包含/usr/bin:01
/svn_ssh [ssh.exe路径]定义%SVN_SSH%,以便我们可以对ssh svn仓库使用git svn。%GIT_INSTALL_ROOT%\bin\ssh.exe
/user_aliases [文件路径]指向用户别名的文件路径。%CMDER_ROOT%\config\user_aliases.cmd
/v启用详细输出。未设置
(自定义参数)cexec处理的用户定义参数。输入cexec /?获取更多用法。未设置

Cmder Shell用户配置

使用Cmder特定的shell配置文件可以实现单用户便携配置。编辑以下文件以添加您自己的配置:

ShellCmder便携用户配置
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添加启动配置。

ShellCmder Profile.d脚本
Cmder%CMDER_ROOT%\config\profile.d\*.bat和*.cmd
PowerShell$ENV:CMDER_ROOT\config\profile.d\*.ps1
Bash/Mintty$CMDER_ROOT/config/profile.d/*.sh

Git状态退出选项

要全局禁用Cmder提示符的git状态,请在~/.gitconfig中添加以下内容,或在单个仓库的[repo]/.git/config中添加,然后启动新会话。

注意:此配置不可移植

[cmder]
  status = false      # 为"所有"Cmder支持的shell退出Git状态。
  cmdstatus = false   # 为"Cmd.exe"shell退出Git状态。
  psstatus = false    # 为"Powershell.exe"和"Pwsh.exe"shell退出Git状态。
  shstatus = false    # 为"bash.exe"shell退出Git状态。

别名

Cmder(Cmd.exe)别名

你可以使用类似 alias name=command 的命令为 cmd.exe 会话定义简单的别名。Cmd.exe 别名支持通过 $1-9$* 特殊字符使用可选参数,因此像 vi=vim.exe $* 这样的别名,当输入 vi [filename] 时,将在 vim.exe 中打开 [filename]

Cmd.exe 别名也可以更复杂。有关 cmd.exe 复杂别名/宏的更多详细信息,请参见:DOSKEY.EXE 文档

使用 alias.bat 命令定义的别名将自动保存在 %CMDER_ROOT%\config\user_aliases.cmd 文件中。

要使别名和/或任何其他配置设置永久生效,请将其添加到以下文件之一:

注意:这些文件按以下顺序由 $CMDER_ROOT/vendor/init.bat 加载。存储在 %CMDER_ROOT% 中的任何内容都将成为便携设置,并会随 Cmder 转移到另一台机器。

  • %CMDER_ROOT%\config\profile.d\*.cmd\*.bat
  • %CMDER_ROOT%\config\user_aliases.cmd
  • %CMDER_ROOT%\config\user_profile.cmd

Bash.exe|Mintty.exe 别名

Bash shell 原生支持带可选参数的简单和复杂别名,所以它们的工作方式略有不同。输入 alias name=command 将仅为当前运行的会话创建别名。

要使别名和/或任何其他配置设置永久生效,请将其添加到以下文件之一:

注意:这些文件按以下顺序由 $CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh 加载。存储在 $CMDER_ROOT 中的任何内容都将成为便携设置,并会随 Cmder 转移到另一台机器。

  • $CMDER_ROOT/config/profile.d/*.sh
  • $CMDER_ROOT/config/user_profile.sh
  • $HOME/.bashrc

如果你将 bash 别名添加到 $CMDER_ROOT/config/user_profile.sh,它们将是便携的,并在你将 Cmder 文件夹复制到另一台机器时随之转移。在 $HOME/.bashrc 中定义的别名不具有便携性。

PowerShell.exe 别名

PowerShell 原生支持简单的别名,例如 [new-alias | set-alias] alias command,因此在 PowerShell 会话中不支持带可选参数的复杂别名。输入 get-help [new-alias|set-alias] -full 获取有关 PowerShell 别名的帮助。

要使别名和/或任何其他配置设置永久生效,请将其添加到以下文件之一:

注意:这些文件按以下顺序由 $ENV:CMDER_ROOT\vendor\user_profile.ps1 加载。存储在 $ENV:CMDER_ROOT 中的任何内容都将成为便携设置,并会随 Cmder 转移到另一台机器。

  • $ENV:CMDER_ROOT\config\profile.d\*.ps1
  • $ENV:CMDER_ROOT\config\user_profile.ps1

SSH 代理

要启动捆绑的 SSH 代理,只需调用 start-ssh-agent,它位于 vendor/git-for-windows/cmd 文件夹中。

如果你想在启动时运行 SSH 代理,请在 %CMDER_ROOT%/config/user_profile.cmd 中包含 @call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd" 这一行(通常只需取消注释)。

捆绑的 Git

Cmder 默认附带一个捆绑的 Git 安装。每次启动 Cmder 时,都会尝试定位任何其他用户提供的 Git 二进制文件。在找到 git.exe 二进制文件后,Cmder 会通过执行它来进一步比较其版本与捆绑版本。仅当捆绑的 git.exe 二进制文件比用户安装的版本更新时才使用它。

你可以通过将你喜欢的 Git 版本的路径包含在 %PATH% 环境变量中来使用它。此外,Cmder 的 Mini 版本(在下载页面上可找到)不包含任何捆绑的 Git 二进制文件。

在 Cmder 中使用外部 Cygwin/Babun、MSys2、WSL 或 Git for Windows SDK

你可以按照以下说明在 Cmder 中外部运行 bash(Linux、macOS 和 GNU/Hurd 上使用的默认 shell):

  1. 通过按 Win + Alt + T 设置新任务。
  2. 点击 + 按钮添加任务。
  3. 在顶部文本框中命名新任务。
  4. 提供任务参数,这是可选的。
  5. 命令 文本框中添加 cmd /c "[path_to_external_env]\bin\bash --login -i" -new_console

推荐的可选步骤:

vendor/cmder_exinit 文件复制到 Cygwin/Babun、MSys2 或 Git for Windows SDK 环境的 /etc/profile.d/ 文件夹中,以使用 $CMDER_ROOT/config 文件夹中的便携设置。

注意:如果 init 脚本包含 profile.d,MinGW 可能也能工作,但这尚未经过测试。

目标文件扩展名取决于你在该环境中使用的 shell。例如:

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

取消注释并编辑脚本中的以下行,以便在从 Cmder 外部启动时也使用 Cmder 配置。

# CMDER_ROOT=${USERPROFILE}/cmder  # 如果从 Cmder 启动,则不需要此行。

使用 init.bat 自定义参数来自定义用户会话。

你可以向 init.bat 传递自定义参数,并在 user_profile.cmd 中使用 cexec.cmd 来评估这些参数,然后根据特定标志是否被检测到来执行命令。

init.bat 为在你的配置文件脚本中使用 cexec.cmd 创建了两个快捷方式。

%ccall% - 评估标志,如果找到则运行命令,然后返回调用脚本并继续执行。

ccall=call C:\Users\user\cmderdev\vendor\bin\cexec.cmd

示例:%ccall% /startnotepad start notepad.exe

%cexec% - 评估标志,如果找到则运行命令,不返回调用脚本。

cexec=C:\Users\user\cmderdev\vendor\bin\cexec.cmd

示例:%cexec% /startnotepad start notepad.exe

当你有多个任务要执行 cmder 并需要根据所选任务不同地初始化会话时,这很有用。

要在启动特定 cmder 任务时有条件地启动 notepad.exe

  • win+alt+t

  • 点击 + 添加新任务。

  • Commands 块中添加以下内容:

    
    cmd.exe /k ""%ConEmuDir%\..\init.bat" /startnotepad"
    
    
  • 在你的 %cmder_root%\config\user_profile.cmd 中添加以下内容:

    
    %ccall% "/startNotepad" "start" "notepad.exe"`
    
    

要查看 cexec 的详细用法,在 Cmder 中输入 cexec /?

将 Cmder 与 Windows TerminalVS Code 和你喜欢的 IDE 集成

Cmder 默认附带一个作为底层终端模拟器的 ConEmu 安装,如此处所述。

然而,Cmder 实际上可以在各种其他终端模拟器中运行,甚至可以集成到 IDE 中。假设你有最新版本的 Cmder,请按照以下说明让 Cmder 与你自己的终端模拟器一起工作。

有关如何将 Cmder 与你的 IDE 集成的说明,请阅读我们的 Wiki 部分

升级

升级 Cmder 的过程取决于你当前运行的版本/构建。

如果你有 [cmder_root]/config/user[-|_]conemu.xml,你正在运行较新版本的 Cmder,请按照以下流程操作:

  1. 退出所有 Cmder 会话并重新启动 [cmder_root]/cmder.exe,这会将你现有的 [cmder_root]/vendor/conemu-maximus5/conemu.xml 备份到 [cmder_root]/config/user[-|_]conemu.xml

    • [cmder_root]/config/user[-|_]conemu.xml 包含你使用"设置任务"设置对话框进行的任何自定义设置。
  2. 退出所有 Cmder 会话,备份你在 [cmder_root]/vendor 下手动编辑的任何文件。

    • 不建议编辑 [cmder_root]/vendor 下的文件,因为你需要在任何升级后重新应用这些更改。所有用户自定义应放在 [cmder_root]/config 文件夹中。
  3. 删除 [cmder_root]/vendor 文件夹。

  4. 将新的 cmder.zipcmder_mini.zip 解压到 [cmder_root]/,提示时覆盖所有文件。

如果你没有 [cmder_root]/config/user[-|_]conemu.xml,你正在运行旧版本的 cmder,请按照以下流程操作:

  1. 退出所有 Cmder 会话,将 [cmder_root]/vendor/conemu-maximus5/conemu.xml 备份到 [cmder_root]/config/user[-|_]conemu.xml

  2. 备份你在 [cmder_root]/vendor 下手动编辑的任何文件。

    • 不建议编辑 [cmder_root]/vendor 下的文件,因为你需要在任何升级后重新应用这些更改。所有用户自定义应放在 [cmder_root]/config 文件夹中。
  3. 删除 [cmder_root]/vendor 文件夹。

  4. 将新的 cmder.zipcmder_mini.zip 解压到 [cmder_root]/,提示时覆盖所有文件。

当前开发版本

你可以通过以下链接访问 AppVeyor 下载当前开发分支的构建:

AppVeyor

可以从以下链接下载 GitHub Actions 的最新构建:

Build Status

许可证

所有包含的软件都附带自己的许可证

MIT 许可证 (MIT)

版权所有 (c) 2016 Samuel Vasko 特此授予任何获得本软件及相关文档文件(以下简称"软件")副本的人免费的许可,可以不受限制地处理本软件,包括但不限于使用、复制、修改、合并、出版、分发、再许可和/或销售本软件的副本,并允许向其提供本软件的人这样做,但须遵守以下条件:

上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。

本软件按"原样"提供,不提供任何形式的明示或暗示的保证,包括但不限于对适销性、特定用途适用性和非侵权性的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论是在合同诉讼、侵权行为或其他方面,由本软件或本软件的使用或其他交易引起、由本软件引起或与之相关。

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号