- 2010-02-25 (木) 0:00
- Vim Hacks
問題
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'
プラギンを作るときにハマる仕様です。:!を使うときによくわからない挙動があれば、まずは!のエスケープ漏れがないか確認してみましょう。
Comments:0
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

