Cmder: 懒癌必备,从此告别记事本记命令的日子

科技资讯 投稿 8000 0 评论

Cmder: 懒癌必备,从此告别记事本记命令的日子

前言

    新建记事本
  1. 将需要记下的关键命令保存。
  2. 每次需要使用时,粘贴复制即可。

好像没什么毛病!直到遇到了 Cmder。

本文不打算讲解 Cmder 的安装和配置过程。可自行查阅,不清楚也可留言。这里重点说说 Cmder 最吸引功能: 自定义命令别名

什么是 Cmder

一句话概括:作者出于 windows 上好的命令行终端太少而创建的 Cmder。

Cmder 特色:

    可设置命令别名
  • 丰富的颜色主题(Solarized、Twilight、Ubuntu、xterm、Monokai,甚至接受自定)、可定制字体
  • 支持 tab 分页、同屏多端口(支持水平分割、垂直分割)
  • 支持自定 terminal,无论是 CMD、PowerShell、bash 都可以,还可以注入环境变量
  • 集成了 git
  • 完全便携可通过 U 盘或者云端携带。保持你的设置别名和历史记录,再也不会看丑陋的 windows 提示符了。

设置命令别名,配置好看主题,支持多开,自定义终端环境,集成 git 和方便携带。

自定义命令别名

别名定义

gl=git log --oneline --all --graph --decorate  $*

命令范围

也许大多数人概念中,既然 Cmder 是 windows 平台工具,那么支持命令当然是 windows 平台相关命令。

任何添加到系统环境变量中的工具,其相关命令都可执行。

若目标工具未配置在系统环境变量中则不能直接在 Cmder 中默认使用,需在 Cmder 中手动转到相关目录下执行。

如何添加别名

步骤一: Cmder 安装目录下打开此文件

步骤二:按如下格式添加 ① 表示自定义别名 ② 表示需配置的原始命令。

步骤三:保存修改,关闭 Cmder 客户端后再打开即可生效自定义别名命令。

效果展示

Git 场景

一次性提交给多人评审代码

gpushr = git push origin HEAD:refs/for/master%r=alice@example.com,r=bob@example.com

这样在 Cmder 中直接敲 gpushr 就行了,当然这个 gpushr 是我自己取的,您可以选择自己的别名,一个字母都行。

常规命令快捷键

gl=git log --oneline --all --graph --decorate  $*
gp=git pull
gs=git status
gdb=git branch -D $*

效果如下:

关于命令行中的 $*

如下操作含义:

    查看当前目录下分支
  1. 创建 test 分支(当然此操作也可以别名控制
  2. 列出所有分支名称
  3. 上次指定分支 test

这些自定义命令只有你自己知道,别人看不懂,学会之后人家眼里尽是你的牛逼。

如何运行脚本

可以的,你想得到,Cmder 就可以帮你做到。

熟悉安卓开发同学都知道,每次 logcat 打印进程信息,其他进程日志会扰乱当前调试进程,只想看到当前进程日志,怎么办呢?可以如下操作:

步骤一:可在 Cmder 安装目录下新建 script 文件夹放入目标 python 脚本

步骤二: 命令中通过%CMDER_ROOT%\script 指定到目标脚本。

logcatp=python "%CMDER_ROOT%\script\logcatPkg_27.py" $*

logcatPkg_27.py 代码如下:

#!/usr/bin/env python
#coding:utf-8
#This script is aimed to grep logs by application(User should input a packageName and then we look up for the process ids then separate logs by process ids.

import os
import sys

packageName=str(sys.argv[1]

def getDeviceId(:
    devices = []
    command = "adb devices -l | sed '1d'| awk '{print $1}'"
    result = os.popen(command
    deviceId = result.readline(.strip(
    if deviceId != "":
        devices.append(deviceId

    while (deviceId != "":
        deviceId = result.readline(.strip(
        if deviceId != "":
            devices.append(deviceId
    return devices;

def printPakcageLog(device, packageName:
    # print device, packageName
    print("Got device: "+device
    command = "adb -s %s shell ps | grep %s | awk '{print $2}'"%(device, packageName
    # print command
    p = os.popen(command
    ##for some applications,there are multiple processes,so we should get all the process id
    pid = p.readline(.strip(
    filters = pid
    while(pid != "":
        pid = p.readline(.strip(
        if (pid != '':
            filters = filters +  "|" + pid
            #print 'command = %s;filters=%s'%(command, filters
    if (filters != '' :
        cmd = 'adb -s %s logcat -v time | grep --color=always -E "%s" '%(device, filters
        os.system(cmd

devices = getDeviceId(;
devicesNum = len(devices;

if devicesNum < 1:
    print("Device not found."
elif devicesNum == 1:
    device = devices[0]
    printPakcageLog(device, packageName
else:
    print("Please chose a dvice, input the index of the device:"
    for i in xrange(0, devicesNum:
        print(str(i + "\t" + devices[i]
    index = raw_input(""
    printPakcageLog(devices[int(index], packageName

步骤三:执行自定义 python 命令即可

如图中,指定一个包名参数,python 脚本就会找到对应包名的 uid,然后打印所有相关进程信息。

Cmder 别名优势

$ cat .gitconfig
[alias]
    co = checkout
    ci = commit
    br = branch
    st = status
[user]
    name = Your Name
    email = your@email.com

需要说明的是,这种别名每次使用时都需要带上 git,才能真正执行,比如上述中执行 co 需要写成 git co 才可执行。

    让别名更简洁,
  1. 支持通过$*传入自定义变量更加灵活,
  2. 支持其他工具的自定义命令。

总结

本文介绍了 Cmder 命令行终端工具的特点和使用方法,重点讲解了如何自定义命令别名。通过 Git 别名配置和脚本别名配置,展示了 Cmder 别名的强大之处。最后,通过与 Git 别名对比,进一步展示了 Cmder 的优势。Cmder 自定义别名可以让命令更简洁、更灵活,提高开发效率。

编程黑板报 原创,关注我,获取我的最新文章~❤️

编程笔记 » Cmder: 懒癌必备,从此告别记事本记命令的日子

赞同 (40) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