- ベストアンサー
行削除のVIコマンド
viコマンドでご教授いただきたい事があります 「先頭が"hoge"から始まる行以外を全て削除する」 を実現する ”: ” から始まるコマンド文はありませんでしょうか? いろいろ組み合わせたら出来そうな気がするのですが、 私の思考能力では限界です。 どうぞよろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
:v/^hoge/d 手元にVimしかないので、traditionalなviで使えるか不明ですが。
その他の回答 (4)
- monda
- ベストアンサー率87% (50/57)
すっかり間が空いてしまい失礼しました。 > 実はviviと呼ばれるvi機能付きWindowsのエディタを > 使用しております。 なるほど。 Windows に grep はありませんので、何かで代用したのですね。 現在のワタシの手元環境にあった、ならじょのにでさんご提供の UNIX LIKE TOOLS 中の egrep.exe で試してみました。 すると、先の記述のとおりでは ^ が正しく機能しませんでした。 しかし、egrep "^hoge" とマッチングパターンをダブルクォートで 括れば期待どおりに機能します(シングルクォートではダメ)。 この挙動はまさに COMMAND.COM(あるいはCMD.EXE)のものですね。 vi の中からやるならば、 :%!egrep.exe "^hoge" ですね。 ところで、何故に UNIX 以外の環境で vi を利用したいのでしょう? なまじ Windows の中で実行しようとせずに、どこかのコンピュータに Linux でも入れておいて samba 経由でファイルを受け渡し、Linux へ telnet(Windows 上の TeraTerm とか)で接続して編集すれば、 ほとんど悩むことなく利用できるはずです。 X さえ使わなければ、Windows で使えないような非力な PC でも Linux は動きます。 --
お礼
monda様 ごぶさたしております。 tyapioです。 返事おそくなり、申し訳ございません。 >ところで、何故に UNIX 以外の環境で vi を利用したいのでしょう? >なまじ Windows の中で実行しようとせずに、どこかのコンピュータに >Linux でも入れておいて samba 経由でファイルを受け渡し、Linux へ >telnet(Windows 上の TeraTerm とか)で接続して編集すれば、 >ほとんど悩むことなく利用できるはずです。 簡単なコマンドも知らなかったくせに言うのもなんですが(^^;) viがすきだからです(愛) Windowsでのテキスト編集を全てviで行いたいので、 viviをいれてます ←わざわざ購入しました(TT) メール書く時にvi使えるのが特に嬉しいですね。 メーラーのエディタ使いにくくないですか?
- monda
- ベストアンサー率87% (50/57)
> しかし、このコマンドでは行の途中にhogeがある行も残ってしまいました。 ? hoge の前に ^ を付けて実行していますよねぇ。 #余計な解説かも知れませんが、^ は「行頭」の意。 これが「ズル」なのは、! で親シェルを呼び出して そこから grep を使っているからです。 つまり vi だけの機能ではない、と。 期待した結果にならないということは、親シェルは ^ を解釈してくれない =(/bin/shや/bin/cshおよび その眷属ではない)という環境でしょうか? --
お礼
追っての解説、誠にありがとうございました。 monda様の仰るとおりです。 実はviviと呼ばれるvi機能付きWindowsのエディタを 使用しております。 余り詳しくはないのですが、親シェルが「^」を解釈してくれない気がします。 #Windowsも親シェルってあるのかは解りませんが(^^;)
- monda
- ベストアンサー率87% (50/57)
ちょっとズルして :%!grep ^hoge ってのはいかが?
お礼
ありがとうございます。 しかし、このコマンドでは行の途中にhogeがある行も残ってしまいました。
- joe-
- ベストアンサー率34% (11/32)
全然スマートじゃないですが、、、 :%s/^[^h][^o][^g][^e].*$//g とかはどうですか?
お礼
ありがとうございます。 欲しいコマンドではありませんでしたが、 大変勉強になりました。
お礼
お礼がおそくなって申し訳ございません。 私の環境viviでも使用ができました。 まさしく私の欲しかったコマンドでした。 ありがとうございました。