0

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

我所做的是:

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

当我按下<key>vim 时,它运行良好,但来自 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 
...

任何想法?

4

2 回答 2

1

您可以通过使用&>/dev/null(before &) 或使用system()代替 bang:来使 ipython 静音:call system('ipython qtconsole&')|IPython

我想你之前需要sleep命令:IPythonipython 有机会开始。

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

于 2013-11-12T04:47:47.507 回答
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>

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

于 2013-11-13T19:48:38.240 回答