End

Cmder Shell 命令行工具 终端

本文地址


目录

Shell Cmder bash 终端

Portable 便携的 console emulator for Windows.

下载的时候,会有两个版本,唯一的差别在于有没有内建git工具。

介绍

Cmder is a software package on Windows. It is based on ConEmu with major config overhaul 重大配置改革, comes with a Monokai color scheme 配色方案, amazing clink (further enhanced 进一步增强 by clink-completions) and a custom prompt layout 自定义提示布局.

主要特点

  • 便携,没有外部依赖,可移植,解压即可用:The main advantage of Cmder is portability
  • 良好的用户界面:丰富的颜色主题(Solarized、Twilight、Ubuntu、xterm、Monokai,可自定义)、可定制字体
  • 自带gitlscurl等命令
  • 完全支持中文
  • 可设置命令别名
  • 支持tab分页、同屏多端口(支持水平分割、垂直分割)
  • 支持自定terminal,无论是CMD、PowerShell、bash都可以,还可以注入环境变量

常用快捷键

如果想使用自定义的快捷键,只需将\vendor\conemu-maximus5\ConEmu.xml中的HotKeys的部分覆盖即可。

基本功能

  • Ctrl + T双击底部栏:新建页签
  • Ctrl + W鼠标中键点击 Tab:关闭页签,建议把Ctrl+W的功能改为删除光标左侧的单词
  • Ctrl + numCtrl + Tab:切换页签
  • Alt + enter:切换全屏
  • Ctrl + R:历史命令搜索,仅部分 shell 中支持
  • Win + Alt + P:设置
  • Alt + F4:关闭所有页签
  • Tab:自动路径补全

输入操作

  • 一个单词一个单词向左/右移动光标:Ctrl + 左右箭头
  • 一个字符一个字符向左/右移动光标:左右箭头
  • 移动光标到整条命令的起始/结束位置:HOME 或 END【重要】
  • 删除光标左/右侧的所有内容:Ctrl + U/K【重要】
  • 删除光标左侧的单词:Ctrl + W【重要】(默认功能为关闭页签,需要自定义)
  • 删除光标右侧的单词:Alt + D【重要】
  • 删除光标左/右侧的字符:backspace 或 DEL

终端设置

配置文件存放在安装目录下的\vendor\conemu-maximus5\ConEmu.xml中,可拿现成的文件覆盖

如果只想使用自定义的快捷键,只需将HotKeys的部分覆盖即可。

常用设置

  • 通用-界面语言:可以设置中文语言,建议禁用自动更新(因为网络太差了)
  • 通用-字体:
    • 字符集选择默认的ANSI
    • 不要勾选Compress long string to fit space,否则中文显示可能有问题
  • 通用-背景:可以设置背景图片,或者设置透明度
  • 启动-启动选项:
    • 指定命名任务时,可以选择默认启动的终端类型,如bash、cmd、powershell
    • 建议勾选自动保存/恢复打开的标签页,不管关闭之前打开了几个 Tab,都能完全恢复
  • 功能特性-颜色-方案:可以选择颜色方案,如果觉得不合适也支持自定义

添加到右键菜单

管理员身份打开 Cmder,运行以下命令,然后在文件夹上右键点击Cmder Here,就能在 Cmder 里进入该目录。

cmder /register all    //注册
cmder /unregister all  //取消注册

config 目录介绍

  • /profile.d/:用于存放在启动时执行的脚本文件
  • clink_settings
  • user_aliases.cmd:仅用于定义cmd的别名,不可以在启动时执行命令
  • user_profile.cmd:可用于定义cmd的别名,也可以在启动时执行命令
  • user_profile.ps1:可用于定义PowerShell的别名,也可以在启动时执行命令
  • user_profile.sh:可用于定义bash的别名,也可以在启动时执行命令
  • user-ConEmu.xml
echo %CMDER_ROOT%       # 打印 Cmder 的路径【C:\_dev\_Tools\cmder\cmder1.3.18】
echo %ConEmuDir%        # 打印 ConEmu 的路径【...\cmder1.3.18\vendor\conemu-maximus5】
echo %ConEmuBaseDir%    # 打印 ConEmu 的路径【...\cmder1.3.18\vendor\conemu-maximus5\ConEmu】

命令行参数介绍

