乐趣区

关于编辑器:Cmder-懒癌必备从此告别记事本记命令的日子

前言

平时开发中遇到这样那样的命令须要记下来,个别做法是这样。

  1. 新建记事本
  2. 将须要记下的要害命令保留。
  3. 每次须要应用时,粘贴复制即可。

如同没什么故障!直到遇到了 Cmder。。。

当看到共事剖析问题时在 Cmder 里命令快捷键刷刷一顿操作,感觉挺厉害滴。感觉这共事技术好牛,快捷键用这么好。起初才晓得是 Cmder 用的溜,给人感觉很厉害。从某种意义上说,Cmder 几乎是技术人装逼必备神器。

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

解说自定义命令别名之前,先简略介绍下 Cmder。

什么是 Cmder

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

Cmder 是 windows 上一款命令行终端工具。

Cmder 特色:

  • 可设置命令别名
  • 丰盛的色彩主题(Solarized、Twilight、Ubuntu、xterm、Monokai,甚至承受自定)、可定制字体
  • 反对 tab 分页、同屏多端口(反对程度宰割、垂直宰割)
  • 反对自定 terminal,无论是 CMD、PowerShell、bash 都能够,还能够注入环境变量
  • 集成了 git
  • 齐全便携可通过 U 盘或者云端携带。放弃你的设置别名和历史记录,再也不会看俊俏的 windows 提示符了。

Cmder 特色总结:设置命令别名,配置难看主题,反对多开,自定义终端环境,集成 git 和不便携带。

自定义命令别名

别名定义

很长的命令能够用很简略几个字母示意。如下,只有在 Cmder 中敲 gl 就可代替前面一连串命令。

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

命令范畴

兴许大多数人概念中,既然 Cmder 是 windows 平台工具,那么反对命令当然是 windows 平台相干命令。

其实 Cmder 可表示命令范畴很广,任何增加到零碎环境变量中的工具,其相干命令都可执行

如下图中,windows 零碎环境变量中配置了 svn 和 jdk。则 java 和 svn 相干命令默认都能够在 Cmder 命令行中可执行。

若指标工具未配置在零碎环境变量中则不能间接在 Cmder 中默认应用,需在 Cmder 中手动转到相干目录下执行。

个别开发类软件比方 python、java、git 环境配置时都须要增加到零碎环境变量中。

如何增加别名

步骤一: 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. 查看当前目录下分支
  2. 创立 test 分支(当然此操作也能够别名管制)
  3. 列出所有分支名称
  4. 上次指定分支 test

这里 gdb=git branch -D $* 而 test 通过 $* 传入命令中 最终 gdb test = git branch -D test。

就问你 6 不 6。

这些自定义命令只有你本人晓得,他人看不懂,学会之后人家眼里尽是你的牛逼。

如何运行脚本

有人说我得了懒癌。每次切换到 python 脚本目录再运行很麻烦。想在 Cmder 中用别名运行一个 python 脚本,

能够的,你想得到,Cmder 就能够帮你做到。

举个例子:

相熟安卓开发同学都晓得,每次 logcat 打印过程信息,其余过程日志会扰乱以后调试过程,只想看到以后过程日志,怎么办呢?能够如下操作:

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

其中 logcatPkg_27.py 能够帮你过滤其余过程日志,只聚焦以后过程日志。

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

如:执行 logcatPkg_27.py 脚本并在 $* 处传入关注过程包名即可。

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 别名劣势

有杠精会说,git 那个别名多此一举了,自身.gitconfig 里就反对别名操作,难道不晓得?如下

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

须要阐明的是,这种别名每次应用时都须要带上 git,能力真正执行,比方上述中执行 co 须要写成 git co 才可执行。

与 Cmder 比照很容易看成 Cmder 别名劣势:

  1. 让别名更简洁,
  2. 反对通过 &dollar;* 传入自定义变量更加灵便,
  3. 反对其余工具的自定义命令。

总结

本文介绍了 Cmder 命令行终端工具的特点和应用办法,重点解说了如何自定义命令别名。通过 Git 别名配置和脚本别名配置,展现了 Cmder 别名的弱小之处。最初,通过与 Git 别名比照,进一步展现了 Cmder 的劣势。Cmder 自定义别名能够让命令更简洁、更灵便,进步开发效率。

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

退出移动版