はじめに
エンジニアになって1、2年目。linuxサーバーにログインして設定ファイルを確認する際、Viの独特な操作に戸惑っている方も多いのではないでしょうか。自分もかつては「矢印キーが効かない」「保存して閉じる方法がわからない」と四苦八苦していた一人でした。
しかし、ある現場で先輩が作成した「即興のスクリプト」を目の当たりにしてから、自分の中でViに対する考え方は180度変わりました。
衝撃を受けた「現場のVi」
その日、大量のログから特定のIPアドレスを抽出して加工するという、手作業で1日では到底終わらないタスクが発生しました。
これまで自社課題のvi操作しか知らず、ひとつひとつ文章を編集していたため、これでは1日で終わりそうもありませんでした。「これ、どうしましょうか……」と相談した自分の横で、先輩はViを極めるとこんなこともできると仰り、魅せてくれました。
画面上で慣れた手つきでコマンドを打ち込み、ものの数分でその場限りのシェルスクリプトを書き上げ、実行。一瞬にしてタスクを完了させたのです。
その所業を間近で見た時、GUIに頼らず、サーバー環境だけで完結させる Viコマンドの真価を知りました。「自分も先輩のように、どんな環境でもさらっとタスクを終わらせられるようになりたい」と強く感じたのを覚えています。
Viができると、スクリプト作成のハードルが下がる
その日から、Viについていろいろ調べ学習しました。そこで気づいたのは、Viを使いこなせるようになると、頭の中の「やりたいこと」がそのままコードになるということです。
スクリプト未経験だと、「どう書けばいいか分からない」「何から手をつければいいか困惑する」という心理的な壁があると思います。しかし、Viコマンドをあらかた習得すると、その壁が驚くほど低くなります。
一から一文字ずつコードを打つのではなく、「この設定箇所をコピーして(yy)」「不要な行を消して(dd)」「別のファイルから持ってくる」といった操作が自在になるにつれ、スクリプト作成へのとっつきにくさが解消されていきました。
「書いて試す」というトライアンドエラーのサイクルが高速化され、以前よりも自動化に対するハードルが下がったと実感しています。
具体的にここが変わる:編集から「構築」へ
行のコピー(yy)、削除(dd)、検索(/)といった基本操作が指に馴染むと、スクリプトのひな形を作るスピードが劇的に上がります。「思考を止めずに手を動かせる」ことが、複雑なロジックを組む際の手助けになります。
よく使う基本操作
| コマンド | 動作 | 詳細 |
|---|---|---|
yy |
行のコピー(ヤンク) | 現在の行をコピーします |
dd |
行の削除 | 現在の行を削除します |
p |
貼り付け | コピー・削除した内容を下方向に貼り付けます |
/ |
文字列検索 | ファイル内を下方向に検索します |
n |
次を検索 | 次の検索候補へ移動します |
u |
アンドゥ | 直前の操作を取り消します |
一括置換の快感
:%s/old/new/g を知ってからは、数百行あるスクリプトの変数修正も怖くなくなりました。手作業で直してミスをする不安から解放されるのは、精神的にも大きなメリットです。
置換コマンドの形式
| 要素 | 意味 | 詳細 |
|---|---|---|
: |
コマンドラインモード | コマンド入力状態に移行します |
% |
範囲指定(全行) | ファイル内のすべての行を対象にします |
s |
substitute(置換) | 置換コマンドを呼び出します |
/ |
区切り文字 | 検索語や置換語の境界を示します |
old |
検索文字列 | 置換したい元のテキストです |
new |
置換文字列 | 新しく書き換えたいテキストです |
g |
global(全体) | 1行の中に複数一致箇所がある場合、すべて置換します |
【実践編】5分でできる「一括置換」ハンズオン
理屈がわかったら、適当なLinuxサーバーで実際に試してみるのが一番です。以下の手順で「100行を一瞬で書き換える」体験をしてみましょう。
1. テストファイルの作成と権限付与
まずは空のファイルを作り、編集権限をつけます。
touch test.txt
chmod 755 test.txt
vi test.txt
2. サンプルデータの用意(100行書く)
Viが開いたら、以下の手順でIPアドレスが記載された文章を100行用意します。
i キーを押して挿入モードに入り、 path/to/1.1.1.1 と入力。
Esc キーでコマンドモードに戻る。
yy で行をコピーし、 99p と打ち込む(これだけで100行に増殖します!)。
3. 一括置換の実行
ここで、すべてのIPアドレスを 1.1.1.2 に変更してみましょう。
コマンドモード(Escを押した状態)で以下を入力して Enter を押します。
:%s/1.1.1.1/1.1.1.2/g
画面上の1.1.1.1が一瞬にしてすべて1.1.1.2に変わるはずです。確認できたら :wq で保存して閉じます。
4. 後片付け
実習が終わったら、作成したテストファイルを削除して作業完了です。
rm test.txt
「その場」で直せる強み
わざわざファイルをローカルに落として、編集して、またアップロードする……そんな手間はいりません。SSHで入ったその場で、思いついたロジックをすぐに形にできる。この機動力こそが、現場での「即戦力」に直結します。
1、2年目の今、Viを覚えるべき理由
現場では、いつも自分の使い慣れたエディタ(VSCodeなど)が使えるとは限りません。むしろ、制限の多い環境や、何もインストールされていない真っさらなサーバーで「何ができるか」が試されます。
そんな時、Viのコマンドが打てるだけで、あなたは指示を待つだけの「作業員」から、自らツールを生み出し課題を解決する「エンジニア」に1歩前進できます。
最後に:Viは裏切らない
最初は操作が特殊で、挫折しそうになるかもしれません。でも、一度指が覚えたコマンドは、環境が変わっても一生使い続けられる武器になります。
自分が先輩のvi操作を見て感動したように、皆さんもぜひViをスキルセットに加えてみてください。現場で「おっ、こいつデキるな」と思われる瞬間は、案外そこから始まるのかもしれません。