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 TABmộ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 TABlầ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 Desktopvà .rstudio-desktoptrong 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 Desktopvà .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 directoriesthẻ hơn là local-directoriesthẻ được sử dụng).
Để dễ tái tạo, đây là một ~/.zshrccá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 zshtừ Homebrew).
zsh 5.3.1trê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.1trênArch Linux.cd ~/dktop<tab>năng suấtcd ~/Desktop.