今回はエディターのご紹介になります。かなり特殊なVimエディターをご紹介したいと思います。便利なエディターAtom、SublimeText、VisualStudioCodeとは訳が違います。
ちょっと扱いにくいエディターVimなんですがローカル開発設定などをしているとちょくちょく出くわしてしまいます。このエディターは普通のエディターではなくいろいろとモードがあり普通に入力するのも大変です。まずはvimtutorから練習することをおすすめします。
ターミナルを立ち上げてvimtutorと入力すればできます。ターミナル内にてvimの練習ができますが以下のようなアプリの形式もあります。
目指せ一流vimmer!プログラマやサーバー開発者、エンジニアなどが利用しておりますがコーダーなどの利用者も多いです。慣れてしまうと戻れない便利さがあります。
かく言う私も何度も挑戦しては挫折の繰り返しでした。かなり面倒なんで。。。強制的に環境に置かないとやらないですね。

メリットはマウスを使うことなく高速に編集・操作が可能です。常にキーボードの上に手を置いた状態で扱うことができるので楽です。純粋なエディターなのでとにかく速いし軽い、カスタマイズも可能、ターミナル内での編集もできます。マルチプラットフォームなのでOSの環境に依存しません。
デメリットと言えばとっつきにくさです。特に慣れるまでが大変で結構敷居が高い気がします。ルールやコマンドなどを覚えないといけないことです。とにかく奥が深い、いきなり全部覚えなくても少しずつかまってやっていくことが大切かなと思います。

