示例文件:Selection_192.png
$ ls 192
- 现在我按Tab两次
- 它应该自动完成
$ ls Selection_192.png
笔记:
它不仅可以与ls
任何类型的命令一起工作,而且最好是与 Ubuntu Unity 16.04 中的默认 shell 一起工作的解决方案。
答案1
由于您没有提到具体的 shell,因此一种方法是安装zsh
。
sudo apt-get install zsh
# now change the default shell
chsh -s /usr/bin/zsh
sudo chsh -s /usr/bin/zsh
现在,您已将 zsh 作为默认 shell,而不是 bash,要获得模糊完成,请将其添加到~/.zshrc
文件:
zstyle ':completion:*' matcher-list '' \
'm:{a-z\-}={A-Z\_}' \
'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \
'r:|?=** m:{a-z\-}={A-Z\_}'
例如,我的样子如下~/.zshrc
:
# bash style (read as the adequate) for navigating words
autoload -U select-word-style
select-word-style bash
# some plugins
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source ~/.zsh/zsh-autosuggestions/zsh-autosuggestions.zsh
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE='fg=7'
zstyle ':completion:*' matcher-list '' \
'm:{a-z\-}={A-Z\_}' \
'r:[^[:alpha:]]||[[:alpha:]]=** r:|=* m:{a-z\-}={A-Z\_}' \
'r:|?=** m:{a-z\-}={A-Z\_}'
bindkey \^U backward-kill-line
#useful aliases
alias grep1="grep --exclude-dir=\".*\""
alias gdb="gdb -q"
注意::zsh 的用处在于它非常可扩展,并且在许多方面与 bash 兼容。相反,例如 fish(bash 的另一种替代品,与配置好的 zsh 非常相似)根据我的经验,这会导致许多不兼容问题。
更新型多巴胺:根据 OP 评论:如果你想提高字母彼此接近的要求(即,它不是模糊完成,而只是一个子序列完成), 然后反而我提到的正则表达式你可以输入~/.zshrc
此代码:
zstyle ':completion:*' completer _complete
zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower:]}' '+l:|=* r:|=*'
autoload -Uz compinit
compinit