像vim-r-plugin这样的vim python插件

时间:2015-08-22 12:36:10

标签: python vim ide vim-plugin

作为一个坚定的VIM倡导者和R用户,我已经成长为真正享受Vim-R-plugin中的vim-tmux相互作用。我一直无法找到这个的python版本。不存在吗?

我注意到一个显示Rstudio equivalents for Python的类似问题,但我正在寻找像这样的东西,住在vim ....

编辑: 特别是,我正在寻找的东西

  • 具有语法高亮显示
  • 已完成代码
  • 允许我将代码从vim选项卡发送到python REPL

奖励积分如果:

  • 它有一个对象浏览器(用于检查会话变量的内容)
  • 在vim标签中打开文档

3 个答案:

答案 0 :(得分:1)

另一种方法是使用screen vim插件。我更喜欢它,因为它避免了配置步骤。所以这就是你做的:

  1. 安装screen vim插件
  2. .vimrc中创建一些便利命令(请参阅下面我添加的内容)
  3. 打开.py文件,点击<LocalLeader>p即可开始使用。请注意,在打开TMUX文件之前,您不必打开.py
  4. 这是我添加的内容(基于https://github.com/akhilsbehl/configs/blob/master/vimrc):

    " use tmux for splitting screen
    let g:ScreenImpl = "Tmux"
    
    " default width of tmux shell pane
    let g:ScreenShellWidth = 82
    
    " open an ipython shell (! for vertical split)
    autocmd FileType python map <LocalLeader>p IPython!<CR>
    
    " close whichever shell is running
    autocmd FileType python map <LocalLeader>q :ScreenQuit<CR>
    
    " send commands
    " line
    autocmd FileType python map <LocalLeader>r V:ScreenSend<CR>0j
    " block
    autocmd FileType python map <LocalLeader>b {jv}:ScreenSend<CR>}
    " selection
    autocmd FileType python map <LocalLeader>v :ScreenSend<CR>`>}0j
    
    " convenience
    autocmd FileType python map <LocalLeader>gw :call g:ScreenShellSend('!pwd')<CR>
    autocmd FileType python map <LocalLeader>L :call g:ScreenShellSend('!clear')<CR>
    autocmd FileType python map <LocalLeader>t :call g:ScreenShellSend('%%time')<CR>
    autocmd FileType python map <LocalLeader>tt :call g:ScreenShellSend('%%timeit')<CR>
    autocmd FileType python map <LocalLeader>db :call g:ScreenShellSend('%%debug')<CR>
    autocmd FileType python map <LocalLeader>pr :call g:ScreenShellSend('%%prun')<CR>
    
    " get ipython help for word under cursor
    function GetHelp()
      let w = expand("<cword>") . "??"
      :call g:ScreenShellSend(w)
    endfunction
    autocmd FileType python map <LocalLeader>h :call GetHelp()<CR>
    
    " get `dir` help for word under cursor
    function GetDir()
      let w = "dir(" . expand("<cword>") . ")"
      :call g:ScreenShellSend(w)
    endfunction
    autocmd FileType python map <LocalLeader>d :call GetDir()<CR>
    
    " get `len` for word under cursor
    function GetLen()
      let w = "len(" . expand("<cword>") . ")"
      :call g:ScreenShellSend(w)
    endfunction
    autocmd FileType python map <LocalLeader>l :call GetLen()<CR>
    

答案 1 :(得分:1)

我确信它不像你想要的那样功能齐全,但我刚刚发布了这个插件。

https://github.com/iago-lito/intim

  • 它包围了sbstn
  • 提供的tmux会话
  • 它还提供语法高亮显示
  • 在vim缓冲区中提供帮助
  • 没有检查python对象,但“热键”可以很快发送有关您的自定义python项的请求。

尝试一下,不要犹豫,在回购邮件中提交您的第一个错误报告/功能请求:)

答案 2 :(得分:0)

迄今为止我发现的最好的是https://github.com/jpalardy/vim-slime

如何使用vim-slime

  1. 开始tmux
  2. 分成两个窗格
  3. 在一个窗格中使用vim打开脚本
  4. 切换到其他窗格
  5. 使用echo $TMUX_PANE获取tmux窗格的名称(需要7)
  6. 打开ipython
  7. :SlimeConfig中运行vim,保留套接字名称"default"并输入目标窗格,例如%14
  8. 使用C-c C-c将代码从vim发送到ipython