win autorun


原文链接: win autorun

cmd.exe /s /k pushd "%V"

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor]
"autorun"="chcp 65001"
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

搞定!

`