Ich benutze das menu selectVerhalten in zsh, das ein Menü unterhalb des Cursors aufruft, in dem Sie die verschiedenen Möglichkeiten sehen können. Die .zshrc-Option, die ich dafür festgelegt habe, ist
zstyle ':completion:*' menu select=2
Standardmäßig wird durch Drücken von Return, um eine Möglichkeit in diesem Menü auszuwählen, nur das Wort vervollständigt - der Befehl wird nicht gesendet. Zum Beispiel könnte ich ein Menü wie dieses bekommen
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Wenn Sie Returnhier drücken , erhalten Sie
~ % cd Desktop/
Ich muss dann Returnein zweites Mal drücken , um den Befehl tatsächlich zu senden.
Ich kann dieses Verhalten dahingehend ändern, dass durch Drücken Returnbeider Tasten der Abschluss ausgewählt und der Befehl auf diese Weise gesendet wird
bindkey -M menuselect '^M' .accept-line
Es gibt jedoch ein Problem damit: Manchmal muss ich eine Datei oder ein Verzeichnis vervollständigen, ohne den Befehl zu senden. Möglicherweise muss ich Folgendes tun ln -s Desktop Desktop2: Wenn Sie mit diesem bindkeyVerhalten versuchen, Desktop fertigzustellen, wird ln -s Desktop/es als Befehl gesendet, und das möchte ich natürlich nicht.
Ich bin mir bewusst, dass ich den Befehl nur durch Drücken der Leertaste ausführen kann, aber es ist jetzt eine Gewohnheit.
Gibt es eine Möglichkeit, dies so zu gestalten, dass Sie nur bei einigen Befehlen Returneinmal drücken können (wie cd), bei allen anderen Befehlen jedoch zweimal drücken müssen?
.zshrcDatei dies nicht zulässt, lautet die Antwort einfach nein, es sei denn, Sie passen den Quellcode selbst an, um befehlsbasiertes Verhalten zu unterstützen. Dann müssen Sie jedoch noch festlegen, für welche Befehle dies ausgeführt werden soll. Dies ist für sich genommen weitaus mühsamer, als nur eine zusätzliche Eingabetaste zu drücken ...