在Scala sbt控制台中使用vim,scala repl吗?

时间:2018-11-24 13:07:29

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

有没有办法像在bash上一样使用VIM在sbt控制台(scala repl)上编辑和输入当前命令。由于bash为您提供了可以从vim编辑当前命令的选项。

2 个答案:

答案 0 :(得分:2)

否,不存在使用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返回到插入模式。

答案 1 :(得分:0)

如果有帮助,有时我会使用一些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()
相关问题