基本的に以下の5つのモードがあります。カーソルキーとデリートキーを卒業することから始まります。vimtutorを何回かやるとなれてきます。
基本的にはノーマルモードを主体として操作します。編集の際に入力モードやコマンドモード、ビジュアルモードを使って編集操作を行うことが多いです。()内の単語を入力したらそのモードに入ります。戻るときはESCボタンで戻ります。
まずは移動系からファイル内の移動になります。ノーマルモードでの操作になります。
| コマンド | 内容 |
|---|---|
| gg | ページの先頭 |
| G | ページの最後 |
| 50G | 50行目に移動 |
| Ctrl + f / Ctrl + b | ページ単位で移動 |
| Ctrl + e / Ctrl + y | 1行単位移動 |
| Ctrl + d / Ctrl + u | 半ページ分上下移動 |
| H | 画面上部 |
| M | 画面中央 |
| L | 画面下部 |
| w / b | 単語の先頭 / 単語の末尾 |
| W / B | 単語の先頭 / 単語の末尾(区切り文字を含めない) |
| e / E | 単語末尾 / 単語末尾(区切り文字を含めない) |
| ^ / $ | 行頭単語/行末単語 |
| 0 | 先頭 |
| % | 対応する{}に飛ぶ |
文字の検索・置換になります。こちらもノーマルモードからの操作になります。:はコマンドモードになります。
| コマンド | 内容 |
|---|---|
| f(キーワード) / t(キーワード) | 後方キーワード検索/後方キーワード直前まで検索 ;でキーワードを続けて探す,で戻る |
| F(キーワード) / T(キーワード) | 前方キーワード検索/前方キーワード直前まで検索 ;でキーワードを続けて探す,で戻る |
| * / # | カーソルに最も近い単語で前方検索 / 後方検索 |
| / | 前方検索 |
| ? | 後方検索 |
| n / N | 下方法に検索 / 上方向に検索 |
| :s/foo/bar/ |
現在カーソルがある行の最初のひとつをfooをbarに置換 |
| :%s/foo/bar/g |
現在開いているファイルに出てくる全てのfooをbarに置換 |
| :%s/foo/bar/gc | c をつけると、確認(yes/no)が出る |
こちらはヴィジュアルモードになります。選択した状態でyをするとコピーしますのでpでペーストになります。
| コマンド | 内容 |
|---|---|
| v | 文字単位の選択 |
| V | 行単位の選択 |
| Ctrl + v | 矩形選択(くけいせんたく) |
| Ctrl + g | ビジュアルモードとセレクトモードのトグル |
| gv | 直前の選択を再選択 |
| o | 選択範囲の端に移動 |
| gg V G | 全選択 |
コピペやデリートなどノーマルモードから入力(インサート)モードへ入ります。
| コマンド | 内容 |
|---|---|
| i / I | カーソル前に入力 / 行頭に入力 |
| a / A | カーソル後に入力 / 行末に入力 |
| o / O | 改行して入力 / 一行前に入力 |
| s / S | 行削除して入力 / カーソル文字を削除して入力 |
| c / C | 現在地より右を削除して入力 |
| r / R | 置換モード |
| u | アンドゥ |
| Ctrl + r | リドゥ |
| x | 1文字削除 |
| D | カーソル位置から行末まで削除。d$同義 |
| dd | 行削除 |
| dw | 単語削除 |
| dap | 一段落削除 |
| di" | ""(ダブルコーテーション)で囲まれた文字列を消す
|
| d2w | 2単語削除 |
| cit | タグ内のテキストを削除してインサートモード
|
| yy | 行コピー |
| p | ペースト |
| "+p | OSのクリップボードから貼り付ける |
| "+y | vimの文章をOSのクリップボードにコピー |
| :%y | 全体をコピー |
| :n,my | n行からm行までを指定行をコピー(n,mは数字) |
| dG | 現在位置以下削除 |
| J / gJ | 行の結合 / 行の連結スペースなし |
| g~ | 大文字小文字の入れ替え |
| gu | 小文字に変換 |
| gU | 大文字変換 |
| > G | インデントを深くする |
| < G | インデントを浅くする |
| . | 直前の操作を繰り返す |
| = | インデントをそろえる |
| Ctrl + a | インクリメント(ひとつずつ増える) |
| Ctrl + x | デクリメント(ひとつずつ減る) |
| :6t. | 6行目を現在行の下にコピー |
| :t6 | 現在行を6行目の下にコピー |
| :t. | 現在行をコピー(ノーマルモードのyypに相当) |
入力モード(インサートモード)による操作になります。
| コマンド | 内容 |
|---|---|
| Ctrl + h | 直前の文字を削除 |
| Ctrl + w | 直前の単語を削除 |
| Ctrl + u | 行頭までを削除 |
| Ctrl + n | 補完機能 |
| ESC | ノーマルモードに戻る |
コマンドモードでのファイル保存やファイル分割など
| コマンド | 内容 |
|---|---|
| :w | 上書き保存 ファイル名で名前をつけて保存 |
| :q | 終了 |
| :q! | 強制終了 |
| :e / :E | 開く / 現在開いているファイルが存在しているディレクトリをファイルエクスプローラで開く。 |
| :sp | 縦分割 ctrl + wウィンドウ移動 |
| :vs | 横分割 |
| :close | ウィンドウを閉じる |
| :tabnew | タブ新規 |
| :tabe | タブ開く |
| gt | タブ間移動 |
| :tabclose | タブ閉じる |
vimエディターに設定が行えます。.vimrcなどに設定しておけば毎回設定することなくカスタマイズができます。いろいろ出回っていますので自分に合った設定をしておくと後が楽ですね。
| コマンド | 内容 |
|---|---|
| :set number / :set nonumber | 業ナンバー表示 / 非表示 |
| :syntax on / syntax off | シンタックス表示 / 非表示 |
| :set tabstop=4 | タブを4文字分の設定 |
| :set ic / :set noic | 大文字小文字を区別しないで検索する / 区別する |
| :set nohlsearch / :set hlsearch | 編集中にハイライトしないようにする |
基本コマンドの意味がわかると覚えやすいかもしれません。
vimrc設定を以下から設定すると勉強になると思います。
参考になれば幸いです。
∞Tadashi Suyama∞
あまりcgiは使いたくないのですが使わざるを得ない時があります。仕方なく設置するのですがエラーが出ちゃうんです。なんか知らないけど。 ありがちなのがパーミッションとかパスが問題になるんのですけど...
19 Feb 2022
今回はワードプレス専用のアドレス変更方法をご紹介します。ワードプレスのアドレスはwordpress@~という形で送られてきますが変更可能です。 functions.phpに記載するのですがプラグ...
12 Feb 2022
Sassの遷移は多すぎる今日この頃 Ruby Sass→LibSass→DartSass(いまここ) Ruby SassはSassの最初の実装でしたが、2019年3月26日にサポートが終了しま...
22 Jan 2022
明けましておめでとうございます。 本年も何卒よろしくお願いいたします。 年末年始は雪でしたね、そこまで積もっていませんが。 {% include adsensearticle.html...
10 Jan 2022
最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...
02 May 2021
ウェブエンジニアの須山のブログです。
WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。