从vi / vim中运行命令

时间:2015-07-22 09:36:47

标签: linux haskell vim raspberry-pi vi

作为学习Haskell的一部分,为了好玩,我尝试使用Raspberry PI。在PI上安装ghci遇到了无数问题我决定只使用ghc。

创建,编译和创建运行一个新的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编辑器中运行?

3 个答案:

答案 0 :(得分:2)

也许您可以尝试在vimrc

中添加类似的内容
function! ExecuteHS()
    w
    !ghc -o first %
    !./first
endfunction

要使用此功能,您只需将其称为:call ExecuteHS()即可。在执行文件期间,Vim将被置于后台,然后在执行结束时返回前台。

作为奖励,您可以将以下行添加到vimrc

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

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

这可能不是最干净的方法,但它应该适用于你想要的东西。

答案 1 :(得分:1)

绝对是vim,但不一定是其他vi风味。有关定义自定义命令的信息,请参阅this tutorial。将自定义命令放在vimrc中,它将始终以:Customcmd或您称之为的方式提供。对于一键访问,您可以使用:remap为自定义命令或要运行的内置命令序列分配热键。 This是一个关于键映射的教程,可以为您提供更多信息。

我第二次@ statox被推荐到https://vi.stackexchange.com:)

答案 2 :(得分: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中放置的文件的名称相匹配。)然后,您可以在vim中运行:make,它将保存所有已更改的缓冲区(假设{ {1}}已设置)并构建您的项目。当出现错误时,它将填充快速修复列表,这样您就可以使用密钥跳转到每个错误或警告的特定文件和行号。使用autowrite详细了解此功能。一切正常后,您可以:help quickfix运行它。