Hatena::ブログ(Diary)

Alone Like a Rhinoceros Horn

2010-06-15

:shell vs vimshell @端末世界

vimfiler導入メモの続き。結論から言うと、

:shell でいいや。

ということになってしまいました。そういう結論に至った経緯について、

に書かれている「:shell の欠点」などを引きつつ、vimshell を使ってみて素朴に感じたことを書いてみます。

追記

そもそもの問題意識であった「シェルとのシームレスな連携」において、この「:shell でいいや」はほとんど思考停止であったので、↓にもあるようなあまり格好良くない点をどうにかしようと、最終的に Conque を入れるに至りました。(2010-06-16)

では本文↓

zsh は強い

Vim-users.jp - Hack #142: Vimでシェルを起動する


Linux上のGVimではエスケープシーケンスを解釈しない上、WindowsGVimでは邪魔なDOS窓が一瞬開くという問題もあります。 根本的な問題として、WindowsシェルであるCMD.exeは貧弱なので、使う気になれません。 かといって、Windowsの場合は代わりとなるシェルも選択肢が少ないです。

この辺りのことは、Linux上でかつ端末内でのみ vim を使う自分にはそもそも問題になりません。:shell で起ち上がるのは zsh であり、強力です。*1

実行している間はVimが止まってしまいます。

あまり格好良くはありませんが、別タブで(;^ω^)

コマンドの出力もバッファにとれない

あまり格好良くはありませんが、xsel とかマウスによるコピペで。

シェルの設定が二重化する

vimshell を使ってみてまず出鼻を挫かれるのは、.zshrc で定義している alias やシェル関数が効かないこと。l みたいなものから始まって、その数はかなりの量にのぼるので、それらを vimshell 上でも使えるようにするには、と考えるとちょっと気が遠くなりました。

使えるようにできたところで、2つのシェルの設定を抱えることになり、管理が二重化することは明白で、これは許容できないところです。

これは設定だけでなく、利用のための知識などについても言えると思います。

まとめ

自分的まとめ。

強力なシェルがあり、なおかつ vim 自体がそのシェルから起動されるようなコマンドライン環境において vimshell を導入すると、シェルの設定、利用のための知識などを二重に持つ必要が生じるので、シェルを使いこなそうとすればするほど2つのシェルの管理コストが上がる。

物事を単純にしたいのならシェルは一元化すべきで、:shell から普段使っているシェルを呼び出すのがラク。DRY原則重要。

後書き

Vim-users.jp - Hack #142: Vimでシェルを起動する」や vimshell の presen などでも「WindowsGVimでは邪魔なDOS窓が一瞬開く」とか「WindowsシェルであるCMD.exeは貧弱」といったフレーズを目にするのですが、おそらくその辺のところに vimshell によって解決されるべき要求があったのかなと。

とすると、自分はそもそも vimshell の恩恵を受けにくいところにいる、ということかも知れません。というか、多分そう。もしくは vimmerレベルが低いか(;^ω^)

Windows で仕事をしなければならない状況になったらまた話は変わってくるかも知れません。

*1Windows で使う場合は Cygwin が前提。

ShougoShougo 2010/06/15 14:42 記事をありがとうございます。コメントについては長くなりそうだったので、ブログの記事としてまとめておきました。読んでくれるとありがたいです。
http://vinarian.blogspot.com/2010/06/re-shell-vs-vimshell.html

Connection: close