Vimの使い方入門: モード切り替え・保存終了・移動/編集コマンド一覧とおすすめプラグイン

Vimの使い方をモード切り替え・カーソル移動・保存終了(:wq/:q!)・検索置換・コピペなどのコマンド一覧で解説。NERDTree、fzf、coc.nvimなどおすすめプラグインと.vimrc設定例も紹介します。

Vimは、強力なテキストエディタであり、その効率的な操作性から多くの開発者に愛用されています。ここでは、Vimの基本的な操作方法と、開発効率を向上させるためのおすすめプラグインを紹介します。

Vimの基本操作

Vimには複数のモードがあり、それぞれのモードで異なる操作が可能です。

モード切り替え

  • i: 挿入モード (Insert Mode)。テキストの入力ができます。
  • Esc キー: ノーマルモード (Normal Mode)。コマンドの実行やカーソル移動ができます。
  • v: ビジュアルモード (Visual Mode)。テキストを選択して操作できます。
  • :: コマンドラインモード (Command-line Mode)。コマンドを入力して実行できます。

ノーマルモードでの移動

  • h: 左へ移動
  • j: 下へ移動
  • k: 上へ移動
  • l: 右へ移動
  • w: 次の単語の先頭へ移動
  • b: 前の単語の先頭へ移動
  • {: 段落の先頭へ移動
  • }: 段落の末尾へ移動
  • gg: ファイルの先頭へ移動
  • G: ファイルの末尾へ移動
  • 0: 行の先頭へ移動
  • $: 行の末尾へ移動

ファイルの保存と終了

  • :w: 上書き保存
  • :q: 編集終了(変更がない場合のみ)
  • :q!: 変更を破棄して強制終了
  • :wq: 保存して終了
  • :x: 保存して終了(:wq とほぼ同じ)

ノーマルモードでの操作

  • x: カーソル位置の1文字を削除
  • dd: 現在の行を削除
  • dw: カーソル位置から単語の終わりまでを削除
  • 2dd: 現在の行から2行を削除
  • u: 直前の操作を取り消し (Undo)
  • Ctrl + r: 取り消した操作をやり直し (Redo)
  • yy: 現在の行をコピー (Yank)
  • p: カーソル位置のにペースト
  • P: カーソル位置のにペースト
  • 2yy: 現在の行から2行をコピー
  • .: 直前の操作を繰り返す (Repeat)

検索と置換

  • /検索内容: 下方向へ検索
  • ?検索内容: 上方向へ検索
  • n: 次の検索結果へ移動
  • N: 前の検索結果へ移動
  • :%s/置換前/置換後/g: ファイル全体で一括置換
  • :%s/置換前/置換後/gc: ファイル全体で一括置換(確認あり)

その他の便利な操作

  • o: 現在の行の下に新しい行を挿入し、挿入モードへ移行
  • O: 現在の行の上に新しい行を挿入し、挿入モードへ移行
  • J: 現在の行と次の行を連結

Vimのプラグイン

Vimの機能を拡張するためには、プラグインマネージャーとプラグインの導入が不可欠です。

Vim Plug

おすすめプラグイン

.vimrc 設定例

~/.vimrc ファイルに以下の設定を記述することで、Vimの動作やプラグインをカスタマイズできます。

" シェルをzshに設定 (お使いのシェルに合わせて変更)
set shell=/bin/zsh

" インデント設定
set shiftwidth=4    " 自動インデントの幅
set tabstop=4       " タブ文字の表示幅
set expandtab       " タブをスペースに変換
set autoindent      " 自動インデントを有効にする

" 検索設定
set hlsearch        " 検索結果をハイライト表示

" クリップボード設定 (システムクリップボードと連携)
set clipboard=unnamed

" シンタックスハイライトを有効にする
syntax on

" Vim Plugの初期化
call plug#begin()
Plug 'ntk148v/vim-horizon'
Plug 'preservim/nerdtree'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'neoclide/coc.nvim', {'branch': 'release'}
call plug#end()

" カラースキームの設定
set termguicolors   " ターミナルのTrue Colorを有効にする (カラースキームが正しく表示されるように)
colorscheme horizon " horizonカラースキームを適用

" lightline.vim の設定例 (ステータスラインをカスタマイズするプラグイン)
" lightline.vim を使用する場合は、Plug 'itchyny/lightline.vim' も追加
" let g:lightline = {}
" let g:lightline.colorscheme = 'horizon'

よくある質問(FAQ)

Q. Vimを終了できないときはどうすればいい?

ファイルを変更した状態で:qを実行すると、変更が保存されていないためエラーになり終了できない。この場合は:wq(保存して終了)または:xで変更を保存してから終了するか、変更を破棄してよいのであれば:q!で強制終了する。ノーマルモードに戻れていない(挿入モードのままになっている)場合は、先にEscキーを押してからコマンドを入力する。

Q. コピーした行がうまく貼り付けられないときは?

Vimではyyで現在行をコピー(ヤンク)し、pでカーソル位置の下に、Pでカーソル位置の上に貼り付ける。2yyのように数字を前に付ければ複数行をまとめてコピーできる。貼り付け位置が期待と違う場合は、pPのどちらを使ったかを確認するとよい。

Q. 操作の途中でモードが分からなくなったときは?

Vimは挿入モード・ノーマルモード・ビジュアルモード・コマンドラインモードなど複数のモードを切り替えながら操作する。どのモードにいるか分からなくなった場合は、Escキーを押せば必ずノーマルモードに戻れる。ノーマルモードを起点に、iで挿入モード、vでビジュアルモード、:でコマンドラインモードへと移動する、という流れを覚えておくと迷いにくい。

参考