やまもとのブログ

やまもと(25)の日々わすれていくようなことを、とりまとめたもの

vimで置換するときに失敗してたこと…

今日の作業中に、:global (:g)vglobal (:v)の使い方がわからなくて ちょっぴりあせった話です。。

基本的な使い方

まずは↓これ

:global   // :g は省略形

使い方

:global 検索したい文字列

とすると検索したい文字列が含まれる行をターミナル画面下部に表示してくれます。 実際に見たほうがはやいですね!

こんなかんじです。

また:vglobalはその反対で、検索したくない文字列を入れて実行すると、先ほどの:globalの実行結果は2行のみでしたが、その2行以外が表示されるといった感じです。

検索したいだけならノーマルモードで、/検索したい文字列の方が べんりやーーーんって話ですが…

これだけじゃああないんです!!!

この記事のタイトルにもなっているように、 チカンをするときに活躍してくれるのです!!

例えば、↑のデモのように、httpを例にしてヤッてみましょう! あえて省略形で、更に:vglobalの方を使ってやってみます。

:v http/s/href="\//href=/gc

何をやっているかというと

「httpを含まない行の href="/ を href="」にしなさいということをしています。

製作中についうっかり、パスの書き方を相対で 書かなきゃいけないのに、ルート相対でかいてたああああ

なんてときに使えるコマンドですね。

誰も使わないですね。。。笑 自分はその逆で、ルート相対でパス指定しなきゃならんのに 相対パスでかいてあるううう…という場面に直面して 上記のコマンドをちょちょいと変更して、1つずつ確認しながらyを押していきました笑

そして誰も気にしていない、自分が犯していた失敗とは…

sの前に%をつけていたのです。。。

こうすることで普通に置換する状態と何ら変わらない状況に…。 さらに、置換対象の一番下にきて、入力し終えても永遠にチカンし続けられるという状況になります…。

こうなったらCtrl+cで脱出するほかありませんでした。。。 グーグル先生に助けを求めながらvimを使うと、基本がわからないので、 こういった自分の罠にハマりながら普段の制作をしております笑

がんばろう。。。