Вопрос или проблема
Я хочу, чтобы автозавершение в zsh показывало только файлы для команд, таких как vim
и cat
, а может быть, и для нескольких других, где по сути нужно работать только с файлами. Я не уверен, как это сделать, я пробовал следующее, но не смог это заставить работать
autoload -Uz compinit
compinit
_vim_completion() {
_path_files -W "$PWD"
}
compdef _vim_completion vim
Я новичок в автозавершении zsh, поэтому любые советы или указания будут полезны.
Ответ или решение
Для настройки автозавершения в Zsh, чтобы оно отображало только файлы для команд vim
, cat
и других команд, работающих с файлами, можно воспользоваться следующими шагами. Мы создадим пользовательские функции автозавершения для этих команд, чтобы они завершали только именами файлов.
-
Откройте или создайте файл конфигурации Zsh (обычно это
~/.zshrc
):nano ~/.zshrc
-
Добавьте в файл следующий код, который определяет пользовательские функции автозавершения для команд
vim
иcat
:# Загружаем систему автозавершения autoload -Uz compinit compinit # Определяем функцию автозавершения для vim _vim_completion() { _files } # Применяем эту функцию к команде vim compdef _vim_completion vim # Определяем функцию автозавершения для cat _cat_completion() { _files } # Применяем эту функцию к команде cat compdef _cat_completion cat # Можно добавить дополнительные команды аналогичным образом # Например, для команды less: _less_completion() { _files } compdef _less_completion less
-
Сохраните изменения и закройте редактор.
-
После внесения изменений в файл
~/.zshrc
, обновите вашу сессию Zsh, чтобы новые настройки вступили в силу:source ~/.zshrc
Теперь, когда вы вводите vim
или cat
и нажимаете клавишу Tab, Zsh будет показывать только файлы в текущем каталоге.
Примечания
- Функция
_files
автоматически предоставляет список файлов в текущем каталоге. - Вы можете добавить столько команд, сколько вам нужно, просто создавая аналогичные функции автозавершения.
- Убедитесь, что вы сохраняете ваш
.zshrc
файл с корректными правами доступа и что ваш Zsh сконфигурирован правильно для работы с автозавершением.
Если у вас возникнут дополнительные вопросы или трудности, не стесняйтесь обращаться за помощью!