как мне заставить zsh * просто * выводить список вещей в моем текущем каталоге во время завершения табуляции?

shopt -s nullglob

set -- Task1/*.PDF

if (( $# > 0 )); then
   printf 'There are %d PDF files in "Task1"\n' "$#"
else
   echo 'There are no PDF files in "Task1"'
fi

Набор установит позиционные параметры для имен отдельных файлов PDF, доступных в подкаталоге Task1 . Это то же самое, как если бы вы вызвали сценарий с ./ script Task1 / *. PDF .

Количество позиционных аргументов содержится в $ # , и мы проверяем, больше ли оно нуля. Если это так, мы сообщаем количество доступных PDF-файлов. В противном случае мы сообщаем, что их нет. Вы можете делать все, что хотите, вместо этих двух действий.

Если задача состоит в том, чтобы просто ввести суффикс .PDF в нижний регистр любого такого файла, то нет необходимости сначала проверять, есть ли они:

shopt -s nullglob

for fpath in Task1/*.PDF; do
  mv "$fpath" "${fpath%.PDF}.pdf"
done

Установка оболочки nullglob опция гарантирует, что мы не получим значение * в fname , если не было никаких файлов, соответствующих шаблону.

1
15.06.2017, 08:46
2 ответа

Установите стиль tag-orderследующим образом

zstyle :completion::complete:-command-:: tag-order local-directories -

Тег local-directoriesдоступен только при autocdопция включена. -указывает zsh отбрасывать любые возможные совпадения в других тегахs

Вы также можете найти стиль insert-tab; поэтому, когда $BUFFERпуст, он все равно будет заполнять файлы в текущем каталоге.

zstyle ':completion:*' insert-tab false
4
27.01.2020, 23:24

Чтобы ответить на ваш вопрос (, даже если я не уверен, что вижу его цель ), и ответить на комментарии, следующие за ним, есть способ завершить только по имени файла без потери нормального завершения.Вы можете связать завершение имени файла с клавишей (здесь Ctrl+F):

zstyle ':completion:files:*' completer _files
zstyle ':completion:files:*' file-patterns '*:all\ files'
zstyle ':completion:files:*' hidden all
zle -C files menu-complete _generic
bindkey '^F' files

Может быть полезно установить autocd и добавить псевдонимы суффиксов, например:

alias -s pdf="zathura"
alias -s jpg="sxiv -f"
alias -s tex="vim"
setopt autocd
1
27.01.2020, 23:24

Теги

Похожие вопросы