在Debian 8 Linux上,我使用vim和screen一起将行从vim发送到julia会话。今天,我尝试了https://github.com/Keno/Cxx.jl。我按照那里的指示(即我编译了最新版本0.5.0-dev + 3609 of Julia)。当我尝试示例1时出现以下错误,我可以通过以下简单步骤确定它:
创建以下文件(不要覆盖您自己的文件):
printf "using Cxx\ncxx\"\"\"#include<iostream> \"\"\"\ncxx\"\"\"void testfunction(){std::cout<<\"worked\"<< std::endl;}\"\"\"\njulia_function() = @cxx testfunction()\n" > start
和printf "julia_function()\n" > freeze
打开终端1(我使用gnome-terminal)并编写screen -S session
,然后用julia
启动Julia。它应该看起来像
_
_ _ _(_)_ | A fresh approach to technical computing
(_) | (_) (_) | Documentation: http://docs.julialang.org
_ _ _| |_ __ _ | Type "?help" for help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 0.5.0-dev+3609 (2016-04-18 07:07 UTC)
_/ |\__'_|_|_|\__'_| | Commit a136a6e (0 days old master)
|__/ | x86_64-linux-gnu
julia>
screen -S session -p 0 -X eval "readreg p start" "paste p"终端1现在应该看起来像
_
_ _ _(_)_ | A fresh approach to technical computing
(_) | (_) (_) | Documentation: http://docs.julialang.org
_ _ _| |_ __ _ | Type "?help" for help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 0.5.0-dev+3609 (2016-04-18 07:07 UTC)
_/ |\__'_|_|_|\__'_| | Commit a136a6e (0 days old master)
|__/ | x86_64-linux-gnu
julia> using Cxx
julia> cxx"""#include<iostream> """
true
julia> cxx"""void testfunction(){std::cout<<"worked"<< std::endl;}"""
true
julia> julia_function() = @cxx testfunction()
julia_function (generic function with 1 method)
julia>
现在出现奇怪的错误:写“ju”,使用TAB完成“julia_function”并在终端1中手动添加“()”导致
julia> julia_function() worked julia>
但如果我在终端2中执行步骤1,2,3,然后screen -S session -p 0 -X eval "readreg p freeze" "paste p"
或在终端1中编写julia_function()
而不使用TAB来完成,那么我会在终端1中冻结:
julia> julia_function()如果我执行步骤1,2,3,如上所述使用TAB完成,那么(即在第一次调用之后,编译函数){{1}在终端2和
screen -S session -p 0 -X eval "readreg p freeze" "paste p"
中,不使用终端1中的TAB按预期工作(它打印“工作”)并且不会导致冻结。
如果我根本不使用屏幕,它可以工作(有和没有TAB)。你能告诉我这里发生了什么吗?