Как быстро скомпилировать и запустить код scala в vim?
Я использую vim для изучения scala. Я пишу код scala в vim, а затем:
:!scalac xxx.scala
:!scala Xxx
есть ли способ запустить код проще?
7 ответов
Я предлагаю вам попробовать SBT -http://code.google.com/p/simple-build-tool/
вы, вероятно, захотите открыть несколько оболочек, и вам придется прыгать между vim и вашим сеансом SBT, но в целом SBT упрощает разработку Scala до такой степени, что она кажется интерпретируемым языком. Несколько удобных советов SBT:
запустите sbt в оболочке в каталоге проекта, чтобы автоматически создать структуру проекта. Чтобы быстро начать работу, отредактируйте файл в этом проект под названием src / main/scala / MyFile.скала!--3-->
в одной оболочке sbt запустите ~compile для непрерывного обнаружения и компиляции изменений по мере их внесения.
в другой оболочке sbt запустите "консоль". Это дает вам обычный Scala REPL с вашим проектом и его зависимостями уже на пути к классам.
из этой оболочки scala вы можете запустить: load, чтобы загрузить файл Scala и запустить его. Или вы можете просто импортировать и создать экземпляр класса и вызывать функции, определенные в коде на Scala функциональность теста. При внесении изменений в файл: replay в REPL загрузит эти изменения и снова запустит все введенные команды.
Эта настройка отлично подходит для быстрой веб-разработки в сочетании с Scalatra. Из sbt вы можете напрямую развернуть и запустить веб-приложение с помощью "jetty-run", а затем автоматически обнаруживать, перекомпилировать и развертывать изменения с помощью ~prepare-webapp. Затем вы просто держите браузер открытым и видите изменения по мере их внесения. Хорошее начало руководство для этого здесь: http://blog.everythings-beta.com/?p=430 Вы можете иметь веб-приложение работает в течение 5 минут или около того.
Я бы предложил вам использовать sbt для запуска вещей в одной оболочке и изменения файла scala в vim. Вам нужно указать метод mainClass в файле проекта. Подробности здесь.
$ sbt
> ~ run
1. Waiting for source changes... (press enter to interrupt)
при сохранении файла scala в сеансе vim sbt попытается вызвать ваш mainClass.
вы, вероятно, лучше использовать диспетчер сборки. Однако есть случаи, когда это полезно, особенно если вы просто хотите запустить один файл с интерпретатором scala. In vim,%
соответствует текущему файлу. Если вы хотите запустить файл с помощью текущего файла в интерпретаторе Scala, вы можете запустить:
:!scala %
если бы вы собирались делать это много, вы могли бы рассмотреть возможность сопоставления команды с этим.
map <F5> :!scala %<CR>
если ты хотел этой привязки доступно только в файлах scala, попробуйте следующее. Это может потребовать от вас иметь синтаксические файлы scala vim.
au FileType scala map <F5> :!scala %
аналогично, для компиляции файлов вы можете запустить следующее.
:!scalac %
если вы хотите запустить скомпилированный класс, это сложнее, потому что нужно знать на пути к классу. %:r
может быть началом-это текущий файл минус расширение.
более продвинутым решением, чем выше, было бы использование scala интерпретатор / компилятор как система сборки для vim с использованием :make
. Таким образом, вы можете перемещаться по ошибкам в vim, используя quickfix. Вы найдете пару файлов компилятора я написал полезно. Вы можете скопировать их в ~/.vim/compiler/
а затем установите компилятор с vim (:compiler scalai
).
вы можете найти мой пост в блоге полезно, поскольку он охватывает разработку в scala с использованием vim. Он охватывает хороший способ объединения scala с непрерывным компиляция в диспетчере сборки.
карты полезны здесь. Я ничего не знаю о Scala, но, например, команда
: nmap
:!Эхо-тест
вызовет команду оболочки echo test
всякий раз, когда вы нажмете F6 в обычном режиме
Я уверен, что вы можете адаптировать его к вашим потребностям. Ставить.vimrc, если вы хотите, чтобы он был постоянным (что вы, вероятно, делаете). Более подробную информацию можно найти здесь, Если вы в целом редактор сценариев, что: http://www.ibm.com/developerworks/linux/library/l-vim-script-1/index.html
P. S. забыла упомянуть о том, что %
символ расширяется до текущего файла в командную строку. Вы, вероятно, хотите что-то вроде :! scala %<CR>
редактировать:
это более сложная проблема, чем я думал на первый взгляд (я привык работать с интерпретируемыми языками, где compile-run-это одна команда). В любом случае, если вы действительно все еще хотите скомпилировать один ключ и запустить функциональность, попробуйте этот быстрый скрипт (вставьте его где-нибудь в свой .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°
Чисто и просто.
вы можете сократить его до одной строки, написав сценарий?
таким образом, в том же каталоге вы можете сделать что-то вроде
scalac xxx.scala scala xxx
и их из Vim ты
:!./ scriptName
обязательно сделайте его исполняемым сначала с помощью chmod
установки SBT как уже предлагалось, рассмотрим это из сеанса редактора Vim,
:!sbt run
кроме того, для компиляции или упаковке
:!sbt compile
:!sbt package