如何 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
}
我知道如何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
}