win autorun
cmd.exe /s /k pushd "%V"
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"autorun"="chcp 65001"
方式1 cmd启动直接注入clink
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Command Processor]
"AutoRun"="\"C:\\Program Files (x86)\\clink\\0.4.9\\clink.bat\" inject --autorun --profile ~\\clink"
方式2 cmd 注入
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"AutoRun"="C:\local\bin\autorun.cmd"
@echo off
call "C:\Program Files (x86)\clink\0.4.5\clink" inject --profile "~\clink
prompt [%username%@%userdomain% $n:\$+]$$$S
doskey /macrofile=c:\local\bin\_doskey
clink安装
clink: 为cmd提供增强的工具,自动补齐之类的。
直接下载安装,可安装在自定义的目录中,它会自动添加环境变量。
autorun
自动安装之后,默认应该打开cmd就会自动先加载了clink
, 命令行中就可以直接使用clink
了。如果没有自动带出,需要执行clink autorun install
。
通过 clink autorun show
也可以查看当前的配置。比如我这里展示的是:
clink autorun set \"D:\Program Files (x86)\clink\0.4.8\clink.bat\" inject --autorun --profile ~/clink
底层算是调用了windows的autorun
命令,在启动cmd
之前注入clink
,这里--profile ~/clink
我不知道在windows下有何作用。
利用这个条件,我们可以配合doskey
,完成alias
命令。比如我在C:\Bin
下创建一个alias.bat
文件,里面写入:
@echo off
doskey ls=dir $*
通过clink autorun set \"C:\bin\alias.bat\" "&&" \"D:\Program Files\clink-1.0.0a1.823d84\clink.bat\" inject --autorun
,我将这个alias.bat
也注入到命令行上下文中,这样就可以在命令行中,使用ls
代替dir
了。
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
的内容如下:
## firstly, ensure you're using clink 4.2.2, not 4.2
## Also, if you're using ConEmu, make sure that the following setting is disabled
# Settings > Features > Use Clink in Prompt
cmd /k %HOMEDRIVE%%HOMEPATH%/Documents/clink_0.4.2/clink_x64.exe inject --profile %HOMEDRIVE%%HOMEPATH%/Documents/clink_0.4.2/clink_inputrc_base
## To make it a little more similar to bash's vi mode, I added these entries to my clink_inputrc_base
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
搞定!