Home > Vim Hacks > Hack #127: !を含む外部コマンドを実行する

Hack #127: !を含む外部コマンドを実行する

問題

UNIXのechoコマンドで"hello!"と表示させる必要があるとします。Vimの:!を使えば出来そうな気がします。試してみましょう。

:!echo helloecho 'echo echo 1'
[No write since last change]
helloecho echo echo 1

なにやら狂ったような返答がきました。これは一体…。

※ 実行結果は人によって異なります。

解決

次のようにして!をエスケープします。

:!echo hello\!
[No write since last change]
hello!

次のようにしても、エスケープされませんのでご注意ください。

:!’echo hello!’

解説

ヘルプ:h :!によると、:!の中での!は前回実行した:!の引数になるそうです。 迷惑でしかない恐ろしい仕様です。('cpoptions'に依存するようです)

プラギンを作るときにハマる仕様です。:!を使うときによくわからない挙動があれば、まずは!のエスケープ漏れがないか確認してみましょう。

ujihisa
このエントリーをはてなブックマークに追加
はてなブックマーク - Hack #127: !を含む外部コマンドを実行する
Share on Facebook
Post to Google Buzz
Bookmark this on Google Bookmarks
Bookmark this on Yahoo Bookmark
Bookmark this on Livedoor Clip
Share on FriendFeed

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://vim-users.jp/2010/02/hack127/trackback/
Listed below are links to weblogs that reference
Hack #127: !を含む外部コマンドを実行する from Vim-users.jp

Home > Vim Hacks > Hack #127: !を含む外部コマンドを実行する

Search
Feeds
Links
  • 公式
  • 勉強会
  • 情報
  • コミュニティ
  • Meta
    Etc
    Creative Commons License
    This blog is licensed under a Creative Commons License.

    Return to page top