【问题标题】:Using vim in scala sbt console, scala repl ?在 scala sbt 控制台中使用 vim,scala repl ?
【发布时间】:2019-04-26 18:15:44
【问题描述】:

有没有办法使用 VIM 在 sbt 控制台(scala repl)上编辑和输入当前命令,就像我们在 bash 上所做的那样。由于 bash 为您提供了能够从 vim 编辑当前命令的选项。

【问题讨论】:

    标签: vim console sbt read-eval-print-loop


    【解决方案1】:

    不,没有内置支持使用 Vim 编辑当前命令。

    sbt 1.x 和 Scala 2.12.x 都使用 JLine2 进行行编辑(历史使用向上箭头和制表符完成)。虽然 JLine2 具有基本的 vi 命令仿真,但它似乎不支持将当前行发送到 VISUAL 编辑器。

    vi 命令仿真

    要启用 vi 移动,请在 $HOME/.inputrc 中设置以下内容:

    set editing-mode vi
    

    启动 Scala REPL 时,输入 ESCCtrl + [。现在您可以:

    • k 转到以前的历史记录。
    • ?something 在历史缓冲区中搜索“某物”,n 再次搜索。
    • w 移至下一个单词,b 移至上一个单词。
    • i 返回插入模式。

    【讨论】:

      【解决方案2】:

      如果有帮助,这里有一些 vim 脚本,我有时会使用它来运行 Scala REPL 中当前 vim 缓冲区的内容:

      " Write the current buffer to a temp file and load it in the Scala REPL
      function RunInScalaREPL()
          let l:tmpfile = tempname() . '.scala'
          execute 'write ' . l:tmpfile
          execute '!scala -i ' . l:tmpfile
      endfunction
      command Scala call RunInScalaREPL()
      command REPL call RunInScalaREPL()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-16
        • 2012-09-24
        • 1970-01-01
        • 2013-04-30
        • 2018-02-20
        • 2015-08-14
        相关资源
        最近更新 更多