Tôi đang sử dụng menu select
hành vi trong zsh
đó, gọi một menu bên dưới con trỏ nơi bạn có thể thấy các khả năng khác nhau. Tùy chọn .zshrc tôi đã đặt cho điều này là
zstyle ':completion:*' menu select=2
Theo mặc định, nhấn Return
để chọn một khả năng trong menu này chỉ hoàn thành từ - nó không thực sự gửi lệnh. Ví dụ, tôi có thể nhận được một menu như thế này
~ % cd de<TAB>
completing directory:
[Desktop/] Development/
Nhấn Return
vào đây sẽ dẫn đến
~ % cd Desktop/
Sau đó tôi phải nhấn Return
một thứ hai thời gian để thực sự gửi lệnh.
Tôi có thể sửa đổi hành vi này để thực hiện nó để nhấn Return
cả hai chọn hoàn thành và gửi lệnh bằng cách thực hiện điều này
bindkey -M menuselect '^M' .accept-line
Tuy nhiên, có một vấn đề với điều này: đôi khi tôi cần hoàn thành một tệp hoặc thư mục mà không gửi lệnh. Ví dụ, tôi có thể cần phải thực hiện ln -s Desktop Desktop2
- với bindkey
hành vi này , cố gắng hoàn thành Desktop sẽ dẫn đến ln -s Desktop/
việc được gửi dưới dạng lệnh và rõ ràng tôi không muốn điều đó.
Tôi biết rằng chỉ cần nhấn phím cách sẽ cho phép tôi tiếp tục với lệnh, nhưng giờ đây đã trở thành thói quen.
Với điều này, có cách nào để thực hiện nó để chỉ một số lệnh cho phép bạn nhấn Return
một lần (như cd
), nhưng tất cả các lệnh khác yêu cầu nhấn hai lần?
.zshrc
tệp không cho phép bạn làm như vậy thì câu trả lời đơn giản là không, trừ khi bạn tự điều chỉnh mã nguồn để hỗ trợ hành vi dựa trên lệnh. Nhưng sau đó, bạn vẫn phải xác định các lệnh nào để thực hiện việc này, theo cách riêng của nó thì tẻ nhạt hơn là chỉ nhấn một mục nhập bổ sung ...