6
Bash 쉘에서 탭 완성을 사용하여 파일 및 디렉토리 이름 제안을 사용할 수 있습니다. nodejs 및 readline을 사용하여 어떻게 이것을 수행 할 수 있습니까?readline을 사용하여 탭 완료 파일 제안 방법?
예 :
/<Tab>
제안한다는/root/
,/bin/
등/et<Tab>
는/etc/
을 완료해야합니다.fo<Tab>
은foobar
으로 완료해야합니다. 현재 디렉토리에 파일이 있다고 가정합니다.
globbing (패턴 search_term.replace(/[?*]/g, "\\$&") + "*"
)을 사용하려고 생각했지만, 간과 한 라이브러리가 있습니까?
이는 정규화 이름을 반환 가능성이 다른 기이이 같은 //<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();