Per impostazione predefinita, il motore di completamento di zsh cerca solo di aggiungere qualcosa a ciò che scrivi. Lo hai configurato per provare ad aggiungere anche un prefisso. Il semplice motore di configurazione del completamento interattivo ( compinstall) offre questa opzione sotto "controllo corrispondenza → completamento sottostringa". Questo inserisce una linea come questa nel tuo .zshrc:
zstyle ':completion:*' matcher-list '' 'l:|=* r:|=*'
Il zstylebuiltin imposta (principalmente) le impostazioni di completamento. Lo matcher-liststile di completamento è un elenco di modi per provare in successione, fermandosi quando c'è almeno una corrispondenza. La stringa vuota indica il completamento predefinito (solo suffissi). L' incantesimo del controllo di corrispondenzal:|=* r:|=* significa provare una corrispondenza di prefisso *e una corrispondenza di suffisso *, vale a dire qualsiasi prefisso e suffisso.
Puoi vietare i prefissi che iniziano con del _tutto. Ciò consente comunque il completamento delle parole che iniziano con _e il completamento aggiungendo un prefisso, ma il prefisso potrebbe non iniziare con _.
zstyle ':completion:*' matcher-list '' 'l:|=[^_]* r:|=*'
Questo vale per tutti i completamenti, non solo per i completamenti dei nomi dei comandi. Non so come limitare questo ai nomi dei comandi.
Dovrebbe esserci un modo per escludere più precisamente i nomi dei comandi che iniziano con _, ma non so come. Un primo inizio è con lo ignored-patternsstile di completamento.
zstyle ':completion:*:*:-command-:*:*' ignored-patterns '_*'
Questo esclude le partite che iniziano con _; tuttavia, se non ci sono corrispondenze, zsh riprova senza le regole ignora. Il bello di questo è che se il comando è iniziato con un trattino basso in primo luogo, sarà completato in questo secondo passaggio. La parte cattiva è che zsh proverà quindi ad aggiungere comunque un trattino basso se non ci sono corrispondenze, quindi se hai vie viewnon vimpremendo poi Tabdopo vioffrirai vie viewma no _vim, ma se scrivi vimallora il completamento offrirà _vim.