vim map命令ipython

时间:2013-11-11 16:11:41

标签: vim ipython

我正在尝试映射一个从https://github.com/ivanov/vim-ipython启动ipython qtconsole和下一个IPython的函数。

我做的是:

map <key> :!ipython qtconsole&:IPython<CR>

当我在vim上按<key>时,它运行良好但来自ipython控制台的消息显示在vim编辑器上,因此我看不到我的代码。

所以我试过了:

nnoremap <silent> <key> :!ipython qtconsole&:IPython<CR>

但没有改变。

以下是来自ipython的显示消息:

[IPKernelApp] To connect another client to this kernel, use:
[IPKernelApp] --existing kernel-4812.json
void DBusMenuExporterPrivate::addAction(QAction*, int): Already tracking action "%%!" under id 54 
void DBusMenuExporterPrivate::addAction(QAction*, int): Already tracking action "%%capture" under id 56 
void DBusMenuExporterPrivate::addAction(QAction*, int): Already tracking action "%%timeit" under id 57 
...

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用&>/dev/null(在&之前)或使用system()代替爆炸来:call system('ipython qtconsole&')|IPython来沉默ipython。

我猜你在sleep之前需要:IPython命令让ipython有机会开始。

这里有另一个问题::!ipython qtconsole&:IPython使用qtconsole参数启动ipython并尝试在shell 中的单独线程中运行命令:IPython。 shell显然对vim命令一无所知。将&替换为&<CR>

答案 1 :(得分:0)

我终于搞砸了一些有效的东西。对于那些有兴趣通过按键启动vim-ipython的人来说,就是这样做的。 所以在.vimrc中我添加了以下功能:

function! ViPy()
    call system('ipython qtconsole &>/dev/null &')
    :sleep 500m "400m not enough so ...
    :py km_from_string("*") "same as :IPython
endfunction

这是键映射:

map <F12> :call ViPy()<CR>

可能有更好的方法可以做到这一点。谢谢你发布它。