我正在寻找一个 shell 扩展,允许我进行类似于文件名的补全Command-T。
Command-T 是 TextMate 中的一项功能,也是 Vim 的一个插件,它允许您通过键入文件名中不需要连续的部分来选择文件名。它使用排名系统来决定使用哪个文件名,并提供可用选项菜单。如果您不熟悉此功能,最好的理解方法是观看第一个视频Command-T github 页面。
我可以使用什么工具,以便我可以在我的 shell 中使用 Command-T 样式完成文件名?(目前是 Bash,也可以选择其他方式。)
答案1
Zsh 来救援!
将以下内容放入您的 ~/.zshrc 文件并享受!
请注意,它可能不如 TM 查找文件名的能力那么好,但它比 bash 中的默认自动完成功能好得多。
##############################################################
# Stuff from http://zshwiki.org/home/examples/compquickstart #
##############################################################
zmodload zsh/complist
autoload -U compinit && compinit
zstyle ':completion:::::' completer _complete _approximate
zstyle -e ':completion:*:approximate:*' max-errors 'reply=( $(( ($#PREFIX + $#SUFFIX) / 3 )) )'
zstyle ':completion:*:descriptions' format "- %d -"
zstyle ':completion:*:corrections' format "- %d - (errors %e})"
zstyle ':completion:*:default' list-prompt '%S%M matches%s'
zstyle ':completion:*' group-name ''
zstyle ':completion:*:manuals' separate-sections true
zstyle ':completion:*' menu select
zstyle ':completion:*' verbose yes
## case-insensitive (uppercase from lowercase) completion
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
#zstyle ':completion:*' special-dirs ..
答案2
以下是我添加的方式Command-T/控制板我的 ZShell 中的模糊补全:
步骤1:安装matcher
。
第2步:将以下内容添加到您的~/.zshrc
:
_matcher_complete() {
integer i=1
(git ls-files 2>/dev/null || find .) | /usr/local/bin/matcher --limit 20 ${words[CURRENT]} | while read line; do
compadd -U -2 -V $i -- "$line"
i=$((i+1))
done
compstate[insert]=menu
}
zle -C matcher-complete complete-word _generic
zstyle ':completion:matcher-complete:*' completer _matcher_complete
zstyle ':completion:matcher-complete:*' menu-select
bindkey '^X^T' matcher-complete
步骤3:输入要模糊查找的字符串,输入CTRL+ xt,然后享受: