0

我是 VIM 新手,正在使用此命令保存和运行 Python 脚本:

:w !python

但是,我不能上下移动来读取输出。我得到的唯一选择是按回车键或输入命令。我试图 yank( :%y+) 一切,但实际的代码是 yank 而不是输出。我希望能够读取 VIM 中显示的所有输出,甚至更好的是打开一个带有输出的新选项卡并能够搜索和阅读所有内容。

4

2 回答 2

2

您可以像往常一样使用重定向,将运行脚本的 python 的输出写入不同的文件。例如:

:w !python > temp

进而

:tabnew temp

不确定是否有办法将输出直接写入另一个缓冲区。

另一种选择是将你的脚本保存到一个文件中(比如“script.py”),然后切换到你想要查看输出的另一个缓冲区,然后像这样过滤它:

:%!python script.py

它将用脚本的输出替换缓冲区的全部内容。

于 2013-08-14T18:46:36.487 回答
0

把这个函数放在你的 vimrc 中。它将打开一个带有捕获输出的窗口(对于任何命令,而不仅仅是 python)。

function! Redir(cmd)
  for win in range(1, winnr('$'))
    if getwinvar(win, 'scratch')
      execute win . 'windo close'
    endif
  endfor
  if a:cmd =~ '^!'
    let output = system(matchstr(a:cmd, '^!\zs.*'))
  else
    redir => output
    execute a:cmd
    redir END
  endif
  botright vnew
  let w:scratch = 1
  setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap
  call setline(1, split(output, "\n"))
endfunction
"`:Redir` followed by either shell or vim command
command! -nargs=+ -complete=command Redir silent call Redir(<q-args>)

也在做:help pythonvim。还有python插件。

于 2019-11-15T11:17:22.903 回答