Làm cách nào để sửa lỗi hoàn thành tab để nó không ẩn các mục?


17

Tôi đang sử dụng oh-my-zsh trên Mac OS X với zsh homebrew'ed 4.3.12. Gần đây tôi đã vấp phải một vấn đề kỳ lạ. Trong scripts/not-usedtôi có một vài .Rtập tin:

breakdowns.R             eventloop.R              process-largeclients.R   process-qt.R
reprocess-pinning.R      calculate-qt-error.R     generate_decision_tree.R process-net.R
process-scalingexp.R

Tuy nhiên, khi tôi thử ls scripts/not-used/+ Tablần hoàn thành đầu tiên là ls scripts/not-used/_.Rnơi _thể hiện vị trí con trỏ. Nếu tôi nhấn Tabmột lần nữa, tôi nhận được sự hoàn thành kỳ lạ này:

$ ls scripts/not-used/.R                                                                          
breakdowns.R  eventloop.R

Làm thế nào để bỏ đặt hành vi xấu xí (sai) này?

Các tùy chọn được đặt là:

alwaystoend autocd autonamedirs autopushd cdablevars completeinword
correctall extendedglob extendedhistory noflowcontrol
histexpiredupsfirst histignoredups histignorespace histreduceblanks histverify
incappendhistory
interactive login longlistjobs monitor promptsubst 
pushdignoredups pushdminus pushdsilent pushdtohome
sharehistory shinstdin zle

2
Làm thế nào là breakdowns.R eventloop.Rhoàn thành không chính xác? Thử bỏ đặt completeinwordtùy chọn, vì điều này cho phép hoàn thành được thực hiện từ cả hai đầu của con trỏ, bên trái và bên phải. Điều đó có nghĩa là, nếu tôi gõ pacnhư trong pacmanvà có một lệnh được gọi arpac, thì nó arpacsẽ nằm trong danh sách hoàn thành, vì việc hoàn thành xảy ra ở cả hai phía của con trỏ thay vì chỉ ở bên phải.
Alexej Magura

Tôi đã không nhận thức được câu hỏi ... Vì vậy, breakdowns.R eventloop.Rlà một sự hoàn thành không chính xác, theo nghĩa không hoàn chỉnh. Nếu bạn nhìn kỹ vào danh sách các tập tin, có nhiều hơn chỉ 2, kết thúc bằng .R.
Nikola Knezevic

Tôi đã cố gắng chạm vào sự tồn tại của một loạt các tệp có cùng tên với các tệp bạn đã liệt kê cũng như zR, az, .R và z_test.R cho mục đích thử nghiệm - z_test.R sẽ không hiển thị khi cố gắng tự động hoàn tất, nhưng z, .R sẽ. Đoán nó là một loại rủi ro regex
Dmitri DB

Điều này có thể liên quan đến github.com/robbyrussell/oh-my-zsh/issues/1398 , đây là một vấn đề cũ, nhưng phiên bản mới nhất có mã hoàn thành tương tự. Tôi đã không cố gắng làm việc xung quanh để xác nhận.
rjewell

Câu trả lời:


1

Vấn đề nằm ở zstyledanh sách đối sánh.

Nếu bạn thêm những thứ sau vào .zshrc, nó sẽ sửa nó:

zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'e:|[._-]=* e:|=*' 'l:|=* e:|=*'

Các e:(thay vì mặc định r:) buộc trận đấu phải kết thúc chuỗi.

Các chi tiết cho các tùy chọn có thể được tìm thấy trong các tài liệu Kiểm soát đối sánh hoàn thành ZSH: Hoàn thành


0

Bạn có nhận thấy nơi nó đặt con trỏ của bạn? Vì tất cả các tệp kết thúc bằng .R, nó sẽ tự động nối thêm đề xuất có thể cho bạn.

Tự động hoàn tất đang sử dụng "cả hai đầu" như được mô tả bởi Tshepang.

Hãy thử thả một tệp vào thư mục này mà không có tên .R và bạn sẽ thấy bit .R biến mất.

Thành thật mà nói, tự động hoàn thành thực sự cần một cái gì đó để "hoàn thành" chứ không phải là một giả định thư mục mù.


0

Gert cũng có thể đúng cho việc sửa chữa. Tuy nhiên, tôi nghi ngờ lý do cho bản chất không đầy đủ của danh sách các tệp (breakdowns.R và eventloop.R) là do các tệp đó là các tệp duy nhất trong thư mục làm việc hiện tại được đánh dấu là có thể thực thi được. Bạn có thể xác nhận điều này bằng "ls -l" và xem các quyền cho một cái gì đó như rwx. Nếu bạn không có "./" hoặc thư mục đó rõ ràng trong PATH thì tôi sẽ mong hai tệp đó không xuất hiện.

 8 -rwxr--r-- 1 userbob    groupbob      4420 May 28 15:55 filebob.R
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.