はじめてのVim覚え書き

はじめてのVim覚え書き

  • 2018-07-28  最終更新日:2018-07-28

今回はエディターのご紹介になります。かなり特殊なVimエディターをご紹介したいと思います。便利なエディターAtom、SublimeText、VisualStudioCodeとは訳が違います。

ちょっと扱いにくいエディターVimなんですがローカル開発設定などをしているとちょくちょく出くわしてしまいます。このエディターは普通のエディターではなくいろいろとモードがあり普通に入力するのも大変です。まずはvimtutorから練習することをおすすめします。

ターミナルを立ち上げてvimtutorと入力すればできます。ターミナル内にてvimの練習ができますが以下のようなアプリの形式もあります。

目指せ一流vimmer!プログラマやサーバー開発者、エンジニアなどが利用しておりますがコーダーなどの利用者も多いです。慣れてしまうと戻れない便利さがあります。

かく言う私も何度も挑戦しては挫折の繰り返しでした。かなり面倒なんで。。。強制的に環境に置かないとやらないですね。


Vimメリット・デメリット

vim

メリットはマウスを使うことなく高速に編集・操作が可能です。常にキーボードの上に手を置いた状態で扱うことができるので楽です。純粋なエディターなのでとにかく速いし軽い、カスタマイズも可能、ターミナル内での編集もできます。マルチプラットフォームなのでOSの環境に依存しません。

デメリットと言えばとっつきにくさです。特に慣れるまでが大変で結構敷居が高い気がします。ルールやコマンドなどを覚えないといけないことです。とにかく奥が深い、いきなり全部覚えなくても少しずつかまってやっていくことが大切かなと思います。

Vimモード

vim

基本的に以下の5つのモードがあります。カーソルキーとデリートキーを卒業することから始まります。vimtutorを何回かやるとなれてきます。

  • ノーマルモード
  • 入力モード (i)
  • コマンドモード (:)
  • ビジュアルモード (v)

基本的にはノーマルモードを主体として操作します。編集の際に入力モードやコマンドモード、ビジュアルモードを使って編集操作を行うことが多いです。()内の単語を入力したらそのモードに入ります。戻るときは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" ""(ダブルコーテーション)で囲まれた文字列を消す
<div class="text">テキスト</div><div class="">テキスト</div>
d2w 2単語削除
cit タグ内のテキストを削除してインサートモード
<div>テキスト</div><div></div>
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 編集中にハイライトしないようにする

基本コマンドの意味がわかると覚えやすいかもしれません。

  • c : change (変更)
  • d : delete (削除)
  • y : yank (ヤンク: コピーと同義)
  • g : go (移動全般)

vimrc設定を以下から設定すると勉強になると思います。

参考になれば幸いです。


∞Tadashi Suyama∞

vim ヴィム ビム エディタ editor text
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

サイト内検索

最近の投稿

アイキャッチ
そろそろvuejs始める

最近はjQueryよりvueで書いた方が楽ではないかと思い学習中です。 そもそもVuejsはドキュメントが日本語対応なので試しやすいし情報も豊富なので学習しやすいです。 3大フレームワークと呼...

02 May 2021

アイキャッチ
追い風CSS(tailwindcss)が結局楽かも

最初にtailwindcssのv1が出た頃はまだbootstrapで良いかな。 htmlに入れるクラスタグが多過ぎと思っていました。あまり良い印象はなかったです。 時は過ぎいろいろと触っていると...

29 Apr 2021

アイキャッチ
エラー処理について

COJPドメンを取得する際に「登記年月日」という項目があります。 その項目通り登記した年月日を入れる訳ですが、なぜかエラーが出ました。 半角英数字にして下さいというよくあるエラーです。当然半角英...

24 Jan 2021

アイキャッチ
javascriptのundefinedの判定

jqueryで高さの数値をとって足し算をしていたらエラーも出ずに動かないということになったので調べてみました。 ワードプレスで管理画面のアドミンバーが一度ログインするとフロント画面でも表示される...

17 Jan 2021

アイキャッチ
Webpack5にアップデートしてエラーの対処方法2つ

webpack4(4.41.5)から webpack5(5.12.1)にあげました。 特に難しい設定は行っておらず主にscssと共通モジュールの設定だけで使っているのですがそれでもエラーが出たの...

09 Jan 2021

著者

ウェブエンジニアの須山のブログです。

WEBに関することや個人的に関心のあることについて書きます。主に技術系ブログです。

フッターイメージ