【发布时间】:2013-04-10 17:18:24
【问题描述】:
在 Bash shell 中,我可以使用 tab-completion 来使用建议的文件和目录名称。如何使用 nodejs 和 readline 实现这一点?
例子:
-
/<Tab>应该建议/root/、/bin/等。 -
/et<Tab>应该完成到/etc/。 -
fo<Tab>应该完成到foobar假设这样的文件存在于当前目录中。
我正在考虑使用 globbing(模式 search_term.replace(/[?*]/g, "\\$&") + "*"),但是否有我忽略的库?
这是我目前使用 glob 的方法,在使用 //<Tab> 时它会被破坏,因为它返回规范化的名称并且可能还有其他一些奇怪之处:
function command_completion(line) {
var hits;
// likely broken, one does not simply escape a glob char
var pat = line.replace(/[?*]/g, "\\$&") + "*";
// depends: glob >= 3.0
var glob = require("glob").sync;
hits = glob(pat, {
silent: true,
nobrace: true,
noglobstar: true,
noext: true,
nocomment: true,
nonegate: true
});
return [hits, line];
}
var readline = require("readline");
rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
completer: command_completion
});
rl.prompt();
【问题讨论】:
标签: node.js readline tab-completion