2016-02-05 69 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>