Не поддерживает ли команда compadd для ZSH завершение при вводе некоторых символов?
У меня есть исполняемый файл с именем 'index_for_test.js', и я добавляю скрипт оболочки в .zshrc.
$ PATH: /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/hanqing/Development/compadd-test
index_for_test.js
в корне /Users/hanqing/Development/compadd-test
./
├── dir1
│ ├── a.js
│ └── b.js
├── dir2
│ ├── a.ts
│ └── b.ts
└── index_for_test.js
total 24
drwxr-xr-x 6 hanqing staff 192 11 4 13:45 .
drwxr-xr-x 10 hanqing staff 320 11 4 13:42 ..
-rw-r--r--@ 1 hanqing staff 6148 11 4 14:04 .DS_Store
drwxr-xr-x 4 hanqing staff 128 11 4 13:43 dir1
drwxr-xr-x 4 hanqing staff 128 11 4 13:43 dir2
-rwxr-xr-x 1 hanqing staff 155 11 4 13:50 index_for_test.js
// index_for_test.js
#! /usr/bin/env node
const fs =require('fs')
const path=require('path')
const files=fs.readdirSync(path.join(process.cwd()))
console.log(files.join('\n'))
сценарий будет добавлен в .zshrc:
_index_for_test_completion() {
local abc=(`index_for_test.js`)
echo '\nabc:\n'
echo $abc'\n'
compadd -- $abc
}
compdef _index_for_test_completion index_for_test.js
Когда после ввода index_for_test.js
следует ввод пробела, а затем нажмите tab
, это сработает. Но при вводе index_for_test.js ../
нажмите tab
, список завершения не отображается, даже если compadd
принятьаргументы.
Изображение:
нормально: index_for_test.js
ошибка: index_for_test.js ../
Ожидайте
Если это моя ошибка, пожалуйста, дайте мне знать причину, спасибо.
Кроме того, если поведение правильное, мне интересно, как добиться завершения, как cd
команда; поведение кд