Làm cách nào để vô hiệu hóa xác nhận mở rộng lịch sử như `!!`


5

Zsh chăm sóc tôi rất tốt, và đôi khi nó có thể hơi quá. Một trong những thời điểm mà tôi muốn nó đứng ngoài công việc của mình là khi nó "muốn chắc chắn rằng tôi muốn thực thi lệnh đã cho". Các chức năng tôi đang trải nghiệm này là:

Các lệnh:
sudo !! - chạy lệnh trước có tiền tố với sudo

^old^new - chạy lệnh trước, nhưng thay thế lần xuất hiện đầu tiên của "cũ" bằng "mới"


Vấn đề:
Khi tôi gõ một trong hai lệnh được liệt kê ở trên và nhấn Enter, thay vì chạy lệnh ngay lập tức, lệnh sẽ mở rộng đến những gì thực sự sẽ được chạy và tôi phải nhấn Enter một lần nữa để thực sự thực hiện nó. Vấn đề thế giới đầu tiên, nhưng vẫn còn.

1 $ pwd
2 /home/neil
3 $ sudo !!
4 $ sudo pwd
5 /home/neil

Tôi muốn bỏ qua bước 4. Điều này được bỏ qua theo mặc định trong bash.

Câu trả lời:


8

Điều đó thật dễ dàng ... nếu bạn biết tùy chọn tương ứng:

unsetopt HIST_VERIFY

Đặt cái này vào ~/.zshrc và làm source ~/.zshrc nếu bạn muốn hành vi đó là vĩnh viễn.

Giải thích từ man zshoptions:

HIST_VERIFY Bất cứ khi nào người dùng nhập một dòng với mở rộng lịch sử, không thực hiện trực tiếp dòng đó; thay vào đó, thực hiện mở rộng lịch sử và tải lại                 dòng vào bộ đệm chỉnh sửa.


Điều đó chắc chắn đã lừa, cảm ơn!
krystah

Tôi sẽ, nhưng nó xuất hiện upsetopt HIST_VERIFY không đá vào nếu tôi đặt nó vào .zshrc và thủ công nguồn nó. Tôi chắc chắn rằng tập tin cấu hình là một trong những quá tải. Lệnh chỉ hoạt động với tôi nếu tôi chạy nó trong dấu nhắc zsh như bất kỳ lệnh nào khác.
krystah

Và vâng, đã thử khởi động lại trình giả lập thiết bị đầu cuối. Kì lạ
krystah

1
Chỉ cần thử nó, và hóa ra tôi phải chắc chắn oh-my-zsh được cung cấp trước khi lệnh được chạy. Đã giải quyết!
krystah

1
@kstallah: Hoàn hảo, bạn tự tìm ra :)
mpy
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.