【问题标题】:Sending input to a screen window from vim从 vim 将输入发送到屏幕窗口
【发布时间】:2011-05-18 03:08:25
【问题描述】:

我设置了一个 vim 函数,我可以在其中突出显示一行文本并在 clojure 中执行。函数如下:

 function! Clojure_execline()
     let cl = (getline(line(".")))
     // ...
     exec 'clojure -e "' . cl . '"'
 endfunction

这样做的问题是启动速度很慢,而且因为每次运行它都会产生一个新的 clojure 会话,所以我无法调用之前运行的函数。理想情况下,我希望运行一个隐藏的 repl,我可以从 vim 发送输入并从中检索输出。我了解了 gnu screen 并认为它可以帮助我,但我不知道如何将输入从一个屏幕窗口发送到另一个屏幕窗口。

为了澄清我的问题,请使用这行clojure:

(defn add2 [x y] (+ x y))

我希望能够在 vim 中突出显示这一行并在运行的 repl 中执行。我希望能够调用下面的行并让它在同一个 repl 中执行:

(add2 4 5)

之后,我希望能够得到函数的输出。

所以,基本上,我的问题是,如何将输入从一个屏幕窗口发送到另一个?

【问题讨论】:

    标签: vim clojure gnu-screen read-eval-print-loop


    【解决方案1】:

    Jake McCrary 的建议很好。还有一些其他脚本可用,可能基于相同的想法:

    VimClojure,表示它确实“在 vim 缓冲区中复制”

    slimv,专门支持Clojure

    Gorilla,我认为上面的 VimClojure 是基于 Gorilla 的

    我不知道 VimClojure 是否真的做了你想要的,将结果从 Screen 发送回 Vim 中的缓冲区。我认为,一种方法是使用 Vim 的客户端-服务器功能来解决问题,可以使用 --remote-send 标志。见:

    :h client-server
    :h --remote-send
    

    【讨论】:

    • vimClojure 看起来接近我想要的。我会看看他们的做法。
    【解决方案2】:

    我没有确切的答案,但可能值得看一下 slime.vim,看看是否可以从中学到什么。

    blog post about it

    script at vim.org

    【讨论】:

      【解决方案3】:

      找到了我要找的东西。您可以从终端执行此操作以将字符串直接发送到屏幕窗口的标准输入:

      $ screen -X stuff "ls -l\015" # \015 sends a carrige return.
      

      【讨论】:

        【解决方案4】:

        您可能也对 Conque 感兴趣 http://code.google.com/p/conque/

        我将它用于 Scala

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-18
          • 2022-01-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多