Bash's powerful command line editing in cmd.exe
Overview
Clink combines the native Windows shell cmd.exe with the powerful command line editing features of the GNU Readline library, which provides rich completion, history, and line-editing capabilities. Readline is best known for its use in the Unix shell Bash, the standard shell for many Linux distributions.
For details, refer to the Clink documentation.
Note
Starting Clink injects it into a cmd.exe
process, where it intercepts a handful of Windows API functions so that
it can replace the prompt and input line editing with its own
Readline-powered enhancements.
Downloads are available from the releases page.
See the issues page for known issues or to file new issues.
- Auto-Suggestions; Clink offers suggestions as you type based on history, files, and completions.
- Completions; Clink can complete words when you press Tab or Ctrl-Space (interactive completion list).
- Persistent History; Clink stores persistent history between sessions.
- Scriptable Prompt; You can customize the prompt dynamically with Lua scripts -- like in other shells -- but never before possible in cmd.exe!
- Colored Input Line; Your input is colored by context sensitive completion scripts.
- Command Line Editing Improvements; Clink supercharges the command line with new input editing commands and configurable key bindings.
- Auto-answering of the "Terminate batch job?" prompt.
- and much more!
You can install Clink by running the setup EXE file from the releases page.
Or by using winget and running winget install --id chrisant996.Clink -e.
Or by using scoop and running scoop install clink.
Or by downloading the ZIP file from releases page, and extracting the files to a directory of your choosing.
Once installed, there are several ways to start Clink.
-
If Clink is configured for autorun, just start
cmd.exeand Clink is automatically injected and ready to use.The setup EXE has an option "Autorun when cmd.exe starts". If you didn't use the setup EXE, or if you want to enable or disable autorun later, you can run
clink autorun installorclink autorun uninstallto change the autorun configuration. Runclink autorun --helpfor more info. -
To manually start, run the Clink shortcut from the Start menu (or the clink.bat located in the install directory).
-
To establish Clink to an existing
cmd.exeprocess, useclink inject.If the Clink install directory isn't in the PATH, then use
install_dir\clinkin place ofclinkto run Clink commands. Once Clink is injected into acmd.exeprocess, then it automatically sets an alias so that you can simply useclink.
You can use Clink right away without configuring anything:
- Searchable command history will be saved between sessions.
- Tab and Ctrl-Space will do match completion two different ways.
- Press Alt-h to see a list of the current key bindings.
- Press Alt-Shift-/ followed by another key to see what command is bound to the key.
See Getting Started for information on how to get started with using Clink.
The new Clink tries to be as backward compatible with Clink v0.4.9 as possible. However, in some cases upgrading may require a little bit of configuration work. More details can be found in the Clink documentation.
Clink can be extended through its Lua API which allows easy creation of context sensitive match generators, prompt filtering, and more. More details can be found in the Clink documentation.
Clink uses Premake to generate Visual Studio solutions or makefiles for MinGW. Note that Premake >= 5.0.0-beta4 is required.
- Cd to your clone of Clink.
- Run
premake5.exe toolchain(where toolchain is one of Premake's actions - seepremake5.exe --help) - Build scripts will be generated in
.build\toolchain. For example.build\vs2022\clink.sln. - Call your toolchain of choice (VS, mingw32-make.exe, msbuild.exe, etc). GNU makefiles (Premake's gmake target) have a help target for more info.
Note
Only the VS toolset is supported. If you want to try using MinGW, then make sure to use the msvcrt version because setjmp doesn't link in the URT version of MinGW.
- Make sure npm and python are installed.
- Run
npm install -g marked@2.0.1to install the marked markdown library (version 2.0.1). - Run
pip install fonttools brotli lxmlto install the pyftsubset font optimizer tool and the lxml parser. - Run
premake5.exe docs.
Important
Clink documentation uses marked@2.0.1. Newer versions of marked have introduced breaking changes, and I haven't yet rewritten how Clink builds the documentation to accommodate the breaking changes. The security fixes in newer versions aren't relevant since marked is only used at build time with known inputs (the marked library is no longer embedded in the documentation as of commit d5b39ca in Oct 2020).
The python dependencies are needed in order to make a
subset of the Caskaydia Cove nerd font (based on Cascadia Code) to
display the prompts. This optimization reduces the size (in woff2) from ~1220 kB to ~12 kB allowing it to be bundled with the clink.html file.
from https://github.com/chrisant996/clink
No comments:
Post a Comment