gracetory’s blog

東池袋にある合同会社グレストリのエンジニアブログです

サーバでちょっとファイルを修正したい時に使うVimの最低限の使い方

f:id:ykira:20180222192440p:plain 久しぶりの投稿になります。プログラマのykiraと申します。

早いもので2018年も2ヶ月が過ぎ去ろうとしていますが、皆さんお元気ですか?

私は新年早々にインフルエンザに罹ってしまい、家でぶっ倒れていました。ほんと、元気が一番ですよね。

さて、弊社では主にゲームアプリのサーバサイド運用を行っているのですが、本番サーバは基本的に外部から直接ログインできないようにしています。

当然、SFTPクライアントなどでファイルを更新することもできないので、緊急の場合はサーバ内部で直接ファイルを編集します。 この時に覚えておきたいのがVim(vi)の最低限の使い方です。

すでに使っている人も多いエディタですが、弊社もこれから新入社員を迎えるに当たりブログにまとめておこうと思います。

起動

ターミナルで vim ファイル名 で起動します。

結局真っ黒い画面ですね。

$ vim test.php

ちなみに、存在しないファイル名を指定した場合は新しくそのファイルが作成されます。

終了

vimを起動した状態で :w で保存、:q でvimを終了します(画面の下の方に入力したものが表示されます)

:wq で保存して終了ということもできます。

:w   保存
:q   終了
:wq  保存して終了

もし入力できない場合は escキー を押してから試してみてください。

行番号表示

デフォルトだと行番号が表示されていないかと思います。

vimを終了させるのと同じように、下記の様に入力してみてください。

:set number   行番号表示
:set nonumber 行番号非表示

カーソル移動

hキー で←移動、jキー で↓移動、kキー で↑移動、lキー で→移動です。

ちょっと厄介ですが、覚えた方がキーボードのホームポジションから手を動かさなくていいので楽です。

h  ←
j  ↓
k  ↑
l  →

日本語入力の場合は出来ないので英数入力にしましょう。

ちなみに、キーボードのカーソルキーでも移動は出来ますが、使うのを推奨はしません。

文字入力

文字の入力は iキーaキー を押してから行います。

これらのキーを押すと、vimがインサートモード(入力モード)となります。

i   現在のカーソル位置から入力
a   現在のカーソル位置の次の位置から入力

インサートモード中は移動などはできません。

インサートモードを終わらせるのは、escキー です。

vimはこうやって、インサートモードと移動などができるノーマルモードを切り替えながらファイルを編集していきます。

文字削除

文字を削除したい場合は、ノーマルモードで xキー です。

カーソル位置も文字が1つ削除されます。

1行まるごと削除したい場合は dキーを2回 です。

x   現在のカーソル位置の文字を1文字削除
dd  現在のカーソル位置の行を1行削除

ここまでのまとめ

基本はここまでのもので簡単な編集などはできます。

  1. vimを起動
  2. ノーマルモードで編集したい位置までカーソル移動
  3. インサートモードにして文字入力(※escキーでノーマルモードに戻る)
    または
    ノーマルモードのまま文字削除
  4. 3を繰り返して編集が完了したら保存して終了。

どうでしょうか。このくらいの操作方法なら出来そうですよね。

さて、続けてもう少し便利なコマンドを紹介していきます。

文字置換

文字置換をするには、ノーマルモードで置換したい文字まで移動して rキー を押したあとに、置換したい文字を入力します。

1文字置換され、またノーマルモードに戻ります。

r  1文字置換 rキーを押したあとに置換したい文字を入力する

コピー&ペースト

カーソル位置の行をコピーする場合は yキーを2回 です。

ペーストしたい場合は、目的の位置まで移動して pキー です。

yy  カーソル位置の行をコピー
p   カーソル位置にペースト

文字列検索

ノーマルモードで/キーを押して検索したい文字列を入力すると、その文字列を検索します(終了の時と同じく画面の下に入力したものが表示されます)

次の検索結果にカーソル移動する場合は nキー、前の検索結果にカーソル移動する場合は シフト+nキー(大文字Nキー) です。

/検索したい文字列
n  次の検索結果
N  前の検索結果

ちなみに、紹介しているコマンドはviewなどでも使えますので、文字列検索など試してみてください。

おまけの便利なカーソル移動

社内の人間によく使うコマンドを聞いたので、参考程度に書いておきます。

もちろん、使いこなせればもっとvimの操作が楽になりますよー

G   ファイルの一番↓へ移動
gg  ファイルの一番↑へ移動
行番号+G  入力した行へ移動
Ctrl+d   1画面分↓へ移動
Ctrl+u   1画面分↑へ移動

1行内でも便利な移動コマンドがありますので紹介します。

$   行末へ移動
0   行頭へ移動

他にも単語単位で移動などまだまだ便利な機能が沢山です。

全部覚えるのは大変ですけどねー

これでちょっとしたファイル編集はバッチリ

基本はこんなもので、ちょっとした編集は問題ないと思います。

これくらい覚えるだけでも、vimへの苦手意識は減りますよー

興味があったらググってみると、まだまだ便利なコマンドが沢山あります。

この先はぜひ自身の足でvimウィザードへの道を歩んでください。

俺達の戦いはこれからだ!!

(ご愛読ありがとうございました。ykiraの次回作にご期待ください。)