NYAGOS を Windows で tcsh 風に使う
私はこれまで Windows 上で tcsh をシェルとして使っていました。しかし、 RS2 にアップデートしたあたりから、なぜかクラッシュすることが多くなってきたので、代替のシェルを探していました。
パスを Windows 風にも使えることと、慣れてしまった tcsh 風のキーバインドをサポートしていることを条件に、いろいろなシェルを探してみました。
その結果、 tcsh から NYAGOS に変更してみることにしました。
ここでは、 tcsh に似せるために標準の NYAGOS に追加した、いくつかの変更についてまとめます。
NYAGOS とは
NYAGOS は zetamatta さんによって Windows 向けに開発されているシェルです。
本体は Golang で書かれており、 Lua スクリプトで拡張できるように設計されています。
また、日本語にもしっかりと対応されています。
素晴らしいシェルを公開していただき、ありがとうございます。
Windows で使えるシェルとしては、NYAGOS 以外にもたくさんのものがありますが、先に挙げた条件に加え、「Cygwin などの、 Windows ネイティブな環境でないものは使いたくない」、「日本語にきちんと対応しているものがよい」、「Golang を勉強したい」という理由により、 NYAGOS を使おうと思いました。
使い方
必要なファイル類は、 GitHub の私の Fork の tcsh_style のブランチにあります。
公式のリリースに比べ、上記のブランチでは nyagos.d/catalog の下の以下のファイルが追加されています。
- case_sensitive_completion.lua
大文字と小文字を区別して補完するためのスクリプトです。
- dollar_env.lua
環境変数を
$TEMP
形式で (ある程度) 使えるようにするためのスクリプトです。
また、echo $TEM[Tab]
のような場合に、$TEMP
と補完もしてくれます。
ただし、$TEMP/[Tab]
で Temp ディレクトリ以下のファイルを補完してくれたりはしません。- emphasize_completion.lua
補完候補の最初の一文字を強調表示するスクリプトです。
例えば、フォルダにfileA.txt
,fileB.txt
,fileC.txt
がある場合、ls file[Tab]
と入力すると、fileA.txt
,fileB.txt
,fileC.txt
のように、次に入力するべき文字が強調されて表示されます。- tcsh_like_keybind.lua
tcsh の下記のキーバインドを実現します。
Alt+/
- 現在入力中の単語を、過去の入力データをもとに補完します。
Alt+p
,Alt+n
- 現在入力中のコマンドを、過去の入力コマンドをもとに補完します。
Alt+BackSpace
- カーソルより左の単語を一つ消去します。
Alt+d
- カーソルより右の単語を一つ消去します。
なお、完全に tcsh と同一な動きをするわけではありませんし、それを目指しているわけでもありません。
日本語には対応しているつもりです。
.nyagos ファイルへの変更
上記の変更を有効にするために、 .nyagos ファイルに下記のような変更をします。
上記のように、末尾で use
により先ほどのファイルを読み込みます。これで、それぞれの機能が有効になります。
なお、 dollar_env に関しては、 completion_hook
の対応がやや古い状態なので、他のファイルより先に読み込んでおくとよいです。
また、 tcsh_like_keybind に関しては、内部で nyagos.prompt
の書き換えを行っているので、 nyagos.prompt
よりも後で読み込む必要があります。
これらの変更により、快適に Windows 上で tcsh ライクなシェル操作を実現できました。
このコメントはブログの管理者によって削除されました。
返信削除