使用clink优化cmd

参考链接

预先准备

苦于powershell每次都要一秒多的启动速度,偶然这两天发现了clink这个用于提升cmd体验的工具,尝试了下发现经过简单的配置以后可以替代平时绝大部分ps的需求。因此在这里记录一下基本配置流程。

clinkclink-flex-prompt都可以使用scoop在Windows中完成安装。其中clink的大致效果就是在启动cmd的时候进行注入,来实现一些额外功能的扩展。clink-flex-prompt提供的功能则是类似oh-my-zshprompt自定义,让交互界面不至于太苍白

1
scoop install clink clink-flex-prompt

这两个组件都是在scoop默认的main仓库就有,不需要添加额外的bucket就能直接安装。

在使用scoop安装了clink之后,还需要使用

1
clink autorun install

指令来实现每次启动cmd之前都自动启用clink,也可以使用clink inject来在当前的cmd当中暂时体验一下clink的效果

依据Clink官方文档中的提及,原本是会有一个Use enhanced default settings的选项来默认实现一些自动填充或快捷键的功能。但在使用scoop安装clink的情况下,至少可以发现自动显示suggestions补全的功能是没有被配置好的。

自动补全

对于autosuggest的功能,只需要执行下面的指令就可以实现

1
clink set autosuggest.enable true

创建.inputrc文件

类似zsh有一个.zshrc,对于clink来说也有一个.inputrc的文件用于初始化clink的配置文件。

使用CMD输入下面的指令来在Windows的用户目录创建inputrc

1
notepad %userprofile%\.inputrc

创建好了以后可以在其中粘贴以下内容来实现一些基本的功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Some common Readline config settings.

set colored-stats on # Turn on completion colors.
set colored-completion-prefix on # Color the typed completion prefix.

# Some config settings that only work in Clink.

$if clink
set search-ignore-case on # Case insensitive history searches.
set completion-auto-query-items on # Prompt before showing completions if they'll exceed half the screen.
$endif

# Add your keybindings here...

对于具体inputrc的配置写法可以看这里:Init File

使用scoop安装了flex-prompt以后的使用方式也很简单。只需要在cmd里面执行flexprompt configure以后,就可以像p10k那样来自定义一个自己需要的,较为美观的终端提示了。这一块都是有可视化交互的,就不做过多的赘述。

实现Linux中的一些基础指令

平时写代码的时候因为也主要是用Linux系统,对lsrm这种指令已经敲出肌肉记忆了。Powershell里面对这些指令做了兼容,因此用的时候没有什么额外的感觉,但是切换到cmd的时候就会发现这些指令都不一样了,dirdel一类的指令用的很不顺手。这个时候就有两种解决方法。一种方法算是曲线救国,通过调用git-bash里面提供的工具来实现类似原生Linux的指令,这也是比较推荐的一种方式。

配置Git可执行文件的目录

Windows中安装好了Git之后,往往都会有一个git-bash,而我们则可以通过git-bash来实现一些本来在Linux才能执行的指令。而之所以能达到这种效果,是因为Git在安装好了以后在安装目录下有一个/usr/bin的文件夹,里面已经预先放好了可以使用的类似Linux中的一些基本指令,诸如lscat这种常用工具都已经有了。因此我们只需要在系统的环境变量中,将<Git的安装路径>\usr\bin添加到PATH中即可。

比如我是使用scoop安装了git,因此我的git安装路径如下:

1
C:\Users\Halc\scoop\apps\git\current\usr\bin

然后我就只需要在环境变量中把这个路径添加到PATH中,我就可以使用我需要的基础工具了:

修改环境变量

使用cmd脚本预先配置好alias

还有一种方式是创建alias,以替代原生cmd的一些指令。这种方法是我最先使用的方法,后面发现了git-bash中的工具是需要额外配置环境变量以后就没有使用这种方法了。

Windows上创建alias的方法是使用doskey来执行创建,clink则支持在启动的时候自动执行一个cmd脚本,来实现doskey的读入。为此clink默认会从以下路径来寻找clink_start.cmd文件,用以初始化cmd控制台

  • Windows XP: C:\Documents and Settings\<username>\Local Settings\Application Data\clink
  • Windows Vista以及更高的版本:C:\Users\<username>\AppData\Local\clink

如果需要修改clink_start.cmd的位置,可以参考这部分文档:File Locations

在这里我的操作系统目前是Windows 10,因此我只需要在C:\Users\<username>\AppData\Local\clink目录下创建clink_start.cmd文件,并写入以下内容

1
2
3
4
5
6
@echo off
doskey code=code-insiders $1
doskey rm=del
doskey cp=copy
doskey mv=move
doskey of=explorer.exe .

然后保存以后,就会在下一次启动cmd之前执行这些doskey指令,来实现alias的效果了。

使用cmd作为Windows Terminal的默认应用

最后的最后,只需要在Windows Terminal里面设置cmd为默认的应用,就可以实现每次启动wt的时候,都是秒开cmd的效果了,再也不用每次都等powershell启动才能输入指令了。

修改Windows Terminal默认配置文件

使用clink优化cmd
https://halc.top/p/82bd449c
作者
HalcyonAzure
发布于
2023年6月17日
许可协议