Edited at

Common LispからVimを起動する


概要

Common LispからVimを起動してGitでcommitするときのあの動作を再現する。


前提


  • OS : Ubuntu 18.04.1 LTS

  • 処理系 : SBCL 1.4.5.debian

  • Vim : Vim 8.0


実装方法


起動するだけ

(sb-ext:run-program "/usr/bin/vim" nil :output t :input t)

; Nanoを起動したければ以下のようにする
; (sb-ext:run-program "/bin/nano" nil :output t :input t)


ファイルを開いて起動

(sb-ext:run-program "/usr/bin/vim" (list "/path/to/some/file") :output t :input t)


終了コードを取得する

:wq:qで終わったときは0が返る。

:cqで終わったときは1が返る。

(sb-ext:process-exit-code 

(sb-ext:run-program "/usr/bin/vim" nil :output t :input t))


用途

例えばGitのようにコミットメッセージのような文章を入力させたい場合に使える。

y/nの質問のような単純なものであれば標準入力からそのまま入力させてもいいけど、

テキストで色々な情報を見せながら、いくつかの項目を入力させたい場合とかに良い。


改善するべき点

Vimのパスを絶対パスで指定しているので環境によっては動かないかもしれない。

この点は改善が必要だと思う。