zsh, mũi tên lên chỉ lặp lại các lệnh duy nhất?


21

Tôi đang tìm kiếm một cài đặt sẽ thực hiện để khi tôi nhấn mũi tên lên, zsh hiển thị các lệnh tôi đã chỉnh sửa gần đây. Bắt là, tôi chỉ muốn các lệnh duy nhất . Hiện tại, nếu tôi gõ echo "hello world"50 lần, tôi phải nhấn mũi tên lên 50 lần để nhận lệnh tôi đã sử dụng trước khi gõ lệnh echo. Điều này là khó chịu để nói rằng ít nhất.

Bất kỳ suy nghĩ về những gì tôi cần phải bật / tắt?

Câu trả lời:


23

HIST_IGNORE_ALL_DUPSsẽ loại bỏ tất cả các trận đấu trước đó của lệnh, điều này có thể gây nhầm lẫn khi sử dụng lịch sử làm nhật ký của những gì bạn đã làm sau này.

Một sự phù hợp gần hơn với nhu cầu của bạn có lẽ là HIST_IGNORE_DUPShoặc thậm chí là HIST_FIND_NO_DUPStùy chọn.

Xem man zshoptions | less -p History:

HIST_FIND_NO_DUPS: Khi tìm kiếm các mục lịch sử trong trình chỉnh sửa dòng, không hiển thị các bản sao của dòng được tìm thấy trước đó, ngay cả khi các bản sao không liền kề.

HIST_IGNORE_ALL_DUPS: Nếu một dòng lệnh mới được thêm vào danh sách lịch sử trùng lặp với một lệnh cũ hơn, lệnh cũ hơn sẽ bị xóa khỏi danh sách (ngay cả khi đó không phải là sự kiện trước đó).

HIST_IGNORE_DUPS: Không nhập các dòng lệnh vào danh sách lịch sử nếu chúng là bản sao của sự kiện trước đó.


1
HIST_FIND_NO_DUPS là một câu trả lời tốt hơn tôi nghĩ.
Mikel

3

Tôi không thể thấy bất kỳ cách nào để chỉ làm điều đó theo nghĩa đen, nhưng nếu bạn đặt HIST_IGNORE_ALL_DUPStùy chọn, chỉ phiên bản mới nhất của lệnh sẽ được giữ lại trong lịch sử, mang lại cho bạn hiệu quả tương tự.

Xem man zshoptionsđể biết chi tiết.


Hoạt động tuyệt vời! Trừ khi tôi đang thiếu thứ gì đó, đây chính xác là những gì tôi muốn :)
Lee Olayvar
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.