z 跳转等同于编辑文件?

z jump around equivalent for editing files?

在我的例子中,是否有与 z jump around 等效的功能,可以使用像 vim 这样的终端编辑器打开大多数编辑过的文件?我已浏览 GitHub 但找不到任何内容。

Vim 记住最近由 v:oldfiles 打开的文件,这些文件是从 ~/.viminfo 文件加载的。


自定义完成

使用fzf and custom-fuzzy-completion,我们可以更自然地从历史中搜索文件,如vim **<TAB>

# Custom fuzzy completion for "vim" command
#   e.g. vim **<TAB>
_fzf_complete_vim() {
  _fzf_complete --multi --reverse --prompt="vim> " -- "$@" < <(
      cat ~/.viminfo | grep '^>' | sed 's/^> //'
  )
}

zsh 你可以开始了。在bash中,您必须手动调用complete命令。

[ -n "$BASH" ] && complete -F _fzf_complete_vim -o default -o bashdefault vim

As the documentation says, the custom completion API is experimental and subject to change.


以前的答案使用新命令

例如,我们可以从中读取历史记录并使用fzf搜索文件,如下所示

#!/bin/bash

file=$(cat ~/.viminfo | grep '^>' | sed 's/^> //' | fzf)
file=${file/#\~/$HOME}
if [ ! -z "$file" ]; then
  vim $file
fi
  • 阅读.viminfo。获取打开的文件列表。传递给 fzf
  • ~ 替换为 $HOME(Vim 不会在文件参数中展开 ~
  • 如果文件不为空则打开文件

您可以在终端中将其保存为 vim-history.sh 和 运行。