2017-12-27 78 views
0

实际上,我搜索使模糊检索与VIM :FZF,但像这样:FZF -q /tmp/boulouVIM FZF获取所选词作为--query参数

但参数,更换/tmp/boulou在视觉模式中选择的话并将其绑定到vmap。

你有想法帮助我吗?

感谢,亲切的问候

+0

多远你来了?你已经有一个函数,它需要一个范围作为参数?你有'vmap'吗?你知道如何在vimscript中调用'fzf'吗?如果选择了多条线,你想要做什么?在视觉模块模式下该做什么? –

+0

这个工作在命令中:':FZF -q/tmp/boulou',nop,我没有这个功能,我的vmap是这样的'vnoremap f:FZF -q ',我只想选择一行 –

+0

此时您正在光标下选择要搜索的单词,而不是行。所以你总是想要搜索整条线是正确的?或只是选择的话? –

回答

1

因此到xolox answer,你可以像这样创建的映射:

function! s:getVisualSelection() 
    let [line_start, column_start] = getpos("'<")[1:2] 
    let [line_end, column_end] = getpos("'>")[1:2] 
    let lines = getline(line_start, line_end) 

    if len(lines) == 0 
     return "" 
    endif 

    let lines[-1] = lines[-1][:column_end - (&selection == "inclusive" ? 1 : 2)] 
    let lines[0] = lines[0][column_start - 1:] 

    return join(lines, "\n") 
endfunction 

vnoremap <silent><leader>f <Esc>:FZF -q <C-R>=<SID>getVisualSelection()<CR><CR> 

请记住,它只会工作一个字的选择。它不适用于多行或包含制表符的选择。你只需要调用一个函数而不是一个命令,但由于我没有安装fzf,你必须自己完成。

如果你需要搜索光标下的单词(正常模式):

nnoremap <silent><leader>f :FZF -q <C-R>=expand("<cword>")<CR><CR>