Argument Description
/C [user_root_path] 设置 Cmder 的根目录
/M ConEmu 存储设置
/SINGLE 以单模式启动 Cmder
/START [start_path] 设置启动的初始路径
/TASK [task_name] 设置启动的任务
/X [ConEmu extras params] 将参数转发给 ConEmu
/REGISTER [ALL, USER] 注册右键快捷方式【常用】
/UNREGISTER [ALL, USER] 取消注册右键快捷方式【常用】

集成到其他终端中

Cmder 可与 Windows TerminalAndroid StudioVS CodeCmdBash 等 terminal/IDEs 集成,详见 wiki

集成到 Windows Terminal

  • 首先需要定义 CMDER_ROOT 用户变量
  • 打开 Windows Terminal 的设置文件 settings.json,在profiles中的list中添加如下内容
    {
          "guid": "{00000000-0000-0000-ba54-000000000132}",
          "name": "Cmder",
          "commandline": "cmd.exe /k %cmder_root%/vendor/init.bat",
          "icon": "%cmder_root%/icons/cmder.ico",
          "hidden": false
    },
  • 可以通过修改defaultProfile(值可以是name,例如"Cmder"),将 Cmder 作为 Windows Terminal 启动时的默认终端
  • 可以通过修改colorScheme(值来自于"schemes": [...],例如"Monokai Cmder"),将 Cmder 的配色方案改为 Monokai-Cmder
  • 可以通过修改commandline,将在 Windows Terminal 中启动 Cmder 时的默认终端改为 Powershell

集成到 Android Studio

  • 在 Cmder 安装目录下新建一个 cmder_shell.bat 文件,内容如下:
@echo off
@cmd.exe /k %~dp0\vendor\init.bat
  • 在 IDE 中按 Ctrl + Alt + S 打开设置页,并在搜索框中键入terminal
  • Shell path 中,将 cmd.exe 更改为[cmder 安装目录]\cmder_shell.bat

自定义别名与自定义脚本

之所以能自定义别名,或者能在启动时执行自定义脚本,是因为在启动时都会首先执行脚本%CMDER_ROOT%/vendor/init.bat,所以我们也可以通过修改init.bat中的逻辑做很多高级自定义的事情。

可将自己的可执行文件放入安装目录下的bin文件夹中,bin 文件夹将在运行时注入到 PATH 环境变量中。

cmd 别名

  • 可以通过alias name=command定义并保存别名,例如alias user=echo %HOME%
  • 定义的别名将保存在%CMDER_ROOT%\config\user_aliases.cmd文件中,也可以直接修改此文件
  • 可以通过$1-9$*获取传递的参数,其中$1表示第一个参数
  • 可以通过%NAME%引用当前环境的或自定义的变量/常量

有关 Cmd.exe 复杂别名/宏的更多详细信息,请参阅 微软 DOSKEY 文档

在启动 cmd 时会自动执行以下脚本文件:

  • %CMDER_ROOT%\config\user_profile.cmd
  • %CMDER_ROOT%\config\profile.d\*.cmd
  • %CMDER_ROOT%\config\profile.d\*.bat
  • 注意:%CMDER_ROOT%\config\user_aliases.cmd只能用来定义别名,而不能用来存放要执行的命令

bash 别名

  • 可以通过alias name=command定义别名,例如alias user='echo $HOME',但仅在当前会话有效,而不会持久化
  • 可以通过在$CMDER_ROOT/config/user_profile.sh中添加上述语句来持久化别名
  • 可以通过$NAME${NAME}引用当前环境的或自定义的变量/常量

在启动 bash 时会自动执行以下脚本文件(当然也可以将别名定义在以下任一文件中):

  • $CMDER_ROOT/config/user_profile.sh
  • $CMDER_ROOT/config/profile.d/*.sh
  • $HOME/.bashrc ------ 注意,这个会影响所有的 bash 终端

PowerShell 别名

  • 可以通过[new-alias | set-alias] alias command定义别名,例如new-alias e explorer(只支持将命令简化,不支持参数)
  • 可以通过Get-Alias获取当前支持的别名,包含内置的别名,例如pwd -> Get-Location
  • 可以通过Get-Alias alias获取别名alias的定义,例如Get-Alias pwd
  • 在 PowerShell 中引用 变量/常量 的方式是$NAME$ENV:NAME

PowerShell 原生具有简单别名的支持,因此 PowerShell 会话中不支持带有可选参数的复杂别名。

在启动 PowerShell 时会自动执行以下脚本文件(当然也可以将别名定义在以下任一文件中):

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

2019-8-25

posted @ 2019-08-25 15:52  白乾涛  阅读(2052)  评论(1编辑  收藏  举报