我正在使用vim学习scala。我在vim中写了一些scala代码,然后:如何在vim中快速编译和运行scala代码?
:!scalac xxx.scala
:!scala Xxx
有什么办法可以让代码更容易运行吗?
我正在使用vim学习scala。我在vim中写了一些scala代码,然后:如何在vim中快速编译和运行scala代码?
:!scalac xxx.scala
:!scala Xxx
有什么办法可以让代码更容易运行吗?
我建议你尝试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外壳,运行 '控制台'。这为您提供了正常的Scala REPL,并且您的项目及其依赖项已经位于CLASSPATH上。
从这个阶外壳可以运行:负荷加载您的斯卡拉文件并运行它。或者您可以简单地导入和实例化类,并调用Scala代码中定义的函数来测试功能。在对文件进行更改时,:REPL中的重放将加载这些更改并再次运行所有输入的命令。
这种设置的伟大工程与Scalatra的结合快速的Web开发。从sbt开始,您可以直接使用'jetty-run'部署和运行webapp,然后使用〜prepare-webapp自动检测,重新编译和部署更改。然后,您只需让浏览器保持打开状态并在制作时看到更改。一个很好的入门指南在这里:http://blog.everythings-beta.com/?p=430您可以在5分钟左右运行一个Web应用程序。
您可以通过编写脚本将其缩短为一行?
所以在同一个目录,你可以不喜欢
scalac xxx.scala 斯卡拉XXX
和他们VIM你做
:./脚本名称
制作一定要使它可执行第一次与chmod
我希望它可以更容易,例如我按'F6',当前文件的代码正在编译并运行。不管文件名是什么。 – Freewind 2010-12-19 15:38:36
我一直认为这是IDE的用途。我确定你可以找到一个IDE并配置“编译和运行”按钮来启动scalac和scala。 – Realn0whereman 2010-12-19 15:43:32
Eclipse有一个scala插件,但是它太慢了。但是如果我使用Eclipse运行没有scala插件的scala,那让我感觉很奇怪:( – Freewind 2010-12-25 05:42:10
我建议你使用sbt在一个shell中运行的东西&修改vim中的scala文件。 您需要在项目文件中指定mainClass方法。详细信息here。
$ sbt
> ~ run
1. Waiting for source changes... (press enter to interrupt)
当你在vim会话中保存scala文件时,sbt会尝试调用你的mainClass。
地图在这里很有帮助。我对scala一无所知,但例如命令
:NMAP < F6>:echo测试< CR>
将调用shell命令echo test
每当你在正常模式下打到F6
我相信你能适应它符合你的需求。放入.vimrc如果你想永久(你可能会这样做)。更多信息可以在这里找到,如果你是整个编辑器脚本的东西:http://www.ibm.com/developerworks/linux/library/l-vim-script-1/index.html
P.S.忘了提及%
字符扩展到shell命令中的当前文件。你可能想是这样:! scala %<CR>
编辑:
这是比我想象的第一眼(我已经习惯了有解释性语言,在编译运行的工作更复杂的问题单个命令)。无论如何,如果你真的还需要一个键编译和运行功能,试试这个快速脚本(地方把它贴在你的.vimrc
文件并重新启动VIM):
function! CompileAndRunScala()
w "save current file
let l:compiler_output = system('scalac ' . expand('%:p'))
" Runs scalac on current filename (absolute path)
if v:shell_error "Gets last shell error code (0 means okay, anything else is error)
echo 'Compile errors!'
echo l:compiler_output
else
echo system('scala ' . expand('%:r'))
" Runs scala on current file name with extension stripped (also absolute path)
endif
endfunction
nmap <F6> :call CompileAndRunScala()<CR>
我自己从来没有离开过make
,所以我可以编译程序:make °target°
干净,简单。
您可能更适合使用构建管理器。但是,有些情况下这很有用,特别是如果你只是想用scala解释器运行一个文件。在vim中,01与当前文件匹配。如果你想运行你的文件使用Scala的解释当前的文件,你可以运行:
:!scala %
如果你打算做这个有很多,你可以考虑映射命令这一点。
map <F5> :!scala %<CR>
如果你想这种结合是只在斯卡拉的文件,请尝试以下。这可能需要你有scala vim syntax files。
同样,要编译文件,您可以运行以下命令。
:!scalac %
如果你想运行你编译的类,这很困难,因为你需要知道类路径。 %:r
可能是一个开始 - 它是当前文件减去扩展名。
的更先进的解决方案将是使用阶解释/编译器如使用:make
为VIM构建系统。这样,您可以使用quickfix浏览vim中的错误。你会发现一个couple of compiler files I wrote helpful。您可以将它们复制到~/.vim/compiler/
,然后使用vim设置编译器(:compiler scalai
)。
您可能会发现a blog post of mine有用,因为它涵盖了使用vim在斯卡拉发展。它涵盖了在构建管理器中将scala与持续编译相结合的一种好方法。
谢谢。SBT听起来真棒:) – Freewind 2010-12-25 05:38:20
+1对于console :-) – 2013-03-09 15:47:35