Tôi muốn hoàn thành mờ không phân biệt chữ hoa chữ thường cho các tệp và thư mục trong zsh
. Sau khi đọc hướng dẫn trong vài giờ, đây là những gì tôi nghĩ ra:
zstyle ':completion:*:*:*:*:globbed-files' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:local-directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
zstyle ':completion:*:*:*:*:directories' matcher 'r:|?=** m:{a-z\-}={A-Z\_}'
Ngoài ra, tôi muốn nhấn TAB
một lần để hiển thị các lần hoàn thành có thể, chỉ sửa đổi những gì tôi đã nhập nếu có chính xác một lần hoàn thành. Sau đó nhấn TAB
lần thứ hai sẽ đưa tôi vào chế độ "hoàn thành menu". Dựa trên các hướng dẫn, tôi đã đưa ra điều này:
zstyle ':completion:*' menu select
Bây giờ mọi thứ hoạt động như nó nên ngoại trừ trong một trường hợp. Tôi có hai thư mục Desktop
và .rstudio-desktop
trong thư mục nhà của tôi. Vì tôi có setopt globdots
, tôi mong đợi gõ như sau:
$ cd ~/dktop<TAB>
để lại lệnh của tôi khi được nhập và hiển thị dưới dạng các ứng cử viên hoàn thành Desktop
và .rstudio-desktop
. Thay vào đó, nó loại bỏ dktop
, để lại cho tôi những điều sau đây:
$ cd ~/
Tôi đã xem tất cả các hướng dẫn, hướng dẫn liên quan, câu hỏi về Stack Exchange và nhiều nguồn khác. Nhưng bất cứ điều gì tôi làm, tôi không thể làm cho công việc này.
Tuy nhiên, điều thú vị là, nếu tôi đang ở trong thư mục chính và gõ như sau thì mọi thứ sẽ hoạt động như mong đợi:
$ cd dktop<TAB>
Đó là, đó chỉ là một vấn đề với các đoạn đường dẫn không dẫn đầu (và bạn có thể thấy C-x h
điều này tương ứng với directories
thẻ hơn là local-directories
thẻ được sử dụng).
Để dễ tái tạo, đây là một ~/.zshrc
cái sẽ tái tạo lại tình huống và hành vi được mô tả ở trên (được thử nghiệm trên một máy ảo El Capitan mới với zsh
từ Homebrew).
zsh 5.3.1
trên OS X, sự cố không được sao chép. Thật thú vị khi có sự khác biệt giữa các hệ điều hành.
zsh 5.3.1
trênArch Linux
.cd ~/dktop<tab>
năng suấtcd ~/Desktop
.