Command-T 用于 shell

Command-T 用于 shell

我正在寻找一个 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,然后享受:

终端演示

答案3

Cmd+T 在 TextMate 中的作用是“模糊匹配”(并且变体)。

bash谷歌搜索这些与退货相关的术语这个脚本Stackoverflow 上的相关问题。

看来我找到了一个新玩具!

答案4

是一个支持部分路径自动完成

例如cd /v/l/fsck Tab将路径转换为/var/log/fsck/cd /u/s/appl Tab将路径扩展为/usr/share/applications/

相关内容