2010-08-09 26 views
68

Tôi chỉ mới bắt đầu sử dụng Zsh thời gian gần đây đối với một số sự hỗ trợ tích hợp trong dấu nhắc shell cho Git tôi tình trạng, vvZsh muốn AutoCorrect một lệnh, với _ trước khi nó

Khi tôi gõ vào:

ruby -v 

để xác nhận phiên bản ruby ​​tôi đang chạy, Zsh hỏi tôi có muốn thay đổi lệnh thành _ruby không. Vâng, sau khi nói không tại dấu nhắc và lệnh hoàn thành như mong đợi tôi tiếp tục nhận được câu hỏi tại dấu nhắc sau khi xác nhận lệnh của tôi là chính xác.

Tôi giả sử có tệp hoàn thành hoặc một thứ gì đó sắp xếp.

Cảm ơn

Cập nhật:

Vỏ không còn cố gắng để hoàn thành _ruby, nó ngừng đáp ứng khi đã thoát khỏi vỏ một vài lần một số cách.

Tôi đã cố gắng xóa tệp nhiều lần nhưng có biến "opts" dài hơn 50 dòng và các dòng được chạy cùng nhau, một số dòng dài hơn 150 ký tự. Có lẽ tôi có thể gửi một tập tin đính kèm cho bạn nếu bạn vẫn muốn xem nó. Tôi chân thành xin lỗi vì bài đăng lộn xộn.

+0

Tôi không thấy hành vi đó. Phiên bản nào của zsh? Có gì trong '~/.zshrc' của bạn? Liệu nó có làm điều đó nếu bạn cố gắng chạy một kịch bản CLI ruby ​​đơn giản (ví dụ: 'ruby -e 'print" hi \ n "'')? Đăng tệp '/ usr/share/zsh/functions/Completion/Unix/_ruby' của bạn và chúng tôi có thể kiểm tra nó dựa trên phiên bản đã biết. –

+0

Còn các câu hỏi khác tôi hỏi? Tôi không hiểu - bạn vẫn gặp vấn đề? Nếu bạn muốn một người nào đó chắc chắn và xem những người theo dõi của bạn, hãy giải quyết nhận xét cho @username nói điều gì đó như "xem câu hỏi đã chỉnh sửa" nếu chính thông tin đó quá dài để vừa trong nhận xét. Điều đó làm sáng lên biểu tượng thông báo của người dùng (phong bì nhỏ ở đầu trang). –

+0

@ Dennis Williamson Hóa ra câu trả lời của Gilles là chính xác. Tôi tin rằng nó sửa chữa chính nó sau khi khởi động lại vỏ hoặc đăng xuất. Tôi đã không chắc chắn nếu tôi đăng xuất hay không. "Tôi không hiểu - bạn vẫn gặp sự cố?" Như tôi đã nói trong bài viết, lệnh ruby ​​sẽ chạy sau khi tôi đã chọn không cho phép zsh thay đổi nó thành _ruby. Vì vậy, có tất cả mọi thứ đang làm việc. Cảm ơn bạn đã đứng đầu –

Trả lời

108

Đây là lệnh tự động, được kích hoạt theo tùy chọn correct. Nó không có gì để làm với hoàn thành. Bạn đang thấy _ruby vì zsh cho rằng không có lệnh ruby và nó cung cấp _ruby làm kết quả phù hợp hiện tại gần nhất.

Nếu bạn vừa cài đặt ruby, có thể zsh đã ghi nhớ danh sách lệnh sẵn có trước đó và không phải lúc nào cũng thử xem lệnh có xuất hiện ở giữa hay không. Trong trường hợp đó, hãy chạy hash -rf. Các phiên zsh trong tương lai sẽ không có vấn đề này vì lệnh ruby đã tồn tại khi chúng bắt đầu.

Đôi khi, khi bạn thay đổi PATH, zsh sẽ quên một số lệnh được băm. Tùy chọn hash_listall giúp chống lại điều này. Như trên, nếu bạn có thể buộc zsh làm mới bộ nhớ cache của lệnh bằng hash -rf.

+0

đó chắc chắn là những gì đang diễn ra. Có vẻ như nó đã tự sửa lại sau một chút. Nó có thể đã khởi động lại vỏ hoặc từ đăng xuất. Tôi không thể nhớ lại nếu tôi đăng xuất vì vậy tôi không muốn nói rằng nó chỉ sửa chữa bằng cách khởi động lại trình bao. Điều duy nhất mà câu đố tôi là làm thế nào lệnh hoàn thành thành công khi chọn không cho phép zsh thay đổi nó. Tôi đoán như bạn đang nói rằng nó có một cái gì đó để làm với vỏ không "biết" về lệnh ruby ​​đang có sẵn tại thời điểm đó. Cảm ơn câu trả lời –

+0

Trên một lưu ý phụ, tôi đang sử dụng zsh 4.3.12 (i386-apple-darwin11.0.0) và 'hash_listall' không được tìm thấy. Tuy nhiên 'hash -rf' giải quyết vấn đề của tôi với zsh liên tục muốn tự động sửa một cái gì đó tôi đã cài đặt gần đây. – recursive

+8

Tôi gặp vấn đề này với git-alias 'git lg' mà zsh tin là' git log'. Có một lý do tôi gọi nó là 'lg' và đó là vì nó tương tự như 'log', bởi vì chức năng của nó tương tự! Cách khắc phục sự cố này? Tôi thực sự không muốn phát triển thói quen nhấn hai lần. –

14

Tôi thấy tính năng tự động sửa có thể gây khó chịu vào những thời điểm. Vì vậy, tôi làm trong tôi ~/zshrc,

DISABLE_CORRECTION="true" 
+1

Tốt hơn, hãy tạo bí danh để bật và tắt tự động sửa, vì * hầu hết * thời gian, bạn muốn, đặc biệt nếu bạn đang sử dụng nhiều plugin. –

18

Bạn có thể làm một bí danh:

alias ruby='nocorrect ruby'

Đó là những gì tôi đã làm khi zsh tục hỏi tôi nếu tôi có nghĩa là .meteor khi tôi gõ meteor vì tự động sửa vẫn hữu ích theo thời gian.

+1

Dễ dàng tìm thấy điều này hữu ích nhất – netpoetica

+1

Đây phải là câu trả lời, cảm ơn rất nhiều – Drew

1

Đôi khi trước sau khi cập nhật, tôi đã lệnh tự động chỉnh kích hoạt mà tôi không muốn. Nếu điều tương tự cũng xảy ra với bạn và bạn muốn hoàn nguyên, trong ~ /.zshrc tập tin bạn sẽ phải làm cho nó:
# Uncomment the following line to enable command auto-correction.
ENABLE_CORRECTION="false"

hoặc nhận xét nó theo dưới đây:
# Uncomment the following line to enable command auto-correction.
# ENABLE_CORRECTION="true"

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