有没有办法在sbt控制台(scala repl)中使用VIM编辑和输入当前命令,就像我们在bash中所做的那样。因为bash可以让你从vim中编辑当前命令。
很抱歉,没有内置支持使用Vim编辑当前命令的功能。
sbt 1.x和Scala 2.12.x都使用JLine2进行行编辑(使用向上箭头进行历史记录查看,以及使用Tab键进行自动完成)。虽然JLine2具有基本的vi命令仿真功能,但似乎不支持将当前行发送到VISUAL
编辑器。
要启用vi移动功能,请在$HOME/.inputrc
中设置以下内容:
set editing-mode vi
ESC
或Ctrl + [
。现在您可以:
k
键查看以前的历史记录。?something
键用于在历史缓冲区中搜索“something”,n
键可再次搜索。w
键向后移动一个单词,b
键向前移动一个单词。i
键返回插入模式。如果有帮助的话,这是我有时候用来在 Scala REPL 中运行当前 vim 缓冲区内容的一些 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()