Saya menggunakan menu selectperilaku dalam zsh, yang memanggil menu di bawah kursor di mana Anda dapat melihat berbagai kemungkinan. Opsi .zshrc yang telah saya atur untuk ini
zstyle ':completion:*' menu select=2
Secara default, menekan Returnuntuk memilih kemungkinan di menu ini hanya melengkapi kata - kata itu sebenarnya tidak mengirim perintah. Sebagai contoh, saya mungkin mendapatkan menu seperti ini
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Menekan di Returnsini akan menghasilkan
~ % cd Desktop/
Saya kemudian harus menekan Returnsebuah kedua waktu untuk benar-benar mengirim perintah.
Saya dapat memodifikasi perilaku ini untuk membuatnya sehingga menekan Returnkeduanya memilih penyelesaian dan mengirimkan perintah dengan melakukan ini
bindkey -M menuselect '^M' .accept-line
Namun, ada masalah dengan ini: kadang-kadang saya perlu menyelesaikan file atau direktori tanpa mengirim perintah. Sebagai contoh, saya mungkin perlu melakukan ln -s Desktop Desktop2- dengan bindkeyperilaku ini , mencoba menyelesaikan Desktop akan menghasilkan ln -s Desktop/dikirim sebagai perintah, dan jelas saya tidak menginginkan itu.
Saya sadar bahwa hanya dengan menekan ruang akan membiarkan saya melanjutkan perintah, tetapi sekarang kebiasaan.
Mengingat ini, apakah ada cara untuk membuatnya sehingga hanya beberapa perintah yang memungkinkan Anda menekan Returnsatu kali (seperti cd), tetapi semua perintah lain mengharuskan Anda menekannya dua kali?
.zshrcfile tidak memungkinkan Anda untuk melakukannya maka jawabannya hanya akan menjadi tidak, kecuali jika Anda menyesuaikan sendiri kode sumber untuk mendukung perilaku berbasis perintah. Tapi kemudian Anda masih harus menentukan untuk perintah mana melakukan ini, yang dengan sendirinya jauh lebih membosankan daripada hanya menekan masuk tambahan ...