0

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

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

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

4

1 回答 1

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
}
于 2018-02-11T12:04:39.357 回答