Edited at
VimDay 23

Vimで各言語のreplをすぐに開きたい…そこでrepl.vim!

More than 3 years have passed since last update.

この記事はVim advent calendar 2015の23日目の記事です!

昨日の記事は


プログラミング初心者が某氏が提言していた「 Vim駆動学習 」をやってみた


でした!

某氏、一体 何ぶささんなんだ…。


そこでrepl.vim

 はい! 今貴方は小物のプログラムを書いています!


はい、今classを書きました!!

(コードの内容を理解する必要はありません)

class Kawaii

def initialize
@messageList = [
'おはよう、よく眠れましたか?',
'朝ごはん、もうできてますよ! ずんだもち。',
"モナド? 単なる自己関手の圏におけるモノイド対象だよ。\n何か問題でも?",
'むちむちじゃありません! もちもちです!',
"皆のハート打ち抜くぞ〜\nずんだアローシュート!",
"お口開けてください、あーん♡\nたこ焼き味のずんだもちです!"
]
end

def message(_)
n = rand(0 .. @messageList.count() - 1)
@messageList[n]
end
end

 アッアッ、このクラスをロードしたい、今したい。


そう…なんというかこう…チェック用のコードを書くまでもなく…すぐ動かしたい!

そこでrepl.vim

ruby_repl_vim.png



repl.vim

 repl.vimはujihisaさん作の、quickrun.vimをrepl用にしたためたかのようなVimプラグインです。 ( ※この感想は個人のものです )


上記では、編集中かつ、未保存のコードをRubyのインタプリタ(irb)に読み込ませています。


  • 対応言語 (2015-12-17時点)


    • Haskell (ghci)

    • Ruby (irb)

    • Python (python (python2もしくはpython3))

    • Erlang (erl)



※ JavaScript (node.js repl) に対応しました! (2016-02-06)

また、各言語に対応するインタプリタはユーザ側で指定可能です。


( filetype 'python'に対して 'python2' を起動する…など )


repl.vimの役に立ち力


即実行力の強さ

 はい! 今貴方は小物のプログラムを(以下略


今度はHaskellとしましょう。

以下のようなコードを書きました

data List a = Nil | Cons a (List a) deriving Show

emp = Nil :: List Int
uni = Cons 10 Nil
xx = Cons 10 (Cons 20 Nil)

fromGeneral :: [a] -> List a
fromGeneral [] = Nil
fromGeneral (x:xs) = x `Cons` fromGeneral xs

xxx = fromGeneral [1,2,3]

 Rubyであれば、下の方に動作チェック用のコードを付け足せばすぐに動かせますが、

Haskellの場合はmainを書かなければいけません。


具体的には以下のようなもの。

main :: IO ()

main = do
print emp
print uni
print xx
print xxx

動作確認のためにこれを書くのは面倒です。


そこでrepl.vim!

 repl.vimを使えば、List型及びそれ以下の関数を読み込んだHaskellのインタプリタを起動することができます。

haskell_repl_vim.png


終わりに

 使ってみてね★

 全く別の話なのですが、この前repl.vimのコミット権を貰えたので

最近repl.vimにコミットとかしてます。