
我將 zsh 與 一起使用zim
,這通常非常好。理想情況下,我希望 umount 的製表符完成功能僅建議/run/media/$USER
.在下列範例中,這是一個名為 的單一磁碟區L_drive
。
$ cd /run/media/sparhawk
$ ls
L_drive
$ umount <Tab>
-- device label --
binfmt_misc debugfs fusectl mqueue run systemd-1
cgroup dev gvfsd-fuse proc securityfs tmpfs
configfs devpts hugetlbfs pstore sys
-- device path --
/dev/sda2 /dev/sdb5 /dev/sdb6 /dev/sdc1
-- mount point --
/ /run/media/sparhawk/L_drive /sys/fs/cgroup/pids
/dev /run/user/1000 /sys/fs/cgroup/systemd
/dev/hugepages /run/user/1000/gvfs /sys/fs/fuse/connections
/dev/mqueue /sys /sys/fs/pstore
/dev/pts /sys/fs/cgroup /sys/kernel/config
/dev/shm /sys/fs/cgroup/blkio /sys/kernel/debug
/HDD /sys/fs/cgroup/cpu,cpuacct /sys/kernel/security
/home /sys/fs/cgroup/cpuset /tmp
L_drive /sys/fs/cgroup/devices /var/cache
/proc /sys/fs/cgroup/freezer /var/log
/proc/sys/fs/binfmt_misc /sys/fs/cgroup/memory /var/tmp
/run /sys/fs/cgroup/net_cls
那裡有很多我不想完成的東西。我想刪除所有這些建議,只保留絕對路徑的製表符補全/run/media/sparhawk/L_drive
。
FWIW zim 有以下內容漏洞輸入字母後找不到相對路徑。
$ umount L<Tab>
-- no matches found --
但假設我可以刪除所有其他建議,只保留 中的絕對路徑/run/media/$USER/*
,那麼這個錯誤就沒有實際意義了。
答案1
您可以使用ignored-patterns
風格排除某些完成情況。
zstyle ':completion:*:umount:*' ignored-patterns "^/run/media/$USER/*"
在預設設定下,如果沒有非忽略的候選者,您仍然可以獲得忽略模式的補全。
(這個答案適用於使用compinit
補全系統的普通 zsh. zim 有可能但不太可能以某種方式導致它無法工作。)