从vi / vim运行命令

作为学习Haskell的一部分,为了好玩,我试图使用树莓派。 遇到无数问题在PI上安装ghci我已经解决了只使用ghc。

所以要创build,编译和运行一个新的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编辑器运行?

也许你可以尝试在你的vimrc添加这样的东西:

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

要使用这个函数,你只需要像这样调用它:call ExecuteHS() 。 Vim将在执行文件的过程中置于后台,然后在执行结束时返回到前台。

作为奖励,你可以添加下面的行到你的vimrc

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

<Leader>e ,用您的首选组合<Leader>e替换<key> 。 这样,你只需要在正常模式下点击e (如果你没有改变你的leader key)来调用这个函数。

这可能不是最干净的方式,但它应该为你想要的。

绝对vim,虽然不一定在其他vi口味。 请参阅本教程以了解定义命令。 把自定义命令放在你的vimrc ,它将一直是可用的:Customcmd或者你所说的任何东西。 对于单键访问,您可以使用:remap为您的自定义命令或要运行的内置命令序列分配一个热键。 这是一个关于keymappings的教程,将会给你更多的信息。

我第二次@ statox的推荐https://vi.stackexchange.com 🙂

我使用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中的文件的名字相匹配。)然后你可以在vim中运行:make ,它会保存任何已经改变的缓冲区(假设设置了autowrite )并建立你的项目。 当出现错误时,它将填充快速修复列表,该列表允许您跳转到每个错误的特定文件和行号,或使用一个键进行警告。 阅读更多关于此功能:help quickfix 。 一旦一切正常,你可以:!cabal run来运行它。