用clink给Windows的cmd.exe插上readline的翅膀

Thu 04 April 2019 / In categories Tools

clink, cmd.exe

Linux上的Bash命令行编辑功能强大,这得归功于readline这个库所提供的编辑功能。Windows上的命令行cmd.exe一向以功能简单,编辑能力原始为人所诟病。但是clink给cmd.exe在编辑方面带来了一剂良药。

安装

clink为cmd.exe带来了readline的集成,以至于你可以在cmd.exe中使用类似Vi的键绑定。

安装完clink之后,默认会修改注册表,然后在启动cmd.exe自动启动clink,会显示以下信息:

link v0.4.9 [git:2fd2c2] Copyright (c) 2012-2016 Martin Ridgers
http://mridgers.github.io/clink

如果没有的话,则需要手动inject一下,假设clink.exe在你的PATH环境变量中找到,执行clink autorun install

然后执行clink autorun show,会有类似一下的信息输出:

native : "C:\Users\name\scoop\apps\clink\current\clink.bat" inject --autorun

配置Vi键绑定

根据clink/issues/235的介绍的方法来配置%userprofile%\clink_inputrc的内容如下:

set keymap vi

set editing-mode vi
C-l: clear-screen

M-h: backward-char
M-k: history-search-backward
M-j: history-search-forward
M-l: forward-char

重启cmd.exe即可使用clink.exe的键绑定

加载额外的配置

如果想在运行clink之前加载其他的配置文件(比如你希望添加一些环境变量),可以用以下介绍的方法。

假设这个配置文件是%userprofile\.config\cmd_profile.bat里面有需要添加的环境变量,先使用下面的命令来设置cmd.exe的启动配置:

clink autorun set "%userprofile%\.config\cmd_profile.bat"

上面的操作会覆盖原先clink的设置,所以在上面的步骤之后要重新执行:

clink autorun install

搞定!

Load Disqus Comments