在sbt中重新编译时自动清除屏幕

时间:2014-07-03 10:49:10

标签: sbt

我正在使用带有sbt-revolver插件的sbt,我想在重新编译项目时重新编译终端屏幕(^ L)(〜重新启动)。怎么办呢?

4 个答案:

答案 0 :(得分:4)

您可以定义新命令clear,它将使用jline清除屏幕。 Sbt在内部使用jline,因此您不必包含任何额外的依赖项。

build.sbt

def clearConsoleCommand = Command.command("clear") { state =>
  val cr = new jline.console.ConsoleReader()
  cr.clearScreen
  state
}

val root = project.in(file(".")).settings(commands += clearConsoleCommand)

现在你可以运行你的编译~;clear;compile。这将触发清除控制台,然后在每次文件更改时编译(假设这是你想要的)。

答案 1 :(得分:3)

另一种解决方案,基于@SethTisue回答:

alias clearScreen=eval "\u001B[2J\u001B[0\u003B0H"

此行应添加到~/.sbtrc,以便sbt知道“clearScreen”命令。您可以使用~;clearScreen;compile

调用该命令

或制作其他别名,例如alias cc=~;clearScreen;compile

答案 2 :(得分:3)

当你在连续模式下做某事时,这会特别有用,ala`comped:

maxErrors := 5
triggeredMessage := Watched.clearWhenTriggered

这适用于0.13.7。第二行在每个命令运行之前清除屏幕。第一行限制了错误的数量。使用此配置,您只需要一个完整的错误屏幕即可完成。显然可以根据你的sbt窗口调整maxErrors。

答案 3 :(得分:2)

在推特上,Paul Phillips建议采用这种方法:

alias cc = ~ ;eval "\u001B[2J\u001B[0\u003B0H" ;compile

来源:https://twitter.com/extempore2/status/403564233775775744