【问题标题】:fzf to read file into nvim bufferfzf 将文件读入 nvim 缓冲区
【发布时间】:2018-07-21 10:11:25
【问题描述】:

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

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

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

【问题讨论】:

    标签: vim code-snippets fzf


    【解决方案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
    }
    

    【讨论】:

    • 你是最棒的。所以,shell 脚本就像一个魅力。 nvim.init 的脚本(这正是我想要的)调用 fzf 但目录是空的。我确实将 /tmp/ 路径更改为指向我的模板目录,并且在添加脚本后还获取了 init.vim 。我还在尝试调试它
    猜你喜欢
    • 2022-08-05
    • 2018-10-02
    • 2021-11-30
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-26
    相关资源
    最近更新 更多