Đây là lệnh zshcompwid có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình giả lập trực tuyến MAC OS
CHƯƠNG TRÌNH:
TÊN
zshcompwid - tiện ích hoàn thành zsh
MÔ TẢ
Cơ chế hoàn thành có thể lập trình của shell có thể được thao tác theo hai cách; đây
các tính năng cấp thấp hỗ trợ cơ chế dựa trên chức năng mới hơn được xác định. Hoàn thành
tập hợp các hàm shell dựa trên các tính năng này được mô tả trong zshcompsys(1) và người dùng
không quan tâm đến việc thêm vào hệ thống đó (hoặc, có khả năng, viết riêng - xem
mục từ điển cho `` hubris ') nên bỏ qua phần hiện tại. Hệ thống cũ hơn dựa trên
các thu gọn lệnh nội trang được mô tả trong zshcompctl(1).
Các tiện ích con hoàn thành được xác định bởi -C tùy chọn cho xem lệnh nội trang được cung cấp bởi
zsh / zle mô-đun (xem zshzle(1)). Ví dụ,
xem -C hoàn thành mở rộng hoặc hoàn thành người hoàn thiện
xác định một widget có tên là `hoàn thành'. Đối số thứ hai là tên của bất kỳ nội trang nào
widget xử lý các lần hoàn thành: từ hoàn chỉnh, mở rộng hoặc hoàn thành,
tiền tố mở rộng hoặc hoàn thành, menu hoàn chỉnh, menu-mở rộng-hoặc-hoàn thành, đảo ngược menu-hoàn thành,
danh sách lựa chọn, hoặc là xóa-char-hoặc-danh sách. Lưu ý rằng điều này sẽ vẫn hoạt động ngay cả khi tiện ích con
trong câu hỏi đã được ràng buộc lại.
Khi tiện ích con mới được xác định này được liên kết với một khóa bằng cách sử dụng khóa liên kết lệnh nội trang được xác định
trong zsh / zle mô-đun (xem zshzle(1)), gõ phím đó sẽ gọi hàm shell
`người hoàn thiện'. Chức năng này chịu trách nhiệm tạo ra các kết quả phù hợp có thể bằng cách sử dụng
nội trang được mô tả bên dưới. Như với các tiện ích ZLE khác, hàm được gọi với
đầu vào tiêu chuẩn đã đóng.
Khi hàm trả về, mã hoàn thành sẽ kiểm soát lại và xử lý
khớp theo cách tương tự như tiện ích con nội trang được chỉ định, trong trường hợp này
mở rộng hoặc hoàn thành.
HOÀN THÀNH DÒNG MÁY CÁN BIÊN DẠNG ĐẶT BIỆT THÔNG SỐ
Những thông số ZLE_REMOVE_SUFFIX_CHARS và ZLE_SPACE_SUFFIX_CHARS được sử dụng bởi
cơ chế hoàn thành, nhưng không phải là đặc biệt. Nhìn thấy Thông số Đã sử dụng By Shell in
zshparam(1).
Các tiện ích hoàn thành bên trong và bất kỳ chức năng nào được gọi từ chúng, một số tham số có
Ý nghĩa đặc biệt; bên ngoài những chức năng này, chúng không đặc biệt đối với shell theo bất kỳ cách nào.
Các tham số này được sử dụng để chuyển thông tin giữa mã hoàn thành và
phụ tùng hoàn thành. Một số lệnh nội trang và mã điều kiện sử dụng hoặc thay đổi
giá trị hiện tại của các tham số này. Mọi giá trị hiện có sẽ bị ẩn trong quá trình thực thi
của các vật dụng hoàn thành; ngoại trừ tính toán, các thông số được đặt lại trên mỗi chức năng
thoát (bao gồm các lệnh gọi hàm lồng nhau từ bên trong tiện ích hoàn thành) đến các giá trị
họ đã có khi chức năng được nhập.
HIỆN HÀNH
Đây là số của từ hiện tại, tức là từ mà con trỏ hiện đang ở
các từ mảng. Lưu ý rằng giá trị này chỉ đúng nếu ksarray Tùy chọn là
không được thiết lập.
IPREFIX
Ban đầu, điều này sẽ được đặt thành chuỗi trống. Tham số này có chức năng như
TIẾP ĐẦU NGỮ; nó chứa một chuỗi đứng trước chuỗi trong TIẾP ĐẦU NGỮ và không được coi là
một phần của danh sách các trận đấu. Thông thường, một chuỗi được chuyển từ đầu
of TIẾP ĐẦU NGỮ đến cuối IPREFIX, ví dụ:
IPREFIX = $ {PREFIX %% \ = *} =
PREFIX = $ {PREFIX # * =}
khiến một phần của tiền tố lên đến và bao gồm cả dấu bằng đầu tiên không được
được coi là một phần của một chuỗi đã so khớp. Điều này có thể được thực hiện tự động bởi tập hợp
nội trang, xem bên dưới.
ĐỐI TƯỢNG SỐ
As IPREFIX, nhưng đối với một hậu tố không nên được coi là một phần của các kết quả phù hợp;
lưu ý rằng ĐỐI TƯỢNG SỐ chuỗi theo sau HẬU VỆ chuỗi.
TIẾP ĐẦU NGỮ Ban đầu điều này sẽ được đặt thành một phần của từ hiện tại từ đầu
từ lên đến vị trí của con trỏ; nó có thể được thay đổi để đưa ra một điểm chung
tiền tố cho tất cả các trận đấu.
QIPPRIX
Tham số này ở chế độ chỉ đọc và chứa chuỗi được trích dẫn cho đến từ
hoàn thành. Vd: khi hoàn thành `"foo', tham số này chứa dấu ngoặc kép.
Nếu -q tùy chọn tập hợp được sử dụng (xem bên dưới), và chuỗi ban đầu là `"foo
thanh'với con trỏ trên dấu'thanh', tham số này chứa `"foo '.
QISUFFIX
Như QIPPRIX, nhưng có chứa hậu tố.
HẬU VỆ Ban đầu, điều này sẽ được đặt thành một phần của từ hiện tại từ vị trí con trỏ
đến cuối cùng; nó có thể được thay đổi để cung cấp một hậu tố chung cho tất cả các kết quả phù hợp. Nó là hầu hết
hữu ích khi tùy chọn COMPLETE_IN_WORD được đặt, nếu không thì toàn bộ từ trên
dòng lệnh được coi như một tiền tố.
tính toán
Đây là một mảng liên kết với các khóa và giá trị khác nhau mà mã hoàn thành
sử dụng để trao đổi thông tin với tiện ích hoàn thành. Chìa khóa là:
tất cả_quotes
-q tùy chọn của tập hợp lệnh nội trang (xem bên dưới) cho phép trích dẫn
chuỗi được chia thành các từ riêng biệt; nếu con trỏ nằm trên một trong những
từ, từ đó sẽ được hoàn thành, có thể gọi `tập hợp -q'
một cách đệ quy. Với phím này, có thể kiểm tra các loại trích dẫn
dây hiện đang bị đứt thành nhiều phần theo kiểu này. Giá trị của nó
chứa một ký tự cho mỗi cấp trích dẫn. Các nhân vật là một
trích dẫn hoặc một dấu ngoặc kép cho các chuỗi được trích dẫn bằng các ký tự này, một đô la
ký tên cho các chuỗi được trích dẫn bằng $'...' và một dấu gạch chéo ngược cho các chuỗi không bắt đầu
với một nhân vật trích dẫn. Ký tự đầu tiên trong giá trị luôn tương ứng
đến mức báo giá trong cùng.
bối cảnh
Điều này sẽ được đặt bởi mã hoàn thành cho bối cảnh tổng thể trong đó
hoàn thành được cố gắng. Giá trị có thể là:
giá_trị_mảng
khi hoàn thành bên trong giá trị của một tham số mảng; trong
trường hợp này từ mảng chứa các từ bên trong dấu ngoặc đơn.
nẹp_parameter
khi hoàn thành tên của một tham số trong phần mở rộng tham số
bắt đầu bằng ${. Bối cảnh này cũng sẽ được đặt khi hoàn thành
cờ tham số theo sau $ {(; đối số dòng lệnh đầy đủ là
được trình bày và trình xử lý phải kiểm tra giá trị được hoàn thành để
chắc chắn rằng đây là trường hợp.
chỉ định_parameter
khi hoàn thành tên của một tham số trong một phép gán tham số.
lệnh
khi hoàn thành một lệnh bình thường (ở vị trí lệnh hoặc
cho một đối số của lệnh).
điều kiện
khi hoàn thành bên trong một `[[...]]' biểu thức điều kiện; trong này
trường hợp từ mảng chỉ chứa các từ bên trong điều kiện
biểu hiện.
toán học khi hoàn thành trong một môi trường toán học chẳng hạn như((...))'
xây dựng.
tham số
khi hoàn thành tên của một tham số trong phần mở rộng tham số
bắt đầu bằng $ nhưng không ${.
chuyển hướng
khi hoàn thành sau khi một nhà điều hành chuyển hướng.
chỉ số dưới
khi hoàn thành bên trong một chỉ số con tham số.
giá trị khi hoàn thành giá trị của một phép gán tham số.
chính xác Kiểm soát hành vi khi REC_EXACT tùy chọn được thiết lập. Nó sẽ được đặt thành
chấp nhận nếu một kết quả phù hợp chính xác sẽ được chấp nhận, và nếu không sẽ không được đặt.
Nếu nó được đặt khi có ít nhất một kết quả khớp với chuỗi trên dòng là
được tạo, trận đấu được chấp nhận.
chính xác_string
Chuỗi của một đối sánh chính xác nếu được tìm thấy, nếu không thì không được đặt.
bỏ qua
Số lượng từ đã bị bỏ qua vì chúng khớp với một trong các
các mẫu được đưa ra với -F tùy chọn cho bảo vệ lệnh nội trang.
chèn Điều này kiểm soát cách thức mà khớp được chèn vào dòng lệnh.
Khi vào chức năng widget, nếu nó không được đặt thì dòng lệnh không được
bị thay đổi; nếu được đặt thành rõ ràng, bất kỳ tiền tố nào chung cho tất cả các kết quả phù hợp là
được chèn vào; nếu được đặt thành automenu-rõ ràng, tiền tố chung là
được chèn và lệnh gọi tiếp theo của mã hoàn thành có thể bắt đầu menu
hoàn thành (do AUTO_MENU tùy chọn đang được thiết lập); nếu được đặt thành thực đơn or
thực đơn tự động hoàn thành menu sẽ được bắt đầu cho các trận đấu hiện được tạo
(trong trường hợp thứ hai, điều này sẽ xảy ra vì AUTO_MENU được thiết lập). Các
giá trị cũng có thể chứa chuỗi `chuyển hướng'khi mã hoàn thành sẽ
thông thường không thực sự hoàn thành, mà chỉ chèn ký tự TAB.
Khi thoát, nó có thể được đặt thành bất kỳ giá trị nào ở trên (khi đặt nó thành
chuỗi rỗng cũng giống như bỏ thiết lập nó) hoặc thành một số, trong trường hợp đó,
khớp với số được cho sẽ được chèn vào dòng lệnh.
Các số âm đếm ngược so với trận đấu cuối cùng (với `-1'chọn
so khớp cuối cùng) và các giá trị nằm ngoài phạm vi được bao bọc xung quanh, do đó giá trị của
XNUMX chọn kết quả phù hợp cuối cùng và một giá trị lớn hơn giá trị tối đa một lần
người đầu tiên. Trừ khi giá trị của khóa này kết thúc bằng dấu cách, kết quả khớp là
được chèn vào khi hoàn thành menu, tức là không tự động thêm vào
không gian.
Cả hai thực đơn và thực đơn tự động cũng có thể chỉ định số lượng đối sánh để chèn,
cho sau dấu hai chấm. Ví dụ:menu: 2'nói để bắt đầu hoàn thành menu,
bắt đầu với trận đấu thứ hai.
Lưu ý rằng giá trị chứa chuỗi con `chuyển hướng'làm cho các trận đấu được tạo ra
được bỏ qua và chỉ TAB được chèn.
Cuối cùng, nó cũng có thể được đặt thành tất cả các, điều này làm cho tất cả các kết quả phù hợp được tạo
được chèn vào dòng.
chèn_vị trí
Khi hệ thống hoàn thành chèn một chuỗi rõ ràng vào dòng,
có thể có nhiều chỗ thiếu ký tự hoặc chỗ
ký tự được chèn khác với ít nhất một kết quả trùng khớp. Giá trị của khóa này
chứa danh sách được phân tách bằng dấu hai chấm của tất cả các vị trí này, dưới dạng các chỉ mục trong
dòng lệnh.
dấu nhắc cuối cùng
Nếu điều này được đặt thành một chuỗi không trống cho mỗi trận đấu được thêm vào, thì việc hoàn thành
mã sẽ di chuyển con trỏ trở lại lời nhắc trước đó sau danh sách
hoàn thành đã được hiển thị. Ban đầu, điều này được đặt hoặc không được đặt theo
các LUÔN_LAST_PROMPT tùy chọn.
Điều này kiểm soát việc danh sách các kết quả phù hợp sẽ được hiển thị hay không. Nếu nó
không được đặt hoặc trống, chúng sẽ không bao giờ được liệt kê; nếu giá trị của nó bắt đầu bằng ,
chúng sẽ luôn được liệt kê; nếu nó bắt đầu bằng người theo chủ nghĩa tự quyền or mơ hồ, Họ
sẽ được liệt kê khi AUTO_LIST or LIST_AMBIGUOUS tùy chọn tương ứng
thông thường sẽ gây ra chúng.
Nếu chuỗi con lực lượng xuất hiện trong giá trị, điều này làm cho danh sách được hiển thị
ngay cả khi chỉ có một trận đấu. Thông thường, danh sách sẽ chỉ được hiển thị nếu
có ít nhất hai trận đấu.
Giá trị chứa chuỗi con đóng gói nếu LIST_PACKED tùy chọn được thiết lập. Nếu như
chuỗi con này được cấp cho tất cả các trận đấu được thêm vào một nhóm, nhóm này sẽ
hiển thị LIST_PACKED cư xử. Điều tương tự cũng được thực hiện đối với LIST_ROWS_FIRST
tùy chọn với chuỗi con hàng.
Cuối cùng, nếu giá trị chứa chuỗi giải thích, chỉ có lời giải thích
các chuỗi, nếu có, sẽ được liệt kê và nếu nó chứa tin nhắn, chỉ
tin nhắn (được thêm với -x tùy chọn bảo vệ) sẽ được liệt kê. Nếu nó
chứa cả hai giải thích và tin nhắn cả hai loại chuỗi giải thích
sẽ được liệt kê. Nó sẽ được thiết lập thích hợp khi hoàn thành
tiện ích con và có thể được thay đổi ở đó.
list_lines
Điều này cho biết số dòng cần thiết để hiển thị danh sách đầy đủ
hoàn thành. Lưu ý rằng để tính tổng số dòng để hiển thị
bạn cần thêm số dòng cần thiết cho dòng lệnh này
giá trị này có sẵn dưới dạng giá trị của TUYỆT VỜI tham số đặc biệt.
danh sách_max
Ban đầu, giá trị này được đặt thành giá trị của LISTMAX tham số. Nó có thể được thiết lập
sang bất kỳ giá trị nào khác; khi tiện ích thoát ra, giá trị này sẽ được sử dụng trong
giống như giá trị của LISTMAX.
trận đấu
Số lượng trận đấu được tạo và chấp nhận bởi mã hoàn thành cho đến nay.
old_insert
Khi vào tiện ích, điều này sẽ được đặt thành số trận đấu của một
danh sách các hoàn thành hiện được chèn vào dòng lệnh. Nếu không
trận đấu đã được chèn, điều này chưa được đặt.
Như với danh sách cũ, giá trị của khóa này sẽ chỉ được sử dụng nếu nó là
chuỗi giữ. Nếu nó được đặt thành giá trị này bởi tiện ích con và có một giá trị cũ
khớp được chèn vào dòng lệnh, trận đấu này sẽ được giữ và nếu
giá trị của chèn khóa chỉ định rằng một kết quả phù hợp khác sẽ được chèn vào,
cái này sẽ được chèn sau cái cũ.
danh sách cũ
Điều này được đặt thành Vâng nếu vẫn còn một danh sách hoàn thành hợp lệ từ một
hoàn thành trước tại thời điểm tiện ích con được gọi. Điều này thường sẽ là
trường hợp nếu và chỉ khi thao tác chỉnh sửa trước đó đã hoàn thành
widget hoặc một trong các chức năng hoàn thành nội trang. Nếu có một danh sách hợp lệ
và nó hiện cũng được hiển thị trên màn hình, giá trị của phím này là
thể hiện.
Sau khi tiện ích con đã thoát, giá trị của khóa này chỉ được sử dụng nếu nó đã được đặt
đến giữ. Trong trường hợp này, mã hoàn thành sẽ tiếp tục sử dụng
danh sách. Nếu tiện ích con tạo ra các kết quả phù hợp mới, chúng sẽ không được sử dụng.
tham số
Tên của tham số khi hoàn thành trong một chỉ số con hoặc trong giá trị của
một phép gán tham số.
mẫu_insert
Thông thường, điều này được đặt thành thực đơn, chỉ định rằng việc hoàn thành menu sẽ
được sử dụng bất cứ khi nào một tập hợp các đối sánh được tạo bằng cách sử dụng đối sánh mẫu. Nếu nó
được người dùng đặt thành bất kỳ chuỗi không trống nào khác và việc hoàn thành menu không phải là
được chọn bởi các cài đặt tùy chọn khác, thay vào đó mã sẽ chèn bất kỳ
tiền tố cho các kết quả phù hợp được tạo giống như hoàn thành bình thường.
mẫu_match
Kiểm soát cục bộ hành vi được cung cấp bởi GLOB_COMPLETE Lựa chọn. Ban đầu
nó được đặt thành `*'nếu và chỉ khi tùy chọn được đặt. Tiện ích hoàn thành
có thể đặt nó thành giá trị này, thành một chuỗi trống (có tác dụng tương tự như
bỏ thiết lập nó), hoặc bất kỳ chuỗi không trống nào khác. Nếu nó không trống,
các siêu ký tự không được trích dẫn trên dòng lệnh sẽ được coi là các mẫu; nếu như
nó là '*', sau đó là một ký tự đại diện'*'được giả định ở con trỏ
Chức vụ; nếu nó trống hoặc không được đặt, siêu ký tự sẽ được xử lý theo nghĩa đen.
Lưu ý rằng các thông số kỹ thuật của trình so khớp được cung cấp cho bảo vệ lệnh nội trang
không được sử dụng nếu điều này được đặt thành một chuỗi không trống.
trích dẫn Khi hoàn thành dấu ngoặc kép bên trong, điều này chứa ký tự trích dẫn (tức là
hoặc một trích dẫn đơn, một trích dẫn kép hoặc một dấu ngoặc kép). Nếu không thì nó là
không đặt.
trích dẫn
Khi hoàn thành bên trong dấu ngoặc kép, điều này được đặt thành chuỗi duy nhất;
bên trong dấu ngoặc kép, chuỗi tăng gấp đôi; bên trong dấu nền, chuỗi
que ngược. Nếu không thì nó không được đặt.
chuyển hướng
Toán tử chuyển hướng khi hoàn thành ở vị trí chuyển hướng, tức là một
of <, >, Vv
khôi phục
Điều này được đặt thành tự động trước khi một chức năng được nhập, điều này buộc chức năng đặc biệt
các thông số đề cập ở trên (từ, HIỆN HÀNH, TIẾP ĐẦU NGỮ, IPREFIX, HẬU VỆvà
ĐỐI TƯỢNG SỐ) để được khôi phục về các giá trị trước đó của chúng khi hàm thoát.
Nếu một hàm không đặt nó hoặc đặt nó thành bất kỳ chuỗi nào khác, chúng sẽ không
được phục hồi.
đến_kết thúc Chỉ định các dịp mà con trỏ được di chuyển đến cuối một chuỗi
khi một khớp được chèn vào. Khi vào một chức năng widget, nó có thể duy nhất
nếu điều này sẽ xảy ra khi một đối sánh rõ ràng được chèn hoặc phù hợp với if
nó sẽ xảy ra bất cứ khi nào một kết quả phù hợp được chèn vào (ví dụ: theo menu
hoàn thành; đây có thể là hiệu ứng của LUÔN LUÔN_TO_END Tùy chọn).
Khi thoát, nó có thể được đặt thành duy nhất như trên. Nó cũng có thể được đặt thành luôn luôn, hoặc là
đến chuỗi trống hoặc bỏ đặt; trong những trường hợp đó, con trỏ sẽ được chuyển đến
cuối chuỗi luôn luôn hoặc không bao giờ tương ứng. Bất kỳ chuỗi nào khác đều được xử lý
as phù hợp với.
rõ ràng
Khóa này ở chế độ chỉ đọc và sẽ luôn được đặt thành chung (rõ ràng)
tiền tố mã hoàn thành đã được tạo cho tất cả các kết quả phù hợp được thêm vào cho đến nay.
unambigious_cursor
Điều này cho biết vị trí con trỏ sẽ được đặt nếu tiền tố chung
trong rõ ràng khóa đã được chèn, liên quan đến giá trị của khóa đó. Các
con trỏ sẽ được đặt trước ký tự có chỉ mục được cung cấp bởi
Chìa khóa.
rõ ràng_positions
Điều này chứa tất cả các vị trí mà các ký tự trong chuỗi rõ ràng là
bị thiếu hoặc nơi ký tự được chèn khác với ít nhất một trong các
diêm. Các vị trí được cung cấp dưới dạng chỉ mục trong chuỗi được cung cấp bởi
giá trị của rõ ràng Chìa khóa.
đa dạng Nếu hoàn thành được gọi trong khi chỉnh sửa một dòng bằng cách sử dụng đa dạng nội trang,
giá trị của khóa này được đặt thành tên của tham số được cung cấp dưới dạng đối số
đến đa dạng. Khóa này chỉ được đặt trong khi đa dạng lệnh đang hoạt động.
từ Mảng này chứa các từ có trên dòng lệnh hiện đang được chỉnh sửa.
HOÀN THÀNH ĐƯỢC XÂY DỰNG TRONG HÀNG
bảo vệ [ -akqQfenUlo12C ] [ -F mảng ]
[-P tiếp đầu ngữ ] [ -S hậu tố ]
[-p tiền tố ẩn ] [ -s hậu tố ẩn ]
[-i tiền tố bị bỏ qua ] [ -I hậu tố bị bỏ qua ]
[-W tiền tố tập tin ] [ -d mảng ]
[-J tên ] [ -V tên ] [ -X giải thích ] [ -x tin nhắn ]
[-r xóa ký tự ] [ -R loại bỏ func ]
[-D mảng ] [ -O mảng ] [ -A mảng ]
[-E con số ]
[-M đối sánh ] [ -- ] [ từ ...]
Lệnh nội trang này có thể được sử dụng để thêm các kết quả phù hợp trực tiếp và kiểm soát tất cả
thông tin mã hoàn thành lưu trữ với mỗi kết quả phù hợp có thể. Tình trạng trả hàng
bằng XNUMX nếu ít nhất một kết quả phù hợp đã được thêm vào và khác XNUMX nếu không có kết quả phù hợp nào được thêm vào.
Mã hoàn thành ngắt chuỗi để hoàn thành thành bảy trường theo thứ tự:
Trường đầu tiên là một tiền tố bị bỏ qua được lấy từ dòng lệnh, nội dung của
các IPREFIX tham số cộng với chuỗi được cung cấp với -i Lựa chọn. Với -U Tùy chọn,
chỉ chuỗi từ -i tùy chọn được sử dụng. Cánh đồng là một tiền tố tùy chọn
chuỗi được đưa ra với -P Lựa chọn. Các trường là một chuỗi được coi là
một phần của trận đấu nhưng điều đó sẽ không được hiển thị khi danh sách hoàn thành, được đưa ra với
các -p Lựa chọn; ví dụ: các hàm tạo tên tệp có thể chỉ định một
tiền tố đường dẫn chung theo cách này. là phần của trận đấu sẽ xuất hiện trong
danh sách các hoàn thành, tức là một trong những từ đưa ra ở cuối bảo vệ
dòng lệnh. Các hậu tố , và tương ứng với các tiền tố
, và và được đưa ra bởi các tùy chọn -s, -S và -I, Tương ứng.
Các cờ được hỗ trợ là:
-P tiếp đầu ngữ
Điều này cho phép một chuỗi được chèn vào trước từ. Chuỗi đã cho
không được coi là một phần của trận đấu và bất kỳ siêu ký tự vỏ nào trong đó
sẽ không được trích dẫn khi chuỗi được chèn vào.
-S hậu tố
Như -P, nhưng cung cấp một chuỗi để được chèn sau trận đấu.
-p tiền tố ẩn
Điều này cung cấp một chuỗi sẽ được chèn vào dòng lệnh trước
khớp nhưng điều đó sẽ không xuất hiện trong danh sách các trận đấu. Trừ khi -U
tùy chọn được đưa ra, chuỗi này phải được so khớp như một phần của chuỗi trên
dòng lệnh.
-s hậu tố ẩn
Như `-p', nhưng cung cấp một chuỗi để chèn sau trận đấu.
-i tiền tố bị bỏ qua
Điều này cung cấp một chuỗi để chèn vào dòng lệnh ngay trước bất kỳ chuỗi nào
đưa ra với `-P' Lựa chọn. Không có `-P'chuỗi được chèn trước
chuỗi được đưa ra với `-p'hoặc trực tiếp trước trận đấu.
-I hậu tố bị bỏ qua
Như -i, nhưng đưa ra một hậu tố bị bỏ qua.
-a Với lá cờ này, từ được lấy làm tên của mảng và có thể
các trận đấu là giá trị của chúng. Nếu chỉ một số phần tử của mảng là cần thiết,
các từ cũng có thể chứa các chỉ số phụ, như trong `foo [2, -1]'.
-k Với lá cờ này, từ được coi là tên của mảng kết hợp và
các trận đấu có thể là chìa khóa của họ. Đối với -a, Các từ cũng có thể chứa
subcripts, như trong `foo [(R) * thanh *]'.
-d mảng
Điều này thêm các chuỗi hiển thị cho mỗi trận đấu. Các mảng nên chứa một phần tử
mỗi lời được cho. Mã hoàn thành sau đó sẽ hiển thị phần tử đầu tiên
thay vì cái đầu tiên lời, và như thế. Các mảng có thể được đặt như tên của
một tham số mảng hoặc trực tiếp dưới dạng danh sách các từ được phân tách bằng dấu cách trong
dấu ngoặc đơn.
Nếu có ít chuỗi hiển thị hơn từ, phần còn lại từ sẽ được
được hiển thị không thay đổi và nếu có nhiều chuỗi hiển thị hơn từ, Các
các chuỗi hiển thị còn lại sẽ bị bỏ qua một cách im lặng.
-l Tùy chọn này chỉ có hiệu lực nếu được sử dụng cùng với -d Lựa chọn. Nếu nó là
đã cho, các chuỗi hiển thị được liệt kê mỗi chuỗi một dòng, không được xếp thành mảng trong cột.
-o Tùy chọn này chỉ có hiệu lực nếu được sử dụng cùng với -d Lựa chọn. Nếu nó
được đưa ra, thứ tự của đầu ra được xác định bởi các chuỗi khớp;
nếu không, nó được xác định bởi các chuỗi hiển thị (nghĩa là các chuỗi được cung cấp bởi
các -d Tùy chọn).
-J tên
Cung cấp tên của nhóm đối sánh mà các từ cần được lưu trữ.
-V tên
Như -J nhưng đặt tên một nhóm không được sắp xếp. Chúng nằm trong một không gian tên khác
so với các nhóm được tạo bằng -J cờ.
-1 Nếu được đưa ra cùng với -V tùy chọn, chỉ tạo các bản sao liên tiếp trong
nhóm bị xóa. Nếu kết hợp với -J tùy chọn này không hiển thị
tác dụng. Lưu ý rằng các nhóm có và không có cờ này có tên khác
khoảng trống.
-2 Nếu được đưa ra cùng với -J or -V tùy chọn, làm cho tất cả các bản sao được giữ lại.
Một lần nữa, các nhóm có và không có cờ này nằm trong các không gian tên khác nhau.
-X giải thích
giải thích chuỗi sẽ được in với danh sách các kết quả phù hợp, phía trên
nhóm hiện được chọn.
-x tin nhắn
Như -X, nhưng tin nhắn sẽ được in ngay cả khi không có kết quả phù hợp nào trong
nhóm.
-q Hậu tố được đưa ra với -S sẽ tự động bị xóa nếu ký tự tiếp theo
đã nhập là khoảng trống hoặc không chèn bất cứ thứ gì hoặc nếu hậu tố bao gồm
chỉ một ký tự và ký tự được gõ tiếp theo là cùng một ký tự.
-r xóa ký tự
Đây là một dạng linh hoạt hơn của -q Lựa chọn. Hậu tố được đưa ra với -S or
dấu gạch chéo được thêm tự động sau khi hoàn thành các thư mục sẽ là
tự động bị xóa nếu ký tự tiếp theo được nhập sẽ chèn một trong các
các ký tự được đưa ra trong xóa ký tự. Chuỗi này được phân tích cú pháp thành một ký tự
lớp và hiểu các chuỗi dấu gạch chéo ngược được sử dụng bởi in chỉ huy.
Ví dụ:-r "az \ t"'xóa hậu tố nếu ký tự tiếp theo được nhập
chèn một ký tự viết thường hoặc một TAB, và `-r "^ 0-9"'loại bỏ hậu tố
nếu ký tự tiếp theo được nhập sẽ chèn bất kỳ thứ gì ngoại trừ một chữ số. Thêm một
chuỗi dấu gạch chéo ngược được hiểu trong chuỗi này: `\-'là viết tắt của tất cả
ký tự không chèn gì. Như vậy '-S "=" -q'cũng giống như'-S "=" -r
"= \ t \ n \ - "'.
Tùy chọn này cũng có thể được sử dụng mà không có -S Lựa chọn; sau đó bất kỳ tự động
khoảng trắng đã thêm sẽ bị xóa khi nhập một trong các ký tự trong danh sách.
-R loại bỏ func
Đây là một dạng khác của -r Lựa chọn. Khi một hậu tố đã được chèn và
hoàn thành được chấp nhận, chức năng loại bỏ func sẽ được gọi sau
ký tự tiếp theo được nhập. Nó được truyền độ dài của hậu tố làm đối số
và có thể sử dụng các tham số đặc biệt có sẵn trong thông thường (không hoàn thành)
vật dụng zle (xem zshzle(1)) để phân tích và sửa đổi dòng lệnh.
-f Nếu cờ này được đưa ra, tất cả các trận đấu được xây dựng từ từ được đánh dấu là
là tên của các tệp. Chúng không bắt buộc phải là tên tệp thực, nhưng
nếu có, và tùy chọn LIST_TYPES được thiết lập, các ký tự mô tả
các loại tệp trong danh sách hoàn thành sẽ được hiển thị. Điều này cũng buộc a
dấu gạch chéo được thêm vào khi hoàn thành tên của một thư mục.
-e Cờ này có thể được sử dụng để thông báo cho mã hoàn thành rằng các kết quả phù hợp được thêm vào là
tên tham số cho một mở rộng tham số. Điều này sẽ làm cho
AUTO_PARAM_SLASH và AUTO_PARAM_KEYS các tùy chọn được sử dụng cho các trận đấu.
-W tiền tố tập tin
Chuỗi này là một tên đường dẫn sẽ được thêm vào trước mỗi trận đấu
được hình thành bởi cái đã cho từ cùng với bất kỳ tiền tố nào được chỉ định bởi -p
tùy chọn để tạo thành một tên tệp hoàn chỉnh để thử nghiệm. Do đó, nó chỉ hữu ích nếu
kết hợp với -f cờ, vì các thử nghiệm sẽ không được thực hiện theo cách khác.
-F mảng
Chỉ định một mảng chứa các mẫu. Các từ phù hợp với một trong các mẫu này
được bỏ qua, tức là không được coi là các trận đấu có thể xảy ra.
mảng có thể là tên của một tham số mảng hoặc một danh sách các ký tự
các mẫu được đặt trong dấu ngoặc đơn và được trích dẫn, như trong `-F "(*? o *?.NS)"'. Nếu như
tên của một mảng được đưa ra, các phần tử của mảng được coi là
hoa văn.
-Q Cờ này hướng dẫn mã hoàn thành không trích dẫn bất kỳ ký tự siêu nào trong
các từ khi chèn chúng vào dòng lệnh.
-M đối sánh
Điều này cung cấp thông số kỹ thuật đối sánh cục bộ như được mô tả bên dưới trong phần
`` Kiểm soát hoàn thành đối sánh '. Tùy chọn này có thể được đưa ra nhiều lần. Trong
trường hợp này tất cả đối sánhs đã cho được nối với dấu cách giữa chúng để
tạo thành chuỗi đặc điểm kỹ thuật để sử dụng. Lưu ý rằng chúng sẽ chỉ được sử dụng nếu
các -U tùy chọn không được đưa ra.
-n Chỉ định rằng các từ được thêm vào sẽ được sử dụng để phù hợp nhất có thể, nhưng
không xuất hiện trong danh sách hoàn thành.
-U Nếu cờ này được đưa ra, tất cả các từ được đưa ra sẽ được chấp nhận và không có từ phù hợp nào
được thực hiện bởi mã hoàn thành. Thông thường, điều này được sử dụng trong các hàm làm
sự phù hợp với chính họ.
-O mảng
Nếu tùy chọn này được đưa ra, từ đang không được thêm vào tập hợp có thể
hoàn thành. Thay vào đó, việc đối sánh được thực hiện như bình thường và tất cả từ được
vì các đối số khớp với chuỗi trên dòng lệnh sẽ được lưu trữ trong
tham số mảng có tên được đặt là mảng.
-A mảng
như -O tùy chọn, ngoại trừ tùy chọn đó thay vì tùy chọn từ khớp
được lưu trữ trong mảng, các chuỗi được tạo nội bộ bởi quá trình hoàn thành
mã được lưu trữ. Ví dụ: với đặc điểm kỹ thuật phù hợp của `-M
"L: | không ="', chuỗi'không'trên dòng lệnh và chuỗi'foo' như một
của từ, tùy chọn này lưu trữ chuỗi `nofoo'trong mảng, ngược lại
các -O tùy chọn lưu trữ `foo'ban đầu được đưa ra.
-D mảng
Như với -O, Các từ không được thêm vào tập hợp các hoàn thành có thể có.
Thay vào đó, mã hoàn thành kiểm tra xem mỗi lời lần lượt phù hợp với những gì là
trên đường dây. Nếu nth lời không khớp, nphần tử thứ của mảng
bị xóa. Các phần tử tương ứng với lời được kết hợp là
giữ lại.
-C Tùy chọn này thêm một kết hợp đặc biệt sẽ mở rộng cho tất cả các kết hợp khác khi
được chèn vào dòng, ngay cả những dòng được thêm vào sau khi tùy chọn này được sử dụng.
Cùng với -d tùy chọn có thể chỉ định một chuỗi phải
được hiển thị trong danh sách cho trận đấu đặc biệt này. Nếu không có chuỗi nào được đưa ra, nó
sẽ được hiển thị dưới dạng một chuỗi chứa các chuỗi sẽ được chèn vào
các kết quả khác khớp với chiều rộng của màn hình.
-E con số
Tùy chọn này thêm con số các trận đấu trống sau từ đã được thêm. Một
kết quả trống chiếm không gian trong danh sách hoàn thành nhưng sẽ không bao giờ được chèn
trong dòng và không thể được chọn khi hoàn thành menu hoặc chọn menu.
Điều này làm cho các kết quả phù hợp trống chỉ hữu ích để định dạng danh sách hoàn thành và
chuỗi giải thích được hiển thị trong danh sách hoàn thành (vì các kết quả phù hợp trống có thể
chuỗi hiển thị đã cho với -d Lựa chọn). Và bởi vì tất cả ngoại trừ một trống rỗng
nếu không chuỗi sẽ bị xóa, tùy chọn này ngụ ý -V và -2 lựa chọn
(ngay cả khi một -J tùy chọn được đưa ra). Điều này có thể quan trọng cần lưu ý là
nó ảnh hưởng đến không gian tên mà các kết quả phù hợp được thêm vào.
-
-- Cờ này kết thúc danh sách cờ và tùy chọn. Tất cả các đối số sau nó sẽ là
được coi là những từ để sử dụng làm kết hợp ngay cả khi chúng bắt đầu bằng dấu gạch ngang.
Ngoại trừ -M cờ, nếu bất kỳ cờ nào trong số này được đưa ra nhiều lần, cờ đầu tiên
một (và đối số của nó) sẽ được sử dụng.
tập hợp -p con số
tập hợp -P [ con số ] Belt Hold
tập hợp -s con số
tập hợp -S [ con số ] Belt Hold
tập hợp -n bắt đầu [ cuối ]
tập hợp -N van xin [ vỗ nhẹ ]
tập hợp -q
Lệnh này đơn giản hóa việc sửa đổi các tham số đặc biệt, trong khi giá trị trả về của nó
trạng thái cho phép các thử nghiệm trên chúng được thực hiện.
Các tùy chọn là:
-p con số
Nếu nội dung của TIẾP ĐẦU NGỮ tham số dài hơn con số nhân vật,
đầu tiên con số các ký tự được xóa khỏi nó và được nối vào nội dung
của IPREFIX tham số.
-P [ con số ] Belt Hold
Nếu giá trị của TIẾP ĐẦU NGỮ tham số bắt đầu bằng bất kỳ thứ gì phù hợp với
Belt Hold, phần phù hợp bị xóa khỏi TIẾP ĐẦU NGỮ và thêm vào IPREFIX.
Không có tùy chọn con số, trận đấu dài nhất được thực hiện, nhưng nếu con số is
đưa ra, bất cứ điều gì cho đến con sốtrận đấu thứ được di chuyển. Nếu con số is
tiêu cực, con sốtrận đấu dài nhất được di chuyển. Ví dụ, nếu TIẾP ĐẦU NGỮ
chứa chuỗi `a = b = c', sau đó tập hợp -P '* \ =' sẽ di chuyển chuỗi
`a = b =' vào IPREFIX tham số, nhưng tập hợp -P 1 '* \ =' sẽ chỉ di chuyển
chuỗi `a='.
-s con số
As -p, nhưng chuyển cuối cùng con số ký tự từ giá trị của HẬU VỆ đến
mặt trước của giá trị ĐỐI TƯỢNG SỐ.
-S [ con số ] Belt Hold
As -P, nhưng khớp với phần cuối cùng của HẬU VỆ và chuyển phần phù hợp
ở phía trước giá trị của ĐỐI TƯỢNG SỐ.
-n bắt đầu [ cuối ]
Nếu vị trí từ hiện tại như được chỉ định bởi tham số HIỆN HÀNH is
lớn hơn hoặc bằng bắt đầu, bất cứ điều gì cho đến bắt đầutừ thứ bị loại bỏ
từ từ mảng và giá trị của tham số HIỆN HÀNH đang giảm dần
by bắt đầu.
Nếu tùy chọn cuối được đưa ra, việc sửa đổi chỉ được thực hiện nếu hiện tại
vị trí từ cũng nhỏ hơn hoặc bằng cuối. Trong trường hợp này, các từ
từ vị trí cuối trở đi cũng bị xóa khỏi từ mảng.
Cả hai bắt đầu và cuối có thể là số âm để đếm ngược từ phần tử cuối cùng
của từ mảng.
-N van xin [ vỗ nhẹ ]
Nếu một trong các phần tử của từ mảng trước mảng tại chỉ mục đã cho
theo giá trị của tham số HIỆN HÀNH phù hợp với mô hình van xin, tất cả các
các phần tử lên đến và bao gồm phần tử phù hợp sẽ bị xóa khỏi từ
mảng và giá trị của HIỆN HÀNH được thay đổi để trỏ đến cùng một từ trong
mảng đã thay đổi.
Nếu mẫu tùy chọn vỗ nhẹ cũng được đưa ra và có một phần tử trong
các từ mảng phù hợp với mẫu này, các tham số chỉ được sửa đổi nếu
chỉ số của từ này cao hơn chỉ số được đưa ra bởi HIỆN HÀNH tham số
(để từ phù hợp phải ở sau con trỏ). Trong trường hợp này,
các từ bắt đầu bằng một từ phù hợp vỗ nhẹ cũng bị xóa khỏi từ
mảng. Nếu như từ không chứa từ phù hợp vỗ nhẹ, thử nghiệm và
sửa đổi được thực hiện như thể nó không được đưa ra.
-q Từ hiện đang được hoàn thành được chia trên khoảng trắng thành các từ riêng biệt,
tôn trọng các quy ước trích dẫn shell thông thường. Các từ kết quả là
được lưu trữ trong từ mảng, và HIỆN HÀNH, TIẾP ĐẦU NGỮ, HẬU VỆ, QIPPRIXvà
QISUFFIX được sửa đổi để phản ánh phần từ được hoàn thành.
Trong tất cả các trường hợp trên, trạng thái trả về là XNUMX nếu kiểm tra thành công và
các tham số đã được sửa đổi và khác XNUMX. Điều này cho phép một người sử dụng cái này
nội trang trong các thử nghiệm như:
if tập hợp -P '* \ ='; sau đó ...
Điều này buộc bất kỳ thứ gì lên đến và bao gồm cả dấu bằng cuối cùng bị bỏ qua bởi
mã hoàn thành.
gọi điện [ -TĐ ]
Điều này cho phép sử dụng các phần hoàn chỉnh được xác định với thu gọn nội trang từ bên trong
các vật dụng hoàn thành. Danh sách các kết quả phù hợp sẽ được tạo như thể một trong những
các chức năng hoàn thành không phải widget (từ hoàn chỉnh, v.v.) đã được gọi, ngoại trừ điều đó
có thể thu gọns cho các lệnh cụ thể được sử dụng. Để buộc mã thử
hoàn thành được xác định với -T tùy chọn thu gọn và / hoặc hoàn thành mặc định
(cho dù được định nghĩa bởi thu gọn -D hoặc mặc định bên trong) ở những vị trí thích hợp,
các -T và / hoặc -D cờ có thể được chuyển cho gọi điện.
Trạng thái trả lại có thể được sử dụng để kiểm tra xem có khớp thu gọn định nghĩa đã được tìm thấy.
Nó khác XNUMX nếu a thu gọn đã được tìm thấy và bằng không nếu không.
Lưu ý rằng nội trang này được xác định bởi zsh / compctl mô-đun.
HOÀN THÀNH ĐIỀU KIỆN MÃ
Các mã điều kiện bổ sung sau đây để sử dụng trong [[ ... ]] cấu trúc là
có sẵn trong các vật dụng hoàn thành. Chúng hoạt động dựa trên các tham số đặc biệt. Tất cả những thứ ở đây
các bài kiểm tra cũng có thể được thực hiện bởi tập hợp nội trang, nhưng trong trường hợp mã điều kiện
nội dung của các tham số đặc biệt không được sửa đổi.
-tiếp đầu ngữ [ con số ] Belt Hold
đúng nếu thử nghiệm cho -P tùy chọn tập hợp sẽ thành công.
-hậu tố [ con số ] Belt Hold
đúng nếu thử nghiệm cho -S tùy chọn tập hợp sẽ thành công.
-sau van xin
đúng nếu thử nghiệm của -N tùy chọn chỉ với van xin đưa ra sẽ thành công.
-giữa van xin vỗ nhẹ
đúng nếu thử nghiệm cho -N tùy chọn với cả hai mẫu sẽ thành công.
HOÀN THÀNH TRẬN ĐẤU KIỂM SOÁT
Nó có thể bằng cách sử dụng -M tùy chọn của bảo vệ lệnh nội trang để chỉ định cách
các ký tự trong chuỗi sẽ được hoàn thành (ở đây gọi là dòng lệnh) ánh xạ lên
các ký tự trong danh sách các kết quả phù hợp được tạo bởi mã hoàn thành (ở đây được gọi là
thử nghiệm hoàn thành). Lưu ý rằng điều này không được sử dụng nếu dòng lệnh chứa một hình cầu
mô hình và GLOB_COMPLETE tùy chọn được thiết lập hoặc mẫu_match của tính toán đặc biệt
liên kết được đặt thành một chuỗi không trống.
đối sánh được đưa ra làm đối số cho -M tùy chọn (xem `` Lệnh xây dựng hoàn thành ''
ở trên) bao gồm một hoặc nhiều mô tả phù hợp được phân tách bằng khoảng trắng. Mỗi
mô tả bao gồm một chữ cái theo sau bởi dấu hai chấm và sau đó là các mẫu mô tả
chuỗi ký tự nào trên dòng khớp với chuỗi ký tự nào trong thử nghiệm
hoàn thành. Bất kỳ chuỗi ký tự nào không được xử lý theo kiểu này phải khớp chính xác, như
bình thường.
Các hình thức của đối sánh được hiểu như sau. Trong mỗi trường hợp, biểu mẫu có
ký tự ban đầu trường hợp giữ lại chuỗi đã được nhập trên dòng lệnh làm ký tự cuối cùng
kết quả của việc hoàn thành, trong khi với ký tự đầu tiên viết thường, chuỗi trên lệnh
dòng được thay đổi thành phần tương ứng của quá trình hoàn thành thử nghiệm.
m:lpat=vỗ tay
M:lpat=vỗ tay
Ở đây, lpat là một mẫu khớp trên dòng lệnh, tương ứng với vỗ tay
phù hợp với quá trình hoàn thành thử nghiệm.
l:bệ phóng|lpat=vỗ tay
L:bệ phóng|lpat=vỗ tay
l:bệ phóng||chủ trang trại=vỗ tay
L:bệ phóng||chủ trang trại=vỗ tay
b:lpat=vỗ tay
B:lpat=vỗ tay
Các chữ cái này dành cho các mẫu được cố định bởi một mẫu khác ở bên trái
bên. Phù hợp với lpat và vỗ tay là như cho m và M, nhưng mô hình lpat phù hợp với
dòng lệnh phải được đặt trước bởi mẫu bệ phóng. Các bệ phóng có thể để trống
để neo kết quả khớp vào đầu chuỗi dòng lệnh; nếu không thì cái neo
có thể xảy ra ở bất cứ đâu, nhưng phải khớp trong cả dòng lệnh và hoàn thành thử nghiệm
dây.
Nếu không lpat được đưa ra nhưng một chủ trang trại là, điều này khớp với khoảng cách giữa các chuỗi con
phù hợp với bệ phóng và chủ trang trại. không giống bệ phóng, Các chủ trang trại chỉ cần phù hợp với
chuỗi hoàn thành thử nghiệm.
b và B các hình thức tương tự như l và L với một mỏ neo trống, nhưng cần phải khớp
chỉ khi bắt đầu hoàn thành thử nghiệm hoặc từ trên dòng lệnh,
tương ứng.
r:lpat|chủ trang trại=vỗ tay
R:lpat|chủ trang trại=vỗ tay
r:bệ phóng||chủ trang trại=vỗ tay
R:bệ phóng||chủ trang trại=vỗ tay
e:lpat=vỗ tay
E:lpat=vỗ tay
As l, L, b và B, với sự khác biệt là dòng lệnh và hoàn thành thử nghiệm
các mẫu được neo ở phía bên phải. Đây là một trống rỗng chủ trang trại và e và E
biểu mẫu buộc đối sánh đến cuối quá trình hoàn thành thử nghiệm hoặc chuỗi dòng lệnh.
Mỗi trang web lpat, vỗ tay or neo là một chuỗi rỗng hoặc bao gồm một chuỗi các ký tự
ký tự (có thể được trích dẫn bằng dấu gạch chéo ngược), dấu chấm hỏi, lớp ký tự và
các lớp thư từ; các mẫu vỏ thông thường không được sử dụng. Các ký tự chữ phù hợp
chỉ bản thân chúng, dấu hỏi phù hợp với bất kỳ ký tự nào và các lớp ký tự được tạo thành
để đánh bóng và khớp với bất kỳ ký tự nào trong tập hợp đã cho.
Các lớp tương ứng được định nghĩa giống như các lớp ký tự, nhưng có hai điểm khác biệt: chúng
được phân tách bằng một cặp dấu ngoặc nhọn và các lớp phủ định không được phép, vì vậy các ký tự
! và ^ không có ý nghĩa đặc biệt ngay sau dấu ngoặc nhọn mở đầu. Họ chỉ ra rằng một
phạm vi ký tự trên dòng khớp với một phạm vi ký tự trong quá trình hoàn thành thử nghiệm, nhưng
(không giống như các lớp nhân vật thông thường) được ghép nối theo vị trí tương ứng trong
sự nối tiếp. Ví dụ: để làm cho bất kỳ ký tự viết thường ASCII nào trên dòng khớp với
chữ hoa tương ứng trong quá trình hoàn thành thử nghiệm, bạn có thể sử dụng `m: {az} = {AZ}'
(tuy nhiên, hãy xem bên dưới để biết mẫu được đề xuất cho việc này). Nhiều hơn một cặp lớp có thể
xảy ra, trong trường hợp đó, lớp đầu tiên trước = tương ứng với cái đầu tiên sau nó, và
Sớm. Nếu một bên có nhiều lớp như vậy hơn bên kia, các lớp thừa
cư xử như các lớp nhân vật bình thường. Trong các mô hình neo, các lớp tương ứng cũng
cư xử như các lớp nhân vật bình thường.
Tiêu chuẩn '[:tên:]'các hình thức được mô tả cho các mẫu vỏ tiêu chuẩn (xem phần
FILENAME GENERATION trong zshexn(1)) có thể xuất hiện trong các lớp thư từ cũng như bình thường
các lớp nhân vật. Hành vi đặc biệt duy nhất trong các lớp tương ứng là nếu biểu mẫu trên
biểu mẫu bên trái và bên phải là một trong những [:phía trên:], [:thấp hơn:]. Trong những trường hợp này
ký tự trong từ và ký tự trên dòng phải giống nhau cho đến
sự khác biệt trong trường hợp. Do đó, để làm cho bất kỳ ký tự viết thường nào trên dòng khớp với
ký tự chữ hoa tương ứng trong quá trình hoàn thành thử nghiệm, bạn có thể sử dụng
`m: {[: low:]} = {[: upper:]}'. Mặc dù hệ thống đối sánh chưa xử lý multibyte
, đây có thể là một phần mở rộng trong tương lai, tại thời điểm đó, cú pháp này sẽ
xử lý bảng chữ cái tùy ý; do đó, biểu mẫu này, thay vì sử dụng các phạm vi rõ ràng, là
biểu mẫu được đề xuất. Trong các trường hợp khác[:tên:]'biểu mẫu được cho phép. Nếu hai hình thức trên
bên trái và bên phải giống nhau, các ký tự phải khớp chính xác. Trong các trường hợp còn lại,
các bài kiểm tra tương ứng được áp dụng cho cả hai ký tự, nhưng chúng không khác
bị ràng buộc; bất kỳ ký tự phù hợp nào trong một tập hợp đi với bất kỳ ký tự phù hợp nào trong
tập khác: điều này tương đương với hành vi của các lớp nhân vật thông thường.
Mẫu vỗ tay cũng có thể là một hoặc hai sao,*'hoặc'**'. Điều này có nghĩa là mô hình trên
dòng lệnh có thể khớp với bất kỳ số ký tự nào trong quá trình hoàn thành thử nghiệm. Trong trường hợp này
mẫu phải được neo (ở hai bên); trong trường hợp của một ngôi sao duy nhất, neo
sau đó xác định mức độ hoàn thành thử nghiệm sẽ được đưa vào - chỉ các ký tự
cho đến lần xuất hiện tiếp theo của mỏ neo sẽ được khớp. Với hai ngôi sao, chuỗi con
đối sánh bằng neo cũng có thể được đối sánh.
Ví dụ:
Chìa khóa của lựa chọn hiệp hội được xác định bởi tham số mô-đun là các tên tùy chọn
ở dạng viết thường, không có dấu gạch dưới và không có tùy chọn Không lúc bắt đầu
mặc dù những người xây dựng Setopt. và tháo gỡ hiểu tên tùy chọn với chữ hoa
chữ cái, dấu gạch dưới và tùy chọn Không. Các quy tắc sau thay đổi các quy tắc đối sánh để
tiền tố đó Không và mọi dấu gạch dưới đều bị bỏ qua khi cố gắng đối sánh bản thử nghiệm
phần hoàn thành được tạo và các chữ hoa trên dòng khớp với chữ thường tương ứng
các chữ cái in hoa trong các từ:
bảo vệ -M 'L: | [nN] [oO] = M: _ = M: {[: upper:]} = {[: Lower:]} ' - \
$ {(k) tùy chọn}
Phần đầu tiên nói rằng mô hình `[nN] [oO]ở đầu (mỏ neo trống trước
ký hiệu ống dẫn) của chuỗi trên dòng khớp với chuỗi trống trong danh sách các từ
được tạo bằng cách hoàn thành, vì vậy nó sẽ bị bỏ qua nếu có. Phần thứ hai làm tương tự
cho dấu gạch dưới ở bất kỳ đâu trong chuỗi dòng lệnh và phần thứ ba sử dụng
các lớp tương ứng sao cho bất kỳ chữ hoa nào trên dòng đều khớp với
chữ thường trong từ. Việc sử dụng các dạng chữ hoa của đặc tả
nhân vật (L và M) đảm bảo rằng những gì đã được nhập trên dòng lệnh (trong
tiền tố cụ thể Không) sẽ không bị xóa.
Lưu ý rằng việc sử dụng L trong phần đầu tiên có nghĩa là nó chỉ khớp khi ở phần đầu
của cả chuỗi dòng lệnh và quá trình hoàn thành thử nghiệm. Tức là chuỗi `_KHÔNG_f' sẽ
không được hoàn thành để `_KHÔNG_foo', cũng khôngNONO_f'được hoàn thành để'NONO_foo' bởi vì
dấu gạch dưới hàng đầu hoặc dấu gạch dưới thứ haiKHÔNG'trên dòng làm cho mẫu không đồng đều
mặc dù chúng bị bỏ qua theo cách khác. Để khắc phục điều này, người ta sẽ sử dụng `B: [nN] [oO] =' thay cho
phần đầu tiên. Như đã mô tả ở trên, điều này khớp khi bắt đầu hoàn thành thử nghiệm,
độc lập với các ký tự hoặc chuỗi con khác ở đầu từ dòng lệnh
được bỏ qua bởi cùng một hoặc khác đối sánhs.
Ví dụ thứ hai làm cho việc hoàn thành không phân biệt chữ hoa và chữ thường. Điều này cũng giống như trong
ví dụ tùy chọn, ngoại trừ ở đây, chúng tôi muốn giữ lại các ký tự trong danh sách hoàn thành:
bảo vệ -M 'm: {[: low:]} = {[: upper:]}' ...
Điều này làm cho các chữ cái viết thường khớp với các chữ cái viết hoa của chúng. Để viết hoa
các chữ cái cũng khớp với các dạng chữ thường:
bảo vệ -M 'm: {[: hạ:] [: trên:]} = {[: trên:] [: dưới:]}' ...
Một ví dụ hay cho việc sử dụng * các mẫu là hoàn thành một phần từ. Đôi khi bạn sẽ
thích tạo chuỗi như `csu'hoàn thành thành các chuỗi như'comp.source.unix', tức là
từ trên dòng lệnh bao gồm nhiều phần, được phân tách bằng dấu chấm trong ví dụ này,
trong đó mỗi phần phải được hoàn thành một cách riêng biệt - tuy nhiên, lưu ý rằng trường hợp mỗi
một phần của từ, tức làcomp','nguồn'và'unixtrong ví dụ này, sẽ được hoàn thành
từ các nhóm đối sánh riêng biệt là một vấn đề khác cần được giải quyết bằng cách triển khai
tiện ích hoàn thành. Ví dụ có thể được xử lý bằng cách:
bảo vệ -M 'r: |. = * r: | = * ' \
- comp.sources.unix comp.sources.misc ...
Đặc điểm kỹ thuật đầu tiên nói rằng lpat là chuỗi trống, trong khi neo là một dấu chấm; vỗ tay is
*, vì vậy điều này có thể khớp với bất kỳ thứ gì ngoại trừ `.'từ mỏ neo trong quá trình hoàn thành thử nghiệm
từ. Vì vậy, trong `csu', người so khớp thấy'c', theo sau là chuỗi trống, theo sau là
neo `.', và tương tự như vậy đối với dấu chấm thứ hai, và thay thế các chuỗi trống trước dấu
neo, cho `c[Chúa ơi].s[của chúng tôi].u[làm không công] ', trong đó phần cuối cùng của quá trình hoàn thành chỉ là
như bình thường.
Với mô hình hiển thị ở trên, chuỗi `cu'không thể được hoàn thành
`comp.sources.unix'bởi vì dấu sao đơn có nghĩa là không có dấu chấm nào (được đối sánh bởi ký tự neo) có thể
được bỏ qua. Bằng cách sử dụng hai ngôi sao như trong `r: |. = **', tuy nhiên,'cu'có thể được hoàn thành
`comp.sources.unix'. Điều này cũng cho thấy rằng trong một số trường hợp, đặc biệt nếu mỏ neo là
mẫu thực, chẳng hạn như một lớp ký tự, biểu mẫu có hai dấu sao có thể dẫn đến nhiều kết quả trùng khớp hơn
hơn một người muốn.
Đặc điểm kỹ thuật thứ hai là cần thiết để làm cho điều này hoạt động khi con trỏ ở giữa
chuỗi trên dòng lệnh và tùy chọn COMPLETE_IN_WORD được thiết lập. Trong trường hợp này,
mã hoàn thành thường sẽ cố gắng so khớp các lần hoàn thành thử nghiệm kết thúc bằng chuỗi là
đã nhập cho đến nay, tức là nó sẽ chỉ chèn các ký tự mới tại vị trí con trỏ chứ không phải
cuối cùng. Tuy nhiên, trong ví dụ của chúng tôi, chúng tôi muốn mã nhận dạng các kết quả phù hợp
chứa các ký tự thừa sau chuỗi trên dòng (dấu `làm không công'trong ví dụ). Kể từ đây
chúng tôi nói rằng chuỗi trống ở cuối chuỗi trên dòng khớp với bất kỳ ký tự nào
khi kết thúc quá trình thử nghiệm hoàn thành.
Nói chung hơn, đặc điểm kỹ thuật
bảo vệ -M 'r: | [., _-] = * r: | = * ' ...
cho phép một người hoàn thành các từ bằng chữ viết tắt trước bất kỳ ký tự nào trong ô vuông
dấu ngoặc. Ví dụ, để hoàn thành veryverylongfile.c chứ không phải là Verylongheader.h
với hiệu lực ở trên, bạn có thể chỉ cần nhập rất.c trước khi cố gắng hoàn thành.
Các thông số kỹ thuật với cả neo bên trái và bên phải rất hữu ích để hoàn thành một phần
từ mà các bộ phận của nó không được phân tách bằng một ký tự đặc biệt nào đó. Ví dụ, ở một số nơi
chuỗi phải được hoàn thành mà được hình thànhNhư thế này'(nghĩa là các phần riêng biệt là
được xác định bởi một chữ cái viết hoa đứng đầu) hoặc có thể người ta phải hoàn thành các chuỗi với
số theo sau. Ở đây người ta có thể sử dụng biểu mẫu đơn giản chỉ với một mỏ neo như trong:
bảo vệ -M 'r: | [[: upper:] 0-9] = * r: | = * ' Như thế này FooHoo 5foo123 5thanh234
Nhưng với điều này, chuỗi `H'sẽ không hoàn thành cho'FooHoo'cũng không phải'Như thế này' tại vì
trong mỗi trường hợp có một chữ cái viết hoa trước dấu `H'và điều đó được so khớp với
mỏ neo. Tương tự như vậy, một `2'sẽ không được hoàn thành. Trong cả hai trường hợp, điều này có thể được thay đổi bằng
sử dụng `r: | [[: upper:] 0-9] = **', nhưng sau đó'H'hoàn thành cho cả hai'Như thế này'và'FooHoo'và một
`2'khớp với các chuỗi khác vì các ký tự có thể được chèn trước mọi chữ hoa
chữ cái và chữ số. Để tránh điều này, người ta sẽ sử dụng:
bảo vệ -M 'r: [^ [: upper:] 0-9] || [[: upper:] 0-9] = ** r: | = * ' \
Như thế này FooHoo foo123 bar234
Bằng cách sử dụng hai neo này, một `H'chỉ khớp với chữ hoa'Hđó là ngay lập tức
đứng trước một cái gì đó phù hợp với neo bên trái '[^ [: upper:] 0-9]'. Hiệu quả là,
tất nhiên, điều đóH'chỉ khớp với chuỗi'FooHoo', một'2'chỉ phù hợp với'bar234' và như thế.
Khi sử dụng hệ thống hoàn thành (xem zshcompsys(1)), người dùng có thể xác định kết quả phù hợp
thông số kỹ thuật sẽ được sử dụng cho các ngữ cảnh cụ thể bằng cách sử dụng người kết hợp và
danh sách đối sánh phong cách. Các giá trị cho sau này sẽ được sử dụng ở mọi nơi.
HOÀN THÀNH WIDGET THÍ DỤ
Bước đầu tiên là xác định tiện ích con:
xem -C hoàn thành từ hoàn chỉnh tập tin đầy đủ
Sau đó, tiện ích có thể được liên kết với một khóa bằng cách sử dụng khóa liên kết lệnh nội trang:
khóa liên kết '^ X \ t' hoàn thành
Sau đó, hàm shell tập tin đầy đủ sẽ được gọi sau khi nhập control-X và
CHUYỂN HƯỚNG. Sau đó, hàm sẽ tạo ra các kết quả phù hợp, ví dụ:
tập tin đầy đủ () { bảo vệ - * }
Chức năng này sẽ hoàn thành các tệp trong thư mục hiện tại khớp với từ hiện tại.
Sử dụng zshcompwid trực tuyến bằng các dịch vụ onworks.net