vim:将文本选择发送给bash

时间:2016-02-05 02:30:35

标签: linux vim

如何将当前选定的(在可视模式下)文本内容发送到bash命令?

我知道,可以使用:!调用bash命令,但其余的我找不到文档。

1 个答案:

答案 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>