4

Я ищу расширение оболочки, которое позволяет мне выполнять завершение имени файла аналогично Command-T.

Command-T - это функция в TextMate и плагин для Vim, который позволяет выбирать имена файлов, вводя их части, которые не обязательно должны быть смежными. Он использует систему ранжирования, чтобы решить, какое имя файла использовать, и предоставляет меню доступных опций. Если вы не знакомы с этой функцией, лучший способ понять ее - посмотреть первое видео со страницы Command-T github.

Какой инструмент я могу использовать, чтобы иметь возможность завершения в стиле Command-T для имен файлов в моей оболочке? (Bash в настоящее время открыт для альтернатив.)

5 ответов5

2

Зш на помощь!

Бросьте следующее в ваш файл ~/.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 ..
1

Вот как я добавил нечеткое завершение Command-T/CtrlP в мой 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 и наслаждайтесь:

Терминал Демо

0

fish - альтернативная оболочка, поддерживающая автозаполнение по частичному пути

Например, cd /v/l/fsck Tab преобразует путь в /var/log/fsck/ . Вкладка cd /u/s/appl расширит путь к /usr/share/applications/ .

0

Имя того, что делает Cmd+T в TextMate, - "нечеткое соответствие" (и варианты).

Поиск этих терминов, связанных с bash возвращает этот сценарий и связанный с ним вопрос о Stackoverflow.

Похоже, я нашел новую игрушку!

0

Вы можете проверить fzf, нечеткий искатель общего назначения для любой оболочки.

Его скрипт установки добавит привязку клавиш CTRL-T к вашей оболочке, которая работает почти так же, как Command-T.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .