Help us understand the problem. What is going on with this article?

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にコミットとかしてます。

aiya000
Moggiと"love"で接近中! 🤟🙄🤟
https://aiya000.github.io
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away