Làm thế nào để ngăn zsh mở rộng lịch sử khi nhấn phím cách?


3

Tôi muốn sử dụng mở rộng mv 'foo bar' !#:1:s^\ ^-^để sản xuất lệnh mv 'foo bar' 'foo-bar'. Tuy nhiên, khi tôi nhấn phím cách, zsh giả sử tôi đã gõ xong phần mở rộng, để lại cho tôi kết mv 'foo bar' !#:1:s^\quả mv 'foo bar' 'foobar'.

Tôi có thể phá vỡ hành vi này bằng cách gõ mv 'foo bar' !#:1:s^\^-^và sau đó quay lại bằng các phím mũi tên để có được mv 'foo bar' !#:1:s^\ ^-^, nhưng điều đó đánh bại mục đích.

Làm cách nào tôi có thể tắt hành vi mở rộng trên phím cách? Tôi cho rằng hành vi mong muốn của tôi là để lệnh không được mở rộng cho đến khi tôi nhấn Enter. Tôi đã không tìm thấy bất cứ điều gì về điều này trong trang web cho zshexpn.

Chỉnh sửa: Tôi thấy rằng tôi có thể gõ mv 'foo bar' !{#:1:s^\ ^-^}, giữ lại việc mở rộng cho đến khi }được gõ. Nhưng câu hỏi làm thế nào để ngăn chặn hành vi mở rộng trên phím cách.

Câu trả lời:


3

Có vẻ như bạn đã ràng buộc phím không gian magic-space, bởi vì phần giới thiệu về zsh giải thích:

Nếu bạn liên kết không gian với không gian ma thuật, thì việc mở rộng lịch sử theo kiểu csh được thực hiện trên dòng bất cứ khi nào bạn nhấn phím cách.

Vì vậy, hoặc loại bỏ dòng

bindkey " " magic-space

từ cấu hình của bạn. Hoặc (nếu bạn đang sử dụng một số tệp cấu hình được xác định trước như d'oh-my-zsh ), hãy đảm bảo rằng lệnh sau được thực thi sau tất cả các ràng buộc khóa khác:

bindkey " " self-insert

1
Tôi sử dụng Prezto. Hóa ra điều này đã được đặt trong mô-đun "trình chỉnh sửa", trong dòng 271 của tệp .zprezto/modules/editor/init.zsh. Tôi đã tạo một nhánh "cá nhân" mới bằng cách thực hiện cd ~/.zprezto && git checkout -b personal. I commented out the line and then thay đổi git, vì vậy cấu hình Prezto ban đầu không bị ảnh hưởng.
Shadowtalker

Ngoài ra, chạy bindkeykhông có đối số sẽ đưa danh sách các khóa bị ràng buộc vào thiết bị xuất chuẩn.
Shadowtalker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.