2016-02-05 63 views

回答

0

首先,您可以通過函數獲得視覺上選擇的文本。我把這個從https://stackoverflow.com/a/6271254/3108885

function! s:GetVisualSelection() 
    let [lnum1, col1] = getpos("'<")[1:2] 
    let [lnum2, col2] = getpos("'>")[1:2] 
    let lines = getline(lnum1, lnum2) 
    let lines[-1] = lines[-1][:col2 - (&selection == 'inclusive' ? 1 : 2)] 
    let lines[0] = lines[0][col1 - 1:] 
    return join(lines, "\n") 
endfunction 

然後添加一個地圖可視模式:

vnoremap <buffer> <F5> :<C-U>exec '!python -c' shellescape(<SID>GetVisualSelection(), 1)<CR> 

如果按F5 ,視覺上選擇Python代碼會被執行。您可以通過在vnoremap之前預先設置autocmd FileType python來爲Python代碼定義此映射。因此可以處理多種文件類型。

autocmd FileType python vnoremap <buffer> <F5> :<C-U>exec '!python -c' shellescape(<SID>GetVisualSelection(), 1)<CR> 
autocmd FileType ruby vnoremap <buffer> <F5> :<C-U>exec '!ruby -e' shellescape(<SID>GetVisualSelection(), 1)<CR>