Скрипт завершения Zsh найден, но не выполнен

Нет. Но вы можете создать оболочку libreoffice, которая будет принимать каждый аргумент, являющийся символической ссылкой, и превращать его в $(readlink -f $the_symlink). Затем вы можете настроить файловый менеджер на открытие файлов libreoffice через эту оболочку.

лоурэпер:

#!/bin/bash -e
args=()
for a; do
    case $a in 
        -*) args+=("$a");;  #skip flags (your file names don't start with -, right?)
        *)  if ! [ -L "$a" ]; then #not a link
                args+=("$a")
            else #link => target
                args+=( "$( readlink -f "$a")" )
            fi
            ;;
    esac
done
libreoffice "${args[@]}"

Теперь, если вы chmod +x lowrapperпоместите его в какой-либо каталог вашего PATH, а затем измените программу-обработчик ваших файлов libreoffice с libreofficeна lowrapper, тогда libreoffice будет открывать цели ссылок вместо ссылок..

1
06.11.2019, 19:18
1 ответ

Это ответ о zsh в целом. Не знаю о -мой -зш.

По умолчанию zsh раскрывает псевдонимы перед попыткой завершения. Обычно это правильно. Как следствие, связывание функции завершения с именем псевдонима имеет эффект только в том случае, если вы игнорируете псевдоним, например, после\foo Tab .

Вы можете отключить это поведение с помощьюsetopt complete_aliases. Но вы потеряете завершение для всех псевдонимов, для которых вы не настроили завершение явно.

Если вы хотите иметь особый случай для foo, лучше всего вместо этого сделать его функцией.

function foo {
  path/to/my/program "$@"
}

Это не объясняет, почему печатается _foo. Может быть, какая-то о -моя -зш странность.

1
27.01.2020, 23:40

Теги

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