2017-12-27 162 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>