我希望为一个Node.js命令行应用程序添加选项卡完成功能(最好动态生成选项卡完成)。
我找到了一些npm模块,但不确定如何真正实现它们:
https://github.com/hij1nx/complete
https://github.com/mklabs/node-tabtab
所以我想要的是能够有一个类似于这样的nodejs文件:
my-cmd create arg1 arg2
但是我可能想要自动完成,如下:
my-cmd cr<tab> -> create
谢谢!
我希望为一个Node.js命令行应用程序添加选项卡完成功能(最好动态生成选项卡完成)。
我找到了一些npm模块,但不确定如何真正实现它们:
https://github.com/hij1nx/complete
https://github.com/mklabs/node-tabtab
所以我想要的是能够有一个类似于这样的nodejs文件:
my-cmd create arg1 arg2
但是我可能想要自动完成,如下:
my-cmd cr<tab> -> create
谢谢!
在我回答后,我继续阅读 tabtab 的源代码,并注意到我也可以运行
pkgname completion install
安装完成。由于我的环境已经很混乱,我不知道它是否真的有用,但在我看来好像确实有用。
@CameronLittle提供了很好的文档。
对于急性子的人,您可以先运行以下命令:
sudo bash -c 'pkgname completion > /etc/bash_completion.d/pkgname'
source /etc/bash_completion.d/pkgname
https://docs.npmjs.com/misc/scripts
确保默认情况下不要打印任何内容。运行pkgname
不应该有任何输出,否则它将无法工作。
--
开头的字符串的完成。虽然@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或其他文件中。
bash
如何实现此功能。 - Joenpm
模块,但我无法弄清楚如何运行示例。 - Diosney