Vimを使おう(中級編その1)

皆さんこんにちはKUJIRAです。Vimは使っていますでしょうか?今日から少しレベルを上げていきましょう。中級編に突入です。

 

今日は以下のようなことに焦点を当てて説明をしていこうと思います。

 

  1. 文字列補完
  2. 文字列検索・置換

 

1.文字列補完

Vimには文字列補完のプラグインが組み込まれています。文字列補完って何?という方は以下の例を見てください。知っている人は読み飛ばして結構ですw

 

たとえば、

「じゅげむ じゅげむ ごこうのすりきれ かいじゃりすいぎょの すいぎょうまつ うんらいまつ ふうらいまつ くうねるところにすむところ やぶらこうじのぶらこうじ ぱいぽ ぱいぽ ぱいぽのしゅーりんがん しゅーりんがんのぐーりんだい ぐーりんだいのぽんぽこぴーの ぽんぽこなーの ちょうきゅうめいのちょうすけ」

と打ちました。その後に以下の文章を打つとします。

『さて、今「ぐーりん」と何回言ったでしょう?』

このとき「ぐーりん」というワードを打つときに「ぐ」だけ打って以下のコマンドを押してみましょう。

「Ctrl + n」

すると以下のようになります。

「ぐ」=>「ぐーりん」

 

これが文字列の補完機能です。一つのキーワードの頭文字を入力して先ほどのコマンドを打つと文字列が補完されます。

 

「Ctrl + n」:文字列の補完を行う。(ただし、補完候補の文字は現在開いているファイル内の文字に限る)

 

但し書きのところが重要です。基本はファイル内に存在する文字列が候補として上げられます。そこまで頭は良くないですが使えます。日本語が苦手なのでブログや文章作成にはあまり使えない機能でしょう。
どちらかというとプログラミングや、英語の文章記述に使える機能だと思います。

 

2.文字列検索・置換
エディタに慣れれば慣れるほど欲しくなる機能があります。それは検索機能と置換機能です。この二つはエディタの操作を極め効率よく作業するには欠かせない機能だと思います。それでは見ていきましょう。

 

「/任意の文字列」:指定した文字列を現在のカーソルから下に向かって1回検索する。
「?任意の文字列」:指定した文字列を現在のカーソルから上に向かって1回検索する。
「n」:検索した文字列をもう一度検索する。(検索方向は最後に行った検索コマンドで決まる。「/」の場合は下方向「?」の場合は上方向にそれぞれ検索する)
「N」:検索した文字列をもう一度検索する。(検索方向は最後に行った検索コマンドで決まる。「/」の場合は上方向「?」の場合は下方向にそれぞれ検索する)

 

どうでしょう?結構簡単に手早く検索できるのではないかと思います。普通のエディタ、特にWindowsのエディタとかだと「Ctrl + f」を押して検索ボックスを開いた後、検索キーワードを入力して検索ボタンを押さなければいけません。キーボード操作に慣れた人ならこの面倒臭さが分かると思います。

「N」については「n」と検索方向が逆になると覚えた方が機能を理解しやすいと思います。ですので、実質は「/」で検索しようが「?」で検索しようが両方とも上下方向に検索できるということになります。

 

さて、今度は置換機能について見ていきましょう。

 

「:%s/任意の検索文字列(置換前文字列)/任意の置換文字列(置換後の文字列)」:任意の文字列でファイル内のすべての行に対して検索し最初にヒットした箇所を指定した文字列で置換する。
「:n,ms/任意の検索文字列(置換前文字列)/任意の置換文字列(置換後の文字列)」:任意の文字列でファイル内のn行からm行までを検索し最初にヒットした箇所を指定した文字列で置換する。
「:%s/任意の検索文字列(置換前文字列)/任意の置換文字列(置換後の文字列)/g」:任意の文字列でファイル内のすべての行に対して検索し指定した文字列ですべて置換する。
「:n,ms/任意の検索文字列(置換前文字列)/任意の置換文字列(置換後の文字列)/g」:任意の文字列でファイル内のn行からm行までを検索し指定した文字列ですべて置換する。

 

以上です。この置換に関しては使いやすい、使いづらいの意見が2分しそうですが、KUJIRAは使いやすいと思っています。やはりホームポジションから手が離れないのは大きいです。

 

と、ここまで検索と置換について書いてきた訳ですが、この検索と置換機能、正規表現でのパターンマッチも行えます。まぁ、今のテキストエディタなら当たり前にできるのでこれといって魅力的な訳ではないですが便利ということには変わりないので紹介だけしておきます。

 

Vimの正規表現については次回やりたいと思います。今日はここまで、KUJIRAでした。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください