Я использую menu selectповедение в zsh, которое вызывает меню под курсором, где вы можете увидеть различные возможности. Опция .zshrc, которую я установил для этого,
zstyle ':completion:*' menu select=2
По умолчанию нажатие Returnдля выбора возможности в этом меню только завершает слово - оно фактически не отправляет команду. Например, я мог бы получить меню как это
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Нажатие Returnздесь приведет к
~ % cd Desktop/
Затем я должен нажать Returnна второй раз , на самом деле отправить команду.
Я могу изменить это поведение так, чтобы нажатие Returnодновременно выбрало завершение и отправило команду, выполнив это
bindkey -M menuselect '^M' .accept-line
Однако есть проблема с этим: иногда мне нужно заполнить файл или каталог без отправки команды. Например, мне, возможно, потребуется сделать ln -s Desktop Desktop2- при таком bindkeyповедении попытка завершить рабочий стол приведет ln -s Desktop/к отправке в качестве команды, и, очевидно, я этого не хочу.
Я знаю, что нажатие клавиши «пробел» позволит мне продолжить выполнение команды, но теперь это привычка.
Учитывая это, есть ли способ сделать так, чтобы только некоторые команды позволяли вам нажать Returnодин раз (как cd), но все остальные команды требуют нажатия дважды?
.zshrcфайл не позволяет вам сделать это, тогда ответ будет просто «нет», если вы сами не настроите исходный код для поддержки поведения на основе команд. Но тогда вам все еще нужно определить, для каких команд это сделать, что