如何将当前选定的(在可视模式下)文本内容发送到bash命令?
我知道,可以使用:!
调用bash命令,但其余的我找不到文档。
答案 0 :(得分: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代码。您可以通过在autocmd FileType python
之前添加vnoremap
来为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>