Почему я не могу настроить завершение для Fish в config.fish?

#shell #fish

#оболочка #fish

Вопрос:

Я пытаюсь настроить завершение Fish shell для своего проекта.

Следуя некоторым руководствам, я добавил следующую строку в свой ~/.config/fish/config.fish :

complete -x -c j -a '(shonenjump --complete (commandline -t))'

В котором shonenjump указано имя исполняемого файла моего проекта и j является функцией оболочки, обертывающей двоичный файл.

Я не могу заставить завершение работать, но если я повторю эту команду во вновь созданном сеансе, это сработает.

Есть идеи, как сделать это правильно?

Ответ №1:

При настройке подобных завершений файл завершения не помечается как загруженный, поэтому после этого fish все равно попытается автоматически загрузить файл завершения.

И есть файл завершения для вещи под названием «j», поставляемый с fish, и он явно удаляет уже настроенные завершения, что обычно не требуется, но, судя по сообщению о фиксации, этот инструмент устанавливает неработающие завершения, так что это исправляет их.

Итак, как только вы нажимаете tab, fish загружает этот файл, который стирает ваши завершения и устанавливает свои собственные.

Способ настроить завершение в fish — создать свой собственный файл завершения под названием «j.fish» в вашем каталоге ~/.config/fish/completions/.

Или, поскольку ваш инструмент — это не тот же «j», который, по-видимому, также известен как «autojump», просто назовите его как-нибудь по-другому.

Комментарии:

1. Да, я сам это выяснил и исправил своими j.fish силами: github.com/suzaku/shonenjump/commit /…