如何在vim中快速编译和运行scala代码?

Fre*_*ind 9 vim scala

我正在使用vim来学习scala.我在vim中编写了一些scala代码,然后:

:!scalac xxx.scala
:!scala Xxx
Run Code Online (Sandbox Code Playgroud)

有没有办法让代码更容易运行?

Jan*_*anx 31

我建议你试试SBT - http://code.google.com/p/simple-build-tool/

您可能希望打开一些shell,并且您必须在vim和SBT会话之间进行反弹,但通常SBT会将Scala开发简化为感觉像解释语言的点.一些方便的SBT提示:

在项目目录中的shell上运行sbt以自动创建项目结构.要快速入门,请编辑名为src/main/scala/MyFile.scala的项目中的文件

在一个sbt shell中,运行~compile以在进行更改时不断检测和编译更改.

在另一个sbt shell中,运行'console'.这为您提供了一个正常的Scala REPL,您的项目及其依赖项已经存在于CLASSPATH中.

从那个scala shell中你可以运行:load来加载你的Scala文件并运行它.或者,您可以简单地导入和实例化类和调用Scala代码中定义的函数来测试功能.当您对文件进行更改时,REPL中的重播将加载这些更改并再次运行所有输入的命令.

此设置非常适合与Scalatra一起进行快速Web开发.从sbt开始,您可以使用'jetty-run'直接部署和运行您的webapp,然后使用~prepare-webapp自动检测,重新编译和部署更改.然后,您只需打开浏览器并查看更改即可.这里有一个很好的入门指南:http: //blog.everythings-beta.com/?p = 430您可以在5分钟左右的时间内运行一个Web应用程序.


Fra*_*ery 8

我建议您使用sbt在一个shell中运行并修改vim中的scala文件.您需要在项目文件中指定mainClass方法.细节在这里.

$ sbt
> ~ run
1. Waiting for source changes... (press enter to interrupt)
Run Code Online (Sandbox Code Playgroud)

在vim会话中保存scala文件时,sbt将尝试调用mainClass.


sch*_*mmd 7

您可能更擅长使用构建管理器.但是,有些情况下这很有用,特别是如果您只想使用scala解释器运行单个文件.在vim中,%匹配当前文件.如果要使用Scala解释器中的当前文件运行文件,可以运行:

:!scala %
Run Code Online (Sandbox Code Playgroud)

如果您打算这么做,可以考虑将命令映射到此.

map <F5> :!scala %<CR>
Run Code Online (Sandbox Code Playgroud)

如果您希望此绑定仅在scala文件中可用,请尝试以下操作.这可能需要您拥有scala vim语法文件.

au FileType scala map <F5> :!scala %
Run Code Online (Sandbox Code Playgroud)

同样,要编译文件,您可以运行以下命令.

:!scalac %
Run Code Online (Sandbox Code Playgroud)

如果要运行已编译的类,则更难,因为您需要知道类路径. %:r可能是一个开始 - 它是当前文件减去扩展名.

比上面更高级的解决方案是使用scala解释器/编译器作为vim使用的构建系统:make.这样,您可以使用quickfix在vim中导航错误.你会发现我写几个编译器文件很有帮助.您可以将这些复制到~/.vim/compiler/,然后使用vim(:compiler scalai)设置编译器.

您可能会发现我的博客文章很有用,因为它涵盖了使用vim在scala中进行开发.它涵盖了在构建管理器中将scala与连续编译相结合的好方法.