Я використовую 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
поведінці спроба завершити Desktop призведе до ln -s Desktop/
того, що вона буде надіслана як команда, і явно цього не хочу.
Я усвідомлюю, що просто натискання клавіші пробілу дозволить мені продовжувати команду, але тепер це звичка.
З огляду на це, чи існує спосіб зробити так, щоб лише деякі команди дозволяли натискати Return
один раз (як cd
), але всі інші команди вимагають натискання на нього двічі?
.zshrc
файл не дозволяє вам це зробити, то відповідь просто не буде, якщо ви самі не налаштуєте вихідний код для підтримки поведінки на основі команд. Але тоді вам залишається визначити, для яких команд це робити, що саме по собі є набагато стомлюючим, ніж просто натискання додаткового клавіші ...