我正在尝试映射一个从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
...
有什么想法吗?
答案 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>
可能有更好的方法可以做到这一点。谢谢你发布它。