zsh: изменить правила завершения и перекомпилировать файл .zwc

В zsh , ssh и scp используют завершение хоста из /etc/hosts . Тем не менее, они пытаются сопоставить имена хостов, даже если я использую заглавные буквы и когда я, очевидно, ссылаюсь на файл, а не на хост:

 $ scp -rp F<tab> FOO.txt foo.mydomain.com 

Я хотел бы отключить эту функцию. Я изменил следующую строку в /usr/share/zsh/functions/Completion/Unix/_ssh

 compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts 

в

 compadd "$@" $config_hosts 

Теперь, когда я начинаю вводить команду ssh и автозаполнять имя хоста, используя вкладку ssh foo<tab> , я получаю сообщение об ошибке:

 _all_labels:39: command not found: -J 

что это значит и как я могу это исправить?

Вторая проблема заключается в том, что я не могу перекомпилировать файл завершения после внесения изменений в Unix / _ssh:

 zcompile Unix/ Unix.zwc zcompile: can't open file: Unix.zwc 

это то, что я получаю при нажатии Ctrl + X + ? :

 $ scp -rp TE Trace output left in /tmp/zsh10048scp3 (up-history to view) TESTING.txt testing testing.mydomain.com 

где TESTING.txt – это файл, а testing и testing.mydomain.com – это имена хостов

ОБНОВИТЬ:

Я заметил, что я получил вышеперечисленные _all_labels:39 только для хостов, у которых есть ProxyCommand в ~/.ssh/config , то есть:

 Host testing testing.mydomain.com Hostname testing.mydomain.com User root PubkeyAuthentication yes StrictHostKeyChecking yes UserKnownHostsFile ~/.ssh/known_hosts ProxyCommand ssh server2.mydomain.com nc %h %p 

One Solution collect form web for “zsh: изменить правила завершения и перекомпилировать файл .zwc”

Убедитесь, что вы не удалили «\» в предыдущей строке / usr / share / zsh / functions / Completion / Unix / _ssh при внесении изменений:

 _wanted hosts expl 'remote host name' \ compadd -M 'm:{a-zA-Z}={A-Za-z} r:|.=* r:|=*' "$@" $config_hosts 

Я сделал это (удалил символ продолжения) в нужную строку и получил точно такую ​​же ошибку:

 _all_labels:39: command not found: -J 

Другая возможность заключается в том, что вы случайно добавили лишние пробелы после «\», тем самым отключив его.

Что касается второй части вашего вопроса, я считаю, что правильный синтаксис для использования:

 zcompile Unix.zwc Unix/* 

(скомпилируйте все в Unix / Unix.zwc)

  • Конкатенация колонн горизонтально. Печать только строк, которые пересекаются в 1-й колонке
  • ZSH: путь удаления, имя файла и расширение из списка файлов для соединения команды
  • Как я могу увеличить число, найденное подстановочным знаком в предыдущей команде? (ЗШ)
  • Вставка текста в zsh в режиме vi
  • Выводить несколько файлов из одного grep?
  • Почему стиль select-word останавливает меня от использования слова «назад-убить» для ведущих пробелов?
  • Zsh - Отключить вкладку вкладок
  • Что вызывает `diff` для запуска` git diff`?
  • есть ли способ установить раскраску для вкладки cd?
  • ZSH: история поиска по клавишам вверх и вниз?
  • Могу ли я ссылаться на команду перед '&&' после '&&'
  • Linux и Unix - лучшая ОС в мире.