viのすゝめ

はじめに

旅行メディアシステム部の幕井と申します。

私はインフラエンジニアとして入社して、現在はアプリケーション開発をしています。

いつもはリッチなエディタを利用しているviをあまり利用したことのないエンジニアの方々に、 緊急時に絶対役立つviの覚えておきたいコマンド、ショートカットキーをご紹介します。

viのコマンド、ショートカットキーは多くのサイトで紹介されていますが、 ここで紹介するのは緊急時に役立つ絶対覚えておきたい厳選したものです。

viとは

viはテキストエディタです。

POSIX標準に含まれているため、UNIX系OSでは基本的に初期状態で利用できます。

想定環境

いつも利用している環境ではなく、稀に利用するUNIX系サーバーのCLI環境です。 つまりカスタマイズされていない素のviを想定しています。

viの起動

viに続けてファイル名で指定のファイルを開けます。

vi hoge.txt

viの基本的な考え方

viはノーマルモード、入力モード、コマンドモードなどのモードを切り替えながら使用します。

ノーマルモード

viの基本となるモードです。各種便利なショートカットキーが利用できます。

他モードからノーマルモードに切り替えるときは「ESC」キーを入力します。

うまく切り替わらないときは「Cntr+c」で切り替えできることもあるので、これも覚えておくといいです。

入力モード

直接ファイルを編集するモードです。

切り替え方法は複数ありますが、ノーマルモードで「i」を入力すると入力モードに切り替わると覚えておけばいいです。

コマンドモード

各種便利なコマンドが利用できます。

ノーマルモードで「:」や「/」を入力すると、画面下部で続きのコマンドが入力できるようになります。

大文字、小文字の扱い

コマンド入力では大文字、小文字は別物として扱われます。

覚えておきた操作

ここからは緊急時に役立つ覚えておきたいviのコマンド、ショートカットキーを紹介します。

操作はノーマルモード起点で記述しています。

「:」や「/」から始まっているものは操作でコマンドモードに切り替わっています。最後にエンターキーを入力してください。

行番号を表示

:set number

最初にこれを実行すると行番号が表示されてわかりやすくなります。

行番号を非表示にしたい場合は以下でできます。

:set nonumber

行のコピー

yy

カーソルのある行をコピーします。

行のカット

dd

カーソルのある行をカットします。

行の挿入

p

コピーまたはカットした行を挿入します。

「o」の入力で空行の挿入と入力モードへの切り替えを同時に行なうこともできます。

複数回のコマンド実行

数字に続けてコマンドで繰り返しコマンドの実行ができます。

例:10行のカット

10dd

指定行への移動

行番号G

例:100行目への移動

100G

ファイル先頭へ移動

gg

ファイル末尾へ移動

G

戻に戻す(Undo)

u

直前のコマンドを取り消します。繰り返し入力すると順に遡って取り消しできます。

やり直し(Redo

Cntr+r

Undoを実行し過ぎた際に、コマンドをやり直します。

文字列の検索

/検索したい文字列

例:

/hogehoge

「n」で次の文字列、「N」で前の文字列を検索します。

保存して終了

:wq

ファイル保存「:w」とvi終了「:q」を合わせたコマンドです。 保存してファイル編集を続ける場合は「:w」になります。

保存しないで終了

:q!

編集中の内容を破棄したい場合に使用します。 編集中の内容がある場合は「:q」で終了できませんが、「!」をつけることにより強制的に終了します。

まとめ

今回はPOSIX標準に含まれているテキストエディタviの基本的な使い方を紹介しました。

今回は緊急時を想定してviの基本中の基本のコマンドを紹介しましたが、 viではファイル中の文字列を条件に応じて置換したり、別ファイルからのテキストファイル挿入なども簡単なコマンドで実行できます。

また、設定ファイルを用意することによりviを自分好みにカスタマイズして利用できるので、 本記事でviに興味を持った方は普段の開発にもviを使ってみてはいかがでしょうか。

カカクコムでは、ともにサービスをつくる仲間を募集しています!

カカクコムのエンジニアリングにご興味のある方は、ぜひこちらをご覧ください!

カカクコム採用サイト