Я использую 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
файл не позволяет вам сделать это, тогда ответ будет просто «нет», если вы сами не настроите исходный код для поддержки поведения на основе команд. Но тогда вам все еще нужно определить, для каких команд это сделать, чтоОтветы:
Если вам это действительно нужно, теоретически вы можете установить функцию, которая проверяет выполняемую вами команду, и завершить или отправить строку.
Попробуйте что-то вроде этого (не проверено):
Источник: используя пользовательскую команду из старого .inputrc в Zsh?
источник
Технически это невозможно, как вы просите. Не знаю, есть ли другой выход
источник