Zsh: полное отображение файлов только с помощью команд vim и cat

Вопрос или проблема

Я хочу, чтобы автозавершение в zsh показывало только файлы для команд, таких как vim и cat, а может быть, и для нескольких других, где по сути нужно работать только с файлами. Я не уверен, как это сделать, я пробовал следующее, но не смог это заставить работать

autoload -Uz compinit
compinit

_vim_completion() {
  _path_files -W "$PWD"
}

compdef _vim_completion vim

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

Ответ или решение

Для настройки автозавершения в Zsh, чтобы оно отображало только файлы для команд vim, cat и других команд, работающих с файлами, можно воспользоваться следующими шагами. Мы создадим пользовательские функции автозавершения для этих команд, чтобы они завершали только именами файлов.

  1. Откройте или создайте файл конфигурации Zsh (обычно это ~/.zshrc):

    nano ~/.zshrc
  2. Добавьте в файл следующий код, который определяет пользовательские функции автозавершения для команд 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
  3. Сохраните изменения и закройте редактор.

  4. После внесения изменений в файл ~/.zshrc, обновите вашу сессию Zsh, чтобы новые настройки вступили в силу:

    source ~/.zshrc

Теперь, когда вы вводите vim или cat и нажимаете клавишу Tab, Zsh будет показывать только файлы в текущем каталоге.

Примечания

  • Функция _files автоматически предоставляет список файлов в текущем каталоге.
  • Вы можете добавить столько команд, сколько вам нужно, просто создавая аналогичные функции автозавершения.
  • Убедитесь, что вы сохраняете ваш .zshrc файл с корректными правами доступа и что ваш Zsh сконфигурирован правильно для работы с автозавершением.

Если у вас возникнут дополнительные вопросы или трудности, не стесняйтесь обращаться за помощью!

Оцените материал
Добавить комментарий

Капча загружается...