如何 fzf vim/nvim 的最近文件,而不是在 vim 内,而是从终端

How to fzf recent files of vim/nvim, not inside vim but from terminal

我知道如何fzf.vim,但我想从终端打开。

Grepping history 或 viminfo 可能会达到目的,但我想知道是否有任何聪明的方法。

不是精确解。但是您可以像 IDE 一样在 vim 编辑的下部打开一个终端缓冲区,然后使用您的终端 fzf

但是,不确定这是否会让您在新的 vim 选项卡中打开文件

这是将 vim 中的最近文件列表保存到文件的方法:

vim -c "call append(0, v:oldfiles)" -c "write vim-oldfiles.tmp" -c exit

v:oldfiles(保存在~/.viminfo中的最近文件列表)放入第一个(开始时新的和空的)缓冲区,将缓冲区写入文件,退出。

现在您可以将文件内容传递给fzf

如果您在对路径中包含 ~ 的文件执行 vim 时遇到问题(vim 打开一个新的空白文件而不是所需的文件),因为 fzf 和 vim 不要扩展波浪号 (~),我是这样做的:

export FZF_DEFAULT_OPTS=$FZF_DEFAULT_OPTS"
--bind 'ctrl-e:execute(vim -c \"execute \\"edit\\" expand({})\" >/dev/tty)'
"

基于this.

的反复试验

我有一个名为 old 的 zsh 自动加载函数:

function old(){
    vim -c 'redir >> /tmp/oldfiles.txt | silent oldfiles | redir end | q'
    sed -i '/NvimTree$/d' /tmp/oldfiles.txt
    local fname
    fname=$(awk '/home/ && !/man:/ {print }' /tmp/oldfiles.txt | fzf) || return
    vim "$fname"
    \rm /tmp/oldfiles.txt
}