如何透過製表符完成卸載,限制特定目錄中的磁碟區?

如何透過製表符完成卸載,限制特定目錄中的磁碟區?

我將 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 有可能但不太可能以某種方式導致它無法工作。)

相關內容