在vim中运行代码块

时间:2016-02-04 18:38:52

标签: python vim

我最近在.vimrc中添加了以下代码:

{{1}}

允许我在按下F9键时从vim内部运行整个python脚本。尽管如此,有几次我不想运行整个python脚本,只需要一行甚至一行代码。我搜索了这些行为,但找不到任何有效的解决方案,至少对我而言。

有人可以帮我这个吗?

由于

1 个答案:

答案 0 :(得分:1)

首先,你应该创建一个函数来获取视觉选择的文本。我是从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

然后,为可视模式添加autocmd

autocmd FileType python vnoremap <buffer> <F9> :<C-U>exec '!clear; python -c' shellescape(<SID>GetVisualSelection(), 1)<CR>

请注意,<C-U>用于在可视模式下按'<,'>时清除:内容。我们还使用python -c将程序作为字符串传递。