Chiroru's Diary

日々の学びをちょこちょこメモしていきます

Vimまとめ

【目次】

今更だけどviとVim

そもそも
Vimは複数あるLinux向けのテキストエディタの一つであり、ほとんどのLinuxディストリビューションに標準でインストールされている。(=ほぼLinuxの標準エディタといえる!)

Vimはviエディタの後継として開発されたもので、Linux関連のドキュメントではVimのことをviで表記していることがある。そのため、「vi」が出てきたら「Vim」と思って良い。 (現在ほとんど使われることはないが、互換性のため起動時も「vi」コマンドでも起動可能)

Vimのコマンド集

保存と終了

コマンド 意味
:w 上書き保存
:q 終了
:wq 保存かつ終了
:q! 保存せず終了

移動

-カーソル

コマンド 意味
h
j
k
l

-単語

コマンド 意味
w 次の単語先頭へ
b 前の単語先頭へ
W スペース区切り 次の単語先頭へ
e 次の単語の末尾へ

-行

コマンド 意味
0 行頭
$ 行末
I(大文字i) 行頭移動&インサートモードに切り替え
A 行末移動&インサートモードに切り替え
gk 1行ずつ上移動
gj 1行ずつ下移動
gg 最初の行へ
G 最後の行へ
<数字>G <数字>で指定された行へ

削除・コピー・ペースト

コマンド 意味
x・dl 1文字削除
dw 単語の末尾まで削除
dd 行全体を削除
dG 現在地から最下部までを一気に削除
s カーソル上の文字を削除&インサートモードに切り替え
S カーソルのある行を削除&インサートモードに切り替え
C 現在置から右を削除&インサートモードに切り替え
ddp カット&ペースト
yyp コピー&ペースト
  • dコマンド:削除範囲の指定が可能
  • y(ヤンク):コピーのこと
  • p(プット):ペースト

連結

コマンド 意味
J 現在とその下の行を連結し、1つの行となる

取り消し

コマンド 意味
u 取り消し(undo)
U 行全体の変更取り消し
Ctrl + r 取り消しを取り消す(redo)

検索系

「/」の後ろに検索ワードを入力後Enterで現在開いているファイルから文字列を検索する。なお検索は、カーソル位置からスタートするので注意。

コマンド 意味
/<文字列> 下方向に検索
?<文字列> 上方向に検索
* 下方向に単語を検索
n 次の検索結果へ移動
N 前の検索結果へ移動
CTRL-O 検索後元の場所に戻る
% (,),[,],{, もしくは } 上にカーソルがある状態で 対になる文字検索

「プロセス番号を調べる」の際に登場したコマンドless。これはスクロール表示を可能にするコマンドで、以下のように使う。

less [オプション]<ファイル名>

lessコマンドでファイル閲覧中にも、検索系のコマンドが使える。

参考:新しいLinuxの教科書p79~81

置換系

コマンド 意味
:#,#s/old/new/g #,# には置き換える範囲の開始と終了の行番号を指定
:%s/old/new/g ファイル全体で見つかるものに対して変更する
:%s/old/new/gc 上記の変更の際、1つ1つ確認がはいる
r 一文字だけ

挿入系

挿入後 は<ESC>

コマンド 意味
cw カーソル位置から単語の終わりまで削除&挿入
c$ カーソル位置から行の終わりまで削除&挿入
a カーソル上の次から文字追加
A 行末に文字追加
o カーソルの下に行追加&インサートモードへ
O カーソルの上に行追加&インサートモードへ

繰り返し

コマンド 意味
. 直前の一連操作を繰り返す

外部コマンド結果の利用

:!r<コマンド>でコマンドを実行して結果を貼り付けられる。

コマンド(例) 意味
:!r ls カレントディレクトリのファイル一覧を貼り付け

ファイル保存・読み込み

コマンド 意味
:w FILENAME ファイルに保存
:r ファイル名 ファイル名というファイルが取り込まれカーソルの下に挿入される
:r !dir dir コマンドの出力をカーソル位置以下に読み込む

ファイルの作成、編集について

このサイトがわかりやすく説明してあった!

起動スクリプトの作成

"vimrc" ファイルを作成することで色々な機能を使えるようになる。

(例)参考:vimtutorより

  1. "vimrc" ファイルの編集を開始する。(システムに依存)
        `:edit ~/.vimrc`   UNIX 向け

  2. "vimrc" を読み込む。
        :read $VIMRUNTIME/vimrc_example.vim

  3. 以下のようにファイルへ書き込みます。
        :write

  4. 次回 Vim を起動すると、色づけ構文が使えるようになる。

補完

CTRL-D : command で可能な補完を見られる。
<TAB>で補完を使用する。

ヘルプ

コマンド 意味
:help help画面の表示
:q help終了
Ctrl + ] リンク先移動
Ctrl + t リンク先から元の場所へ
:help <コマンド> そのコマンドのヘルプ表示

参考:新しいLinuxの教科書p116~128

Vimのモード

Vimには4種類のモードがある。
- ノーマルモード:コマンド入力のできる基本の状態
- ビジュアルモードv範囲選択をする
- インサートモード(挿入モード)iで文字の入力ができる状態
(カーソルの右側に文字入力したい時にはaを使用する)
- コマンドモード各種コマンドの実行。文字列の編集作業をする

eaで現在の単語の直後でインサートモードに切り替わる

参考:新しいLinuxの教科書p111~113

オペレーターとモーション

オペレータ
動作を指定するもの。オペレーターコマンドは、カウントとモーションコマンドと組合わせることができる。
主要な4種は以下である

コマンド 意味
c 変更 (change)
d 削除&挿入モードに切り替え (delete)
y コピー(yank )
g 移動全般 (go)

モーション
モーションはカーソル移動コマンドのことで、対象範囲を指定する。

なお、モードによって入力順序が異なる。

ノーマルモード
→基本的に最初にオペレータを入力し、その後に範囲指定を行う(CUI的発想)
ビジュアルモード
→範囲を最初に選んでそれからオペレータを入力する (GUI的発想)

このサイトの説明が分かりやすかった。

その他参考:Vim幼稚園からVim小学校へ

モーション一覧の一部

コマンド 意味
w カーソル位置から空白を含む単語の末尾まで。
e カーソル位置から空白を含まない単語の末尾まで。
$ カーソル位置から行末まで。

繰り返しのモーションの前に数値をタイプ
d 数値 モーション

コンビネーションによるテキスト編集

コマンド 意味
ci' シングルクオート内の文字列を削除してインサートモードへ
ca' シングルクオート+文字列を削除してインサートモードへ
cit HTMLタグで囲まれた文字列を削除・編集
ciw カーソルがある単語だけが消えてインサートモードへ

cit についてはこのサイトの説明がわかりやすかった。以下は一部抜粋

citのcはアクション。cの場合は削除して挿入モードに変更。 citのiは範囲。iはタグの中身が範囲でaに置き換えるとタグ全体が範囲になる。 citのtはターゲット。tの場合はタグに対して行う。

その他参考:脱初心者を目指すなら知っておきたい便利なVimコマンド25選 (Vimmerレベル診断付き)
その他参考:Vim幼稚園からVim小学校へ

ビジュアル選択

コマンド 意味
ggVG ファイル内全選択
= インデント揃える

その他

スニペット(neosnippet)を導入することで、定型のものは瞬時に呼び出せるようになる。