首页 > 解决方案 > z 跳转相当于编辑文件?

问题描述

在我的情况下,是否有等效于 z 跳转以使用 vim 之类的终端编辑器打开大多数编辑过的文件?我浏览了 GitHub,但找不到任何东西。

标签: shellvimvineovim

解决方案


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


自定义完成

使用fzfcustom-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

正如文档所说,自定义完成 API 是实验性的,可能会发生变化。


使用新命令的上一个答案

例如,我们可以从中读取历史记录并使用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并在终端中运行。


推荐阅读