浏览代码

Add fzf plugin (#6910)

Maxime Brunet 5 年之前
父节点
当前提交
86542dcd86
共有 2 个文件被更改,包括 69 次插入0 次删除
  1. 19 0
      plugins/fzf/README.md
  2. 50 0
      plugins/fzf/fzf.plugin.zsh

+ 19 - 0
plugins/fzf/README.md

@@ -0,0 +1,19 @@
+# fzf
+
+This plugin enables [junegunn's fzf](https://github.com/junegunn/fzf) fuzzy auto-completion and key bindings
+
+```zsh
+# Set fzf installation directory path
+export FZF_BASE=/path/to/fzf/install/dir
+
+# Uncomment the following line to disable fuzzy completion
+# export DISABLE_FZF_AUTO_COMPLETION="true"
+
+# Uncomment the following line to disable key bindings (CTRL-T, CTRL-R, ALT-C)
+# export DISABLE_FZF_KEY_BINDINGS="true"
+
+plugins=(
+  ...
+  fzf
+)
+```

+ 50 - 0
plugins/fzf/fzf.plugin.zsh

@@ -0,0 +1,50 @@
+test -d "${FZF_BASE}" && fzf_base="${FZF_BASE}"
+
+if [[ -z "${fzf_base}" ]]; then
+  fzfdirs=(
+    "${HOME}/.fzf"
+    "/usr/local/opt/fzf"
+    "/usr/share/fzf"
+  )
+  for dir in ${fzfdirs}; do
+      if [[ -d "${dir}" ]]; then
+          fzf_base="${dir}"
+          break
+      fi
+  done
+
+  if [[ -z "${fzf_base}" ]]; then
+      if (( ${+commands[brew]} )) && dir="$(brew --prefix fzf 2>/dev/null)"; then
+          if [[ -d "${dir}" ]]; then
+              fzf_base="${dir}"
+          fi
+      fi
+  fi
+fi
+
+if [[ -n "${fzf_base}" ]]; then
+
+  # Setup fzf
+  # ---------
+  if [[ ! "$PATH" == *$fzf_base/bin* ]]; then
+    export PATH="$PATH:$fzf_base/bin"
+  fi
+  
+  # Auto-completion
+  # ---------------
+  if [[ ! "$DISABLE_FZF_AUTO_COMPLETION" == "true" ]]; then
+    [[ $- == *i* ]] && source "$fzf_base/shell/completion.zsh" 2> /dev/null
+  fi
+  
+  # Key bindings
+  # ------------
+  if [[ ! "$DISABLE_FZF_KEY_BINDINGS" == "true" ]]; then
+    source "$fzf_base/shell/key-bindings.zsh"
+  fi
+
+else
+  print "[oh-my-zsh] fzf plugin: Cannot find fzf installation directory.\n"\
+        "Please add \`export FZF_BASE=/path/to/fzf/install/dir\` to your .zshrc" >&2
+fi
+
+unset fzf_base