Как привязать сочетание клавиш в zsh к программе, требующей stdin?

Этот случай else недоступен, поскольку у вас уже есть случай else для этого ], если . То, чего вы хотите достичь, может, например,это можно сделать следующим образом:

if ($#argv != 2) then
    echo "Two arguments required"
    exit 1
else if (! -f $argv[1]) then
    echo "File does not exist"
    exit 1
else if (! -d $argv[2]) then
    echo "Not a valid directory"
    exit 2
endif

echo "hi"
1
14.10.2018, 00:02
1 ответ

Комментарий @llua действительно помог решить проблему со стандартным вводом, спасибо!

Мой вариант использования требовал еще одного отклонения от связанного вопроса. Я использую рейнджер для изменения рабочего каталога (, используя этот трюк ). В этом случае zle redisplayнеобходимо заменить на zle reset-prompt, чтобы правильно изменить подсказку (, см. этот вопрос). Полное решение становится:

run_ranger () {
    echo
    ranger --choosedir=$HOME/.rangerdir < $TTY
    LASTDIR=`cat $HOME/.rangerdir`
    cd "$LASTDIR"
    zle reset-prompt
}
zle -N run_ranger
bindkey '^f' run_ranger
5
27.01.2020, 23:23

Теги

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