Как использовать подстановочные знаки для автоматического заполнения на удаленном сервере в Zsh? - PullRequest
0 голосов
/ 22 января 2011

Одной из моих любимых функций zsh является автозаполнение, особенно когда я заполняю имя файла на сетевом компьютере.Но как включить подстановочные знаки (например, *) и обеспечить их автоматическое заполнение на удаленной машине?

Например, скажем, у меня есть file1, file2 и file3, находящиеся на сервере;Я хочу скопировать все эти файлы на мой локальный компьютер, поэтому я ввожу

scp server:~/fi<tab>

zsh, затем автоматически автоматически завершается до

scp server:~/file

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

scp server:~/file*<tab>

все, что он делает, издает звуковой сигнал (работает правильно, если пути к файлам локальные).Есть ли набор опций Zsh, который делает эту работу?Я нашел GLOB_COMPLETE и EXTENDED_GLOB, но лучшее, что я мог сделать с любой их комбинацией, - это автоматически завершить одиночное совпадение или циклически пройти все совпадения, но не расширить автозаполнение до all соответствует (как это происходит в локальной командной строке).Это действительно возможно?

Спасибо!
Рэнди

Ответы [ 3 ]

1 голос
/ 29 мая 2012

Как я уже упоминал в superuser : думаю, настройка GLOB_COMPLETE должна изменить это.

setopt GLOB_COMPLETE

С man zshoptions:

GLOB_COMPLETE

Когда текущее слово имеет шаблон glob, не вставляйте все слова, полученные в результате расширения, но генерируйте совпадения, как для завершения, и просматривайте их, как MENU_COMPLETE.Совпадения генерируются так, как если бы '*' был добавлен в конец слова или вставлен в курсор при установке COMPLETE_IN_WORD.На самом деле он использует сопоставление с образцом, а не с глобализацией, поэтому он работает не только для файлов, но и для любого завершения, такого как параметры, имена пользователей и т. Д.

Обратите внимание, что при использовании средства сопоставления с образцом используется элемент управления сопоставлением (например,, регистрозависимое или привязанное сопоставление) не может быть использовано.Это ограничение применяется только тогда, когда текущее слово содержит шаблон;простое включение опции GLOB_COMPLETE не имеет этого эффекта.

0 голосов
/ 28 июня 2013

У меня такая же проблема! Я добился успеха с помощью следующей команды: scp "user @ server: / dir / *" localdir

двойная кавычка ускользает от завершения.

0 голосов
/ 03 ноября 2011

Ваш пример отлично работает для меня.Я не знаю, что заставляет его работать в моей системе, но вот что я установил :(И мой .zshrc имеет:

zstyle ':completion:*' completer _expand _complete _ignored _correct _approximate
zstyle ':completion:*' max-errors 1 numeric
zstyle ':completion:*' menu select=2
autoload -Uz compinit zsh-mime-setup
compinit
...