В Баш, я хотел бы, чтобы достичь следующего рабочего процесса (запрос, показанный в скобках, _
является курсор):Bash: ПРОСТРАНСТВО запускаемых завершение
- Тип "Foo" (
$ foo_
) - Пресс-пространство , На данный момент:
- если Foo функция, скажем
function foo() { printf "hello from foo" }
- пространство печатается (
$ foo _
) - функция вызывается и
hello from foo
печатается через пробел - не символ новой строки ($ foo hello from foo_
)
- пространство печатается (
- если Foo не является функцией, пробел печатается, и это его (
$ foo _
)
- если Foo функция, скажем
Я попытался:
- Создание пространства отправить
0x0a
(возвращение) в эмулятор терминала (iTerm2 на Mac). Это работает, за исключением того, что он явно печатает символ новой строки, а также - Использование встроенной функции:
complete -F foo -o nospace foo
. Это работает, но я должен ввестиfoo
затемSPACE
затемTAB
дляhello from foo
для печати ИНЛАЙН - Я слышал, что вы могли бы как-то встроить
\n
-eating скрипт вPS1
. На самом деле не знаю, как начать работу с этим.
Я мог бы также ловушку ярлык, например Ctrl+T
, чтобы выполнить Foo - но я бы очень хотел только нажать SPACE
.
Идеальное пространство будет вести себя так, как только первое слово будет введено в терминал. Любая помощь будет оценена, пожалуйста, сохраните мое здравомыслие.
Почему в мире мне это нужно: (я выродка И) У меня есть сценарий ido-like ido, который я бы хотел вызвать, когда я набираю cd
, а затем SPACE
.
Вы можете злоупотреблять 'edit-and-execute-command' и перегружать' $ VISUAL'. Затем нажмите '' или перестройте '' для запуска. Не рекомендовал бы. –
andlrc