Как решить проблему связывания клавиш CTRL-t для fzf?

Недавно я нашел этот инструмент командной строки под названием fzf. Я установил его в соответствии с инструкциями, и он работает, за исключением привязки клавиш CTRL-T. Несмотря на то, что я установил специальный материал с привязками клавиш в соответствии с их инструкциями, а также попытался установить fzf, загруженный из репозитория git, а не через homebrew, все привязки клавиш CTRL-T, тем не менее, меняются местами последние два персонажи.

Я нашел это обсуждение по этому поводу, но ни один из предложенных ответов не работал для меня.

изменить: вы можете увидеть это в первом видео здесь, что я хочу достичь. редактировать 2: я использую терминал MacOs.

6 ответов

я использую zshс Oh My Zshна Mac.

Если я поставлю раньше в настройках плагина в .zshrcкак

      plugins=(... fzf ... vi-mode ...) 

Ctrl-tне работает показ ^T. Ctrl-rтоже не работает.

Но если fzfидет после vi-modeкак

      plugins=(... vi-mode ... fzf ...) 

проблем не возникает.

Если вы клонируете fzf из репозитория, он содержит файл с именем fzf/shell/key-bindings.zsh что относится к

fzf-file-widget() {
  LBUFFER="${LBUFFER}${__fsel}"
  local ret=$?
  zle redisplay
  typeset -f zle-line-init >/dev/null && zle-line-init
  return $ret
}
zle -N fzf-file-widget
bindkey "^T" fzf-file-widget

связывание клавиш Control-T. Это обычно получается вашим .zshrc

[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

который должен содержать ссылку на .fzf.zsh:

source "$HOME/.fzf/shell/key-bindings.zsh"

Если ваша привязка клавиш не работает, то ваша привязка клавиш может быть перезаписана вашим zshrc или может не вызываться вашим zshrc.

Если вы используете zsh-vi-mode, замените эту строку

      [ -f ~/.fzf.zsh ] && source ~/.fzf.zsh

с этим

      zvm_after_init_commands+=('[ -f ~/.fzf.zsh ] && source ~/.fzf.zsh')

zsh-vi-mode GitHubСо страницы

Я поместил приведенный ниже сценарий в свой .zshrc и получил его, используя source ~/.zshrc

      if [ -x "$(command -v fzf)"  ]
then
    source /usr/share/fzf/key-bindings.zsh
fi

и теперь привязки клавиш (CTRL-T, CTRL-R и ALT-C) работают для меня.

получил приведенный выше скрипт из того, как включить горячие клавиши для fzf

объяснение

у вас есть внутри / usr / share / fzf или несколько каталогов глубже. Вышеупомянутые скрипты исходят только в том случае, если установлен fzf.

остальная часть работы является частью , что, честно говоря, я не удосужился понять.

ОС : Manjaro GNU-Linux

Я заметил, что CTRL-T не работает (в bash), когда у меня включен режим "vi" set -o vi,

Мне удалось заставить комбинацию клавиш CTRL-t работать как нужно. Был один шаг, который я пропустил.

После установки полезных сочетаний клавиш и нечеткого завершения с /usr/local/opt/fzf/installЯ обновил fzf.bash вручную с [ -f ~/.fzf.bash ] && source ~/.fzf.bash, После перезапуска Терминала он теперь работает.

Изменить: Кроме того, эта строка должна быть добавлена ​​в ваш.bash_profile или.bashrc: source ~/.fzf.bash,

Другие вопросы по тегам