2011-01-21 1 views
0

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

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

scp server:~/fi<tab> 

ЗШ затем правильно автозаполнение в

scp server:~/file 

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

scp server:~/file*<tab> 

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

Спасибо!
randy

+0

Принадлежит http: // superuser.com –

+1

Вам нужно будет написать функцию завершения, которая будет фактически ssh на удаленном узле и получить список файлов. –

+0

@Dennis Williamson Эта функция уже существует и дает хорошие результаты. Вопрос заключается в том, как сразу вывести все результаты в командную строку. – ZyX

ответ

0

Ваш пример отлично подходит для меня. Я не знаю, что делает его работу в моей системе, но вот что я поставил :( alwaystoend cbases extendedglob интерактивные interactivecomments монитор shinstdin). И мой .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 
0

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

setopt GLOB_COMPLETE 

От man zshoptions:

GLOB_COMPLETE

Когда текущее слово имеет рисунок Глоб, не вставляйте все слова в результате расширения, но генерировать матчи как для завершения и цикл через них например MENU_COMPLETE. Матчи генерируются так, как будто в конец слова добавлен символ «*» или вставлен в курсор, когда установлен COMPLETE_IN_WORD. Это фактически использует сопоставление с образцом, а не подталкивание, поэтому оно работает не только для файлов, но и для любого завершения, например, для опций, имен пользователей и т. Д.

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

0

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

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