2012-07-26 34 views
89

Tôi đã chuyển khá gần đây từ Bash sang Zsh trên Ubuntu và tôi khá hài lòng về nó. Tuy nhiên, có cái gì đó tôi thực sự bỏ lỡ và tôi không tìm thấy cách để đạt được điều tương tự.Nhận xét trong dòng lệnh Zsh

Trong Bash, bất cứ khi nào tôi đã gõ một lệnh dài và nhận thấy tôi đã phải chạy cái gì khác trước, tôi chỉ phải nhận xét nó ra như thế nào trong những điều sau đây:

[email protected]> #mysuperlongcommand with some arguments 
[email protected]> thecommandIhavetorunfirst #and then: then up up 
[email protected]> #mysuperlongcommand with some arguments #I just need to uncomment it! 

Tuy nhiên, tình hình khá tái phát này là không dễ dàng giải quyết như với zsh, với #mysuperlongcommand sẽ được chạy như vậy (và kết quả là: zsh: command not found: #mysuperlongcommand.

Trả lời

132

Vừa mới bắt đầu dùng thử zsh, tôi cũng gặp sự cố này. Bạn có thể làm setopt interactivecomments để kích hoạt các nhận xét kiểu bash.

+0

Đây là câu trả lời đúng! Cảm ơn! –

+1

Bạn cũng có thể làm 'set-k' nếu nó chỉ là một lần tắt. Nhưng tôi muốn sử dụng dòng 'setopt' từ câu trả lời này trong zshrc –

+9

Có lý do nào đó không phải là hành vi mặc định? – naught101

18

Tôi thấy bản thân mình cũng làm điều này thường xuyên. Điều tôi làm là cắt lệnh dài, thực hiện lệnh cần để đi đầu tiên và sau đó dán lệnh dài trở lại. Điều này rất dễ dàng: CTRL + U cắt lệnh hiện tại thành bộ đệm, CTRL + Y dán nó vào. Hoạt động trong zsh và bash.

+0

workaround tốt, thx :) – Rolf

+0

tốt, trên thực tế, cách của tôi là giải pháp thay thế trong khi giải pháp của bạn là phù hợp nhất;) – Rolf

+4

Đây không phải là câu trả lời được chấp nhận. Các giải pháp dưới đây nói rằng để sử dụng "setopt interactivecomments" nên được. Lý do cho điều này là nếu bạn chỉ cắt lệnh hiện tại, thì nó không nằm trong lịch sử zsh của bạn, và bạn cũng không thể dễ dàng sử dụng cắt và dán trong khi gõ lệnh mới mà không ghi đè lệnh bạn đang cố gắng tiết kiệm. – Douglas

34

tôi sử dụng

bindkey "^Q" push-input 

Từ hướng dẫn zsh:

Đẩy toàn bộ multiline hiện xây dựng vào stack đệm và trở về cấp cao nhất (PS1) nhanh chóng. Nếu trình phân tích cú pháp hiện tại chỉ là một dòng, thì đây chính là dòng push. Lần sau khi trình soạn thảo khởi động hoặc được xuất hiện với dòng get-line, cấu trúc sẽ xuất hiện ở đầu ngăn xếp bộ đệm và được nạp vào bộ đệm chỉnh sửa.

Vì vậy, nó trông như thế này:

> long command 
Ctrl+Q => long command disappears to the stack 
> forgotten command 
long command reappears from stack 
> long command 

Ngoài ra, nếu bạn thiết lập INTERACTIVE_COMMENTS tùy chọn (setopt INTERACTIVE_COMMENTS), bạn sẽ có thể sử dụng chú thích trong vỏ tương tác như bạn đang sử dụng để.

+0

Tôi thích tùy chọn của bạn, nhưng tôi không thể làm cho nó hoạt động: (Có cách nào tôi nên viết các ràng buộc trong tập tin, hoặc là nó chỉ là hai ký tự,^và Q? Lệnh của tôi bị xóa, nhưng tôi không biết làm thế nào để nó xuất hiện trở lại trong đầu vào –

+1

@Mihnea nếu lệnh biến mất, có vẻ như là push-input đang hoạt động, nó sẽ xuất hiện trở lại khi bạn chạy lệnh tiếp theo hoặc chỉ cần nhấn enter.Không phải vậy? –

+0

Silly tôi, tôi đã mong đợi để có phải bấm mũi tên lên. Cảm ơn, tip tuyệt vời, –

Các vấn đề liên quan