【发布时间】:2019-04-26 18:15:44
【问题描述】:
有没有办法使用 VIM 在 sbt 控制台(scala repl)上编辑和输入当前命令,就像我们在 bash 上所做的那样。由于 bash 为您提供了能够从 vim 编辑当前命令的选项。
【问题讨论】:
标签: vim console sbt read-eval-print-loop
有没有办法使用 VIM 在 sbt 控制台(scala repl)上编辑和输入当前命令,就像我们在 bash 上所做的那样。由于 bash 为您提供了能够从 vim 编辑当前命令的选项。
【问题讨论】:
标签: vim console sbt read-eval-print-loop
不,没有内置支持使用 Vim 编辑当前命令。
sbt 1.x 和 Scala 2.12.x 都使用 JLine2 进行行编辑(历史使用向上箭头和制表符完成)。虽然 JLine2 具有基本的 vi 命令仿真,但它似乎不支持将当前行发送到 VISUAL 编辑器。
要启用 vi 移动,请在 $HOME/.inputrc 中设置以下内容:
set editing-mode vi
启动 Scala REPL 时,输入 ESC 或 Ctrl + [。现在您可以:
k 转到以前的历史记录。?something 在历史缓冲区中搜索“某物”,n 再次搜索。w 移至下一个单词,b 移至上一个单词。i 返回插入模式。【讨论】:
如果有帮助,这里有一些 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()
【讨论】: