vim-users.jp

Hack #3: Vimから外部コマンドを呼び出す

Posted at 2009/04/29
このエントリーをはてなブックマークに追加

外部コマンドの呼び出し

このHackではVimから外部のコマンドを呼び出す方法を紹介します。Vimだけでなく、外部コマンドの力を借りることでグッと編集効率を上げることができます。

単純な例

最も単純な外部コマンドの呼び出しはExモードで「!」を使うことです。

:!外部コマンド
:!ls
:!ruby %
:!svn ci %

Vimのコマンドで「%」を入力すると自動的に今開いているファイルのパスに置き換えられます。つまりそれぞれ、シェル上で「ls」「ruby /example/hoge.txt」「svn ci /example/hoge.txt」と実行しているのと同義です。

呼び出したコマンドの結果を挿入する

svnやrubyなどそのまま外部コマンドを呼び出すだけでも意味のあるものとは別にlsのように実行するだけではあまり意味がないものもあります。(結果が知りたいというだけなら別ですが)「:r」と「:!」を組合せることで外部コマンドの結果を挿入することができます。

:r!外部コマンド
:r!date

上記のように「:r」と「:!」と組合せることでdateの結果を開いているファイルに挿入することができます。例えばあるディレクトリ内にあるファイル一覧やsvn stの一覧をテキストで扱いたいという場合に便利です。他にもrubyやperlなどのワンライナーで動的に文字列や数式の結果を挿入することも可能です。

指定した範囲に外部コマンドを適用させる

範囲を指定してから「:!」を使用すると、指定した範囲に対して外部コマンドを実行し、かつ実行結果に置き換えてくれます。よくある例が選択範囲に対してcatを行番号付きで実行し、その結果に置き換えるというものです。

:'<,'>!cat -n

まとめ

いくつか例を示しましたが、このようにVimは非常にラクに外部コマンドと連携を取ることが可能です。Vimだけではちょっと大変だなということも外部コマンドを使えばラクにできることも多いです。まずは普段よく使うコマンドをVimから呼び出すことでラクができないか考えてみるといいのではないでしょうか。

ukstudio


もどる
blog comments powered by Disqus