Tools - Cmder

Cmder的文章很多,这里主要讲了作为一个程序员,在使用Cmder时会遇到的问题;比如ssh agent的配置,如何使用cmder连接Linux子系统(WSL)等问题。

Cmder = Cmd + PowerShell + Git for Windows + “bash”

安装

在官网Cmder下载cmder压缩包,解压即可。这里注意解压路径不能位于需要管理员访问权限的地方。

添加环境变量:

  • 新建环境变量%cmder_root% 将其值设置为 cmder.exe所在路径,再将%cmder_root%添加到系统的PATH环境变量中。

  • 将cmder添加到文件夹右键菜单:
    以管理员权限打开 cmd ;切换到 cmder 的解压路径;执行 .\cmder.exe /REGISTER ALL,即可添加。

  • 为cmder创建桌面快捷方式

常用操作

中文配置

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

选择 Startup -> Environment 在这里添加下面的语句:

set LANG=zh_CN.UTF-8

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

cmd模式和bash模式

注意区别两者。主要是有时会在cmd模式下输入bash相关的命令格式,导致相关错误。

比如:怎么切换不了路径?

  • 如果是用默认的bash, 可以直接 cd /d/myworkstation
  • 如果用的是cmd模式, 需要先输入 d:来切换到d盘

粘贴复制

bash模式:
复制:只需选中一段文字那么该段文字就会被复制到剪贴板
粘贴:直接鼠标右键即可粘贴,或者使用 Ctrl + v 进行粘贴.
cmd模式:
复制、粘贴 同cmd

锁定视窗

锁定视窗(点击右下角的?) ,可以让视窗无法再输入。

alias别名机制

Cmder增加了alias功能: 它让你用短短的指令执行一些常见但指令超长又难以记忆的语法。
在其控制台输入alias可以查看已有别名。
发现有分别应用于 cmd,bash,Power Shell的alias。

  1. cmd aliases:
    %CMDER_ROOT%\config\user-aliases.cmd中添加cmd aliases它仅用于 cmd 命令
    示例:

    ls=ls --show-control-chars -F --color $*
    pwd=cd
    clear=cls
    

    user-aliases.cmd: aliases in cmd; called from vendor\init.bat; autocreated from
    vendor\user-aliases.cmd.example.
    参考:cmder/README.md at master · cmderdev/cmder

  2. Bash/Mintty aliases:
    对于bash,其配置文件的加载顺序是:

    $CMDER_ROOT/config/profile.d/*.sh
    $CMDER_ROOT/config/user-profile.sh
    $HOME/.bashrc
    

    所以我们可以在上面的文件中添加 alias 即可。

    几个示例:

    alias l.='ls -d .* --color=tty'
    alias ll='ls -l --color=tty'
    alias ls='ls --color=tty'
    

    由于 Git for Windows 会自动创建 $HOME/.bash_profile,如果此时创建$HOME/.bashrc文件运行cmder时 cmder会提示有冲突,此时可以创建一个$HOME/.profile(也行)并在该文件中添加别名。

    原本是想添加ssh-agent bash相关的别名的,但是一旦执行此命令后启动了一个子shell,在此子shell里不可以使用别名。可参考下文的ssh agent部分。(这里属于ssh代理相关问题)

  3. Power Shell aliases:
    直接使用alias命令添加或在下面的文件中添加:

    '$ENV:CMDER_ROOT\config\profile.d\*.ps1'
    '$ENV:CMDER_ROOT\config\user-profile.ps1'
    

Cmder启动选项

在这里插入图片描述
相关介绍

  • 在Startup处设置cmder启动时需要执行的任务
    默认选择的启动项应该是 {cmd::Cmder} 这个命名任务,我们可以更改成其它的命令任务或者直接切换到其它的启动项。
    当选中某个命名任务时,下面的 "Selected task contents(选中的任务内容)"下会显示该任务执行的具体内容

    这里cmd::Cmder前面的cmd标明它是cmd模式,我们可以看到还有 bash 和 PowerShell等模式

  • 我们也可以在startup -> tasks处更改和添加 “ Specified named task” 下的命名任务。

自定义启动目录

下面就来克隆现有的{cmd::Cmder}添加一个设置自定义的启动目录的任务(Task):

在这里插入图片描述

设置启动目录
在这里插入图片描述

  • 任务参数:下面来看 Task parameters命令参数,阅读实例可知参数 /icon指定图标位置,/dir 指定启动目录,所以我们可以添加下面的参数:/icon "%CMDER_ROOT%\icons\cmder.ico" /dir "C:\Users\Fan"
  • 记得在 startup 的“ Specified named task” 处选择 cmd::diy1
  • 保存设置,退出,重新打开cmder查看效果

具体配置和使用可见:cmder: Lovely console emulator package for Windows 。

cmder连接Linux子系统(WSL)

Windows Subsystem for Linux(简称WSL)。

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

连接方式:

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

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

$ ls /mnt
c  d  e  f  g

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

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

WSL的安装见: Install the Linux Subsystem on Windows 10 - Microsoft Docs

其它问题

中文乱码

Startup -> Environment 中添加set LANG=zh_CN.UTF-8

如果打开的文本文件的编码方式不是 utf-8 那么在cmder中查看时会乱码,这种情况需要转换该文件的编码方式为 utf-8

查看git log时乱码

Startup -> Environment 中添加 set LANG=zh_CN.UTF-8
然后执行下面的命令,来配置git log的输出

git config --global i18n.logoutputencoding utf-8

或者在 .gitconfig 文件中配置
更多乱码问题见: cmder中文乱码 - 优快云博客

ssh agent

每次想要向远程git仓库推送更新时,都需要先启动ssh代理,再加载(使用ssh-add)私钥,否则就报错而感到很烦。那么可以参考下面的解决方法:

  • cmd 模式中:
    官方文档中有说在 cmd 模式中如何处理 ssh agent的问题:

    To start the vendored SSH agent simply call start-ssh-agent, which is in the vendor/git-for-windows/cmd folder.
    If you want to run SSH agent on startup, include the line @call "%GIT_INSTALL_ROOT%/cmd/start-ssh- agent.cmd" in %CMDER_ROOT%/config/user-profile.cmd (usually just uncomment it).

    由于开启后不喜欢那种界面,所以我使用 bash模式

  • bash模式中:
    官方文档中没有说如何在bash模式中处理ssh-agent的问题,但我们可以这样解决。
    $HOME/.bashrc$HOME/.profilec文件中添加如下内容:

    # 启动一个 ssh-agent 进程 
    eval "$(ssh-agent -s)"
    # 这里同时添加了两个私钥
    ssh-add "C:/Users/Fan/.ssh/one_rsa" "C:/Users/Fan/.ssh/two_id_rsa"
    # 清除上面命令的输出内容
    clear
    

ssh-agent 介绍可参考: SSH相关命令 中的ssh-agent部分

参考

看啥都不如官方文档管用:

Readme:cmder/README.md at master · cmderdev/cmder
wiki:Home · cmderdev/cmder Wiki

原文:

作者:faner
链接:https://www.jianshu.com/p/552b7f0bb18c
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值