fzf将文件读入nvim缓冲区

时间:2018-02-10 22:19:50

标签: vim code-snippets fzf

我有一个目录,其中包含一组用于技术编写的模板,并与其他人共享(他们将其作为sublime包的一部分使用)。由于我使用的是nvim,我经常打开一个单独的tmux窗格,使用:fzf.vim中的文件打开模板,复制其内容,然后将其粘贴到我的缓冲区中。

或者,我可以从模板目录中读取:r,但这并不是模糊搜索,因此很难在数百个选项中找到正确的文件。 gotbletu的https://www.youtube.com/watch?v=Zew0mgJwAh8将是一个完美的解决方案,除了我不能在他的脚本需要的每个模板的顶部添加标签(同样,模板与其他人共享)。

我试图在shell函数中将f与fzf结合起来,但到目前为止没有任何效果。有关如何完成这项工作的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以尝试在init.vim中添加以下内容

let g:pathToTemplates='/tmp/'
function! GoSink(file)
    execute ':r '.g:pathToTemplates.a:file
endfunction
command! Go call fzf#run({
    \  'source': 'ls '.g:pathToTemplates,
    \  'sink':    function('GoSink')})

然后输入:Go

如果你真的想从终端上做这个,那么你在bashrc / zshrc /...中需要这个。

function fzfreadtemplate(){
    local templatedir='/tmp/'
    filename="$templatedir"$(ls "$templatedir" | fzf)
    if [[ -f "$filename" ]]; then
        vim -c ':r '"$filename"
    fi
}