我将 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 有可能但不太可能以某种方式导致它无法工作。)