編集 - 迅速な回答
答えた後、タブタブのソースを少し読み続けたところ、実行できることに気付きました
pkgname completion install
完成品を取り付けます。私の環境はすでに汚れていたので、実際に何かをしたかどうかはわかりませんが、私にはそう思われます..
より長い答え
@CameronLittle は素晴らしいドキュメントを提供してくれました。
せっかちな場合は、実行することから始めることができます
sudo bash -c 'pkgname completion > /etc/bash_completion.d/pkgname'
source /etc/bash_completion.d/pkgname
これにより、現在の bash セッションに補完が追加されます。
私の知る限り、新しいセッションは自動的に完了します。
ユーザーにとってプロセスをシームレスにするために、package.jsonでinstall
およびフックを使用できます。postinstall
https://docs.npmjs.com/misc/scripts
デフォルトでは何も印刷しないようにしてください。実行するpkgname
と出力が得られないことを意味します。そうでない場合は機能しません。
重要!tabtab をマスターからのみインストールする
tabtab には、master で解決されたがリリースには至らなかった厄介なバグがあるようです..
これを修正するための関連するコミットは次のとおりです
:
で始まる文字列の補完を処理します--
。
コミットは 2014 年 2 月からですが、最新リリース (2015 年 1 月) は 2014 年 1 月から 0.0.2 です。これ以上のリリースはないと思います。
したがって、この修正を取得したい場合は (!)、master からのみ tabtab をインストールしてください。
私のようにあなたが間違ったことを理解するために2時間を無駄にしないでください:)
どうやってこの答えにたどり着いたのですか?TL;DR
@CameronLittle の回答は舞台裏の説明を提供していますが、回答に到達する方法を説明したいと思います。
tabtab
インストールに関する明示的なセクションがあるパッケージを使用してみました。https://www.npmjs.com/package/tabtab#completion-installを参照してください
しかし、それは私にはうまくいかないようでした。
彼らが追加するように指示するコードを見ると、次のようprocess.argv.slice(2)[0] === 'completion'
にコマンドpkgname completion
を実行したことがわかります。これは、で始まる何かを出力します
###-begin-pkgname-completion-###
### credits to npm, this file is coming directly from isaacs/npm repo
#
# Just testing for now. (trying to learn this cool stuff)
#
# npm command completion script
#
# Installation: pkgname completion >> ~/.bashrc (or ~/.zshrc)
#
その言葉this file is coming directly from isaacs/npm repo
は私をさらに驚かせました。ここで他の回答に続いて、私は /etc/bash_completion.d/npm を見ました - これはまったく同じ内容を示していました..そしてコメント。
走ることにしました
pkgname completion > /etc/bash_completion.d/pkgname
ただし、sudo権限が必要なため、
sudo bash -c "pkgname completion > /etc/bash_completion.d/pkgname
そして、それを現在のbashセッションに適用するために、実行する必要がありました
source /etc/bash_completion.d/pkgname
そして出来上がり!できます!
別の端末を開こうとしたときも機能したので、すべてのユーザーに適用されると思います。そうでない場合は、.bashrc などに追加する必要があります。