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
- Vimの軽量プラグインマネージャーです。
- https://github.com/junegunn/vim-plug
おすすめプラグイン
- vim-horizon: Vimのカラースキームを変更するプラグイン。
- NERDTree: ディレクトリツリーをサイドバーに表示するプラグイン。
- fzf: 高速なファイル検索、バッファ検索、履歴検索などができるファジーファインダー。
- vim-fugitive: VimからGitコマンドを操作できるプラグイン。
- vim-gitgutter: Gitの変更差分(追加、変更、削除)を行番号の横に表示するプラグイン。
- vim-commentary:
gcc
コマンドで簡単にコメントアウト/アンコメントできるプラグイン。 - coc.nvim: コード補完、LSP(Language Server Protocol)サポート、スニペットなど、IDEのような機能を提供するプラグイン。
.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'