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'