4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Vim操作の基本の「き」 −「実践Vim」まとめ(その0) -

Last updated at Posted at 2015-01-11

〜「実践Vim 思考のスピードで編集しよう!」を読んでVimの基本をまとめ中〜

0. Vimのやり方

普段コードを書く中では、同じ編集を繰り返すシーンが多い。この繰り返しの編集を、Vimでは効率的に実現してくれる。Vimの操作を身につけるためのファーストステップは「ドットの公式 Dot Formula」による繰り返し編集をマスターすること。

0-1. Vim以前の大前提

DRY(Don't Repeat Yourself)

  • Vimに限らず言わずもがな。

0-2. ドットの公式 Dot Formula(キー入力の理想型)

カーソル移動用のキー入力が1つ、何かを実行するキー入力がもう一つ。何かをするにはこれが一番だ!

  • 繰り返しの変更にはドットコマンド.を使用する
  • 合計2つ(移動に1回+テキスト変更に1回)のキー入力が理想系(移動と変更を含めて記憶したい場合はマクロ使う)

0-3. ドットコマンドとは?

Vimのドキュメントではドットコマンドについてシンプルに「直前の変更を繰り返す」と書かれている。
(中略)最初に問うべきはこれだ。「変更ってなに?」

[Vim documentation: repeat]
(http://vim-jp.org/vimdoc-ja/repeat.html)

  • 変更とは?
    • ノーマルモードでのテキストを変更するコマンド1つ分
    • 挿入モードに入ってからノーマルモードに戻るまでのテキスト変更

0-4. 余計な移動をなくす

ドットコマンドを効率的に使うために、移動用のキー入力を最小限に抑える。(理想は1回のキー入力で目的の箇所に移動する)着目すべきは下記の2点。

  • ノーマルモードでの検索による移動

目的の編集箇所に移動するためにh,j,k,lを連打するのはかっこわるい。下記の検索コマンドを利用して少ないキー入力で移動する。

検索コマンド 内容 次検索 前検索 最小キー入力数
f{検索文字} 一番近い{検索文字}まで移動(前方検索) ; , 2
F{検索文字} 一番近い{検索文字}まで移動(後方検索) ; , 2
/{検索文字列}<CR> 一番近い{検索文字列}まで移動(前方検索) n N 3
?{検索文字列}<CR> 一番近い{検索文字列}まで移動(後方検索) n N 3
* 現在のカーソル下の単語を検索 n N 1
  • 挿入モードへ入る方法

挿入モードに入るために、移動用のキーを押してからiまたはaを押すと、それだけで2回以上のキー入力になってしまう。Vimの複合コマンドを利用することで1回のキー入力でカーソルを移動させてかつ挿入モードに入ることができる。

Vimの1キーコマンドには、2つ以上の他のコマンドを纏めたバージョンと考えられるものがたくさんある。以下の表に、例をいくつか掲載する。

複合コマンド 同じことをする長いコマンド 内容(※引用外)
C c$ カーソルから末尾までを削除して挿入モードに入る
s cl カーソル下の文字を削除して挿入モードに入る
S ^C カーソル行を削除して挿入モードに入る
I ^i カーソル行の先頭に移動して挿入モードに入る
A $a カーソル行の末尾に移動して挿入モードに入る
o A<CR> カーソル行を下に改行して挿入モードに入る
O ko カーソル行を上に改行して挿入モードに入る

0-5. まとめ

まずはドットの公式を徹底する。移動に1回のキー入力、変更にはドットコマンドを使用!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?