2015-07-22 7 views
2

Как часть обучения Haskell, для удовольствия я пытаюсь использовать малиновый PI. Столкнувшись с множеством проблем, связанных с установкой ghci на PI, я решил использовать только ghc.Команда запуска из vi/vim

Так создавать, компилировать & запустить новый Haskell файл:

vi first.hs 
i 
main = putStrLn "First" 
Esc 
:w 
:q 
ghc -o first first.hs 
./first 

Выход есть: "Первый"

Я хотел бы автоматизировать команды:

Esc 
:w 
:q 
ghc -o first first.hs 
./first 

Может эти можно добавить в качестве новой команды из vi/vim, например:

: mycustomcommands

И запустите из редактора vi/vim?

+0

vi или у вас есть доступ к vim? – Geoffroy

+0

@ Geoffroy да, можно использовать vim также –

+0

В дополнение к ответу cxw вы можете запускать команды оболочки из vim с помощью::! ':! ghc -o first first.hs' – duplode

ответ

2

Может быть, вы можете попробовать добавить что-то вроде этого, чтобы ваш vimrc:

function! ExecuteHS() 
    w 
    !ghc -o first % 
    !./first 
endfunction 

И использовать эту функцию, вы просто должны называть его так :call ExecuteHS() , Vim будет помещен на фон во время выполнения вашего файла и затем вернется на передний план в конце выполнения.

В качестве бонуса вы можете добавить на следующие строки в ваш vimrc

nnoremap <key> :call ExecuteHS()<CR> 

Замена <key> с комбинацией предпочитаемой ключа <Leader>e, например. Таким образом, вам просто нужно нажать ,e (если вы не изменили свой лидерский ключ) в обычном режиме для вызова функции.

Это, вероятно, не самый чистый способ сделать это, но он должен работать на то, что вы хотите.

+1

Также для ваших вопросов, касающихся vim и его использования, вы можете быть заинтересованы в [посвященном сайте stackexchange] (http://vi.stackexchange.com/), где ответы довольно быстро ;-) – statox

1

Абсолютно в vim, хотя и не обязательно в других вкусах vi. См. this tutorial об определении настраиваемых команд. Поместите пользовательскую команду в свой vimrc, и она всегда будет доступна как :Customcmd или как вы ее называете. Для доступа с одной кнопкой вы можете использовать :remap, чтобы назначить горячую клавишу вашей пользовательской команде или последовательность встроенных команд, которые вы хотите запустить. This - это учебник по ключевым словам, который даст вам больше информации.

Я второй @ направление statox к https://vi.stackexchange.com :)

0

Я использую vim-haskell, который включает в себя пару приятных вещей. В частности, он содержит файл для настройки cabal-install в качестве компилятора, что является очень приятным способом работы. Дамп это в ~/.vim/compiler/cabal-build.vim:

CompilerSet makeprg=cabal\ build 
CompilerSet errorformat= 
      \%W%f:%l:%c:\ Warning:%m, 
      \%W%f:%l:%c:\ Warning:, 
      \%E%f:%l:%c:%m, 
      \%E%f:%l:%c:, 
      \%C\ \ %#%m, 
      \%-G%.%#, 
      \%-G%.%# 

И это в ~/.vim/ftplugin/haskell.vim:

compiler cabal-build 

(Аргумент compiler должно совпадать с именем файла, который вы положили в ~/.vim/compiler.) Затем вы можете запустить :make в vim и сохранить любые измененные буферы (при условии, что установлен autowrite) и создать свой проект. При наличии ошибок он заполняет список быстрого исправления, который позволяет перейти к конкретному файлу и номерам строк каждой ошибки или предупреждения с помощью ключа. Подробнее об этой функции читайте :help quickfix. Как только все будет работать, вы можете выполнить :!cabal run.