cmd命令行增强工具clink

——让windows下cmd命令行拥有行编辑(readline)能力

2018-11-10 (2018-12-12更新)

linux下shell终端里有行编辑功能,在命令提示符下默认可以像emacs一样编辑输入的命令。比如:

  • Ctrl+p:显示上一条命令
  • Ctrl+n:显示下一条命令
  • Ctrl+a:移动光标到行首
  • Ctrl+e:移动光标到行尾
  • Ctrl+b:光标后退一个字符
  • Ctrl+f:光标前进一个字符
  • Ctrl+d:删除一个字
  • Ctrl+y:粘贴
  • 等等。

并且shell也可以把行编辑快捷键修改为vim的方式。非常方便。

而windows上的cmd上,只能使用箭头移动光标,每次都需要手离开大键盘区,复制粘贴选择也非常不方便。所以一直想找个windows上的能够支持行编辑功能的终端控制台。

此外,了解了一下powershell后,发现虽然功能强大,但是一堆像函数一样的都还有一个”-“的命令,不好看不好记。有学习powershell的时间,还不如直接用c#或者python。并且powershell有些命令还不如cmd好用,比如doskey,所以我基本放弃使用powershell了。平常使用msys2 shell,需要的时候,也使用一下cmd。

网上说powershell功能更强大,也可以设置行编辑功能,我也试了一下。但是发现需要设置权限,升级powershell到3.0以上版本,安装.net 4.5等等庞大的东西。在win7上非常不方便,并且powershell更像一个编程语言,命令都是get-xx,set-xx形式,不喜欢,果断放弃。

偶尔的机会发现了一个cmd神器:clink。clink可以让cmd控制台有shell一样的行编辑功能。

clink安装

下载地址:http://mridgers.github.io/clink/

直接下载安装就ok。安装后打开cmd就会发现,cmd支持行编辑功能了。

clink增强的cmd控制台的功能

安装好clink后,打开cmd控制台,就可以使用如下功能了:

和Bash一样的行编辑功能

clink基于GNU的readline库,所以功能也和readline一样

可以使用的快捷键简单列举如下(仅列举部分常用的,不太全)

  • Tab: 命令补全
  • 编辑
    • Ctrl+@: set-mark,开始选择
    • Ctrl+b: 光标后移一个字符
    • Ctrl+f:
    • Ctrl+a: 移动光标到行首

参考文档

clink: 加强windows下的cmd Clink: Powerful Bash-style command line editing

Fork me on GitHub