Vim研究所
Vim/Neovimの実践的な使い方や設定、開発効率化について書いています。
Articles
Vimチートシート。よく使うコマンド・キー操作一覧
移動・編集・検索置換・ウインドウ操作・レジスタ・マクロを目的別に整理した一覧。各項目から詳細記事にもリンク。
Vimのレジスタは何種類ある?覚えておくべき使い分けとハマりやすい勘違い
無名・番号付き・名前付き・読み取り専用など全48種類を整理し、実務でよく使うものだけに絞って使い分けとハマりどころを解説する。
neovimとは何か?Vimとの違いを今から知るならここだけ見ればいい
neovimはVimのフォークの一つ。何が違うのか、なぜ選ばれているのかをLSP・Lua設定・Treesitterを軸に整理する。
Windows に Neovim を最短でインストールする方法
wingetでの導入から、モダンなプラグインマネージャで最小構成のinit.luaを組むところまでの手順。
Windows で GVim/Neovim を右クリックメニューから開けるようにする
レジストリを編集して、任意のファイルを右クリックメニューからGVim/Neovimで開けるようにする手順。
Vimを好きになるために、まず1週間だけ使い続けてみる
Vimが苦手なうちに挫折しやすい理由と、好きになるまでの間だけ意識しておくとよいこと。
Vimの設定を一時的に全部初期値へ戻すコマンド :set all&
プラグインなしでVim/Neovimのオプションを一時的にすべてデフォルトへ戻す方法と注意点。
Vimの:messagesなどコマンド結果をバッファに出力してコピーする方法
通常は選択・コピーできないVimの内部出力を、execute()でバッファに書き出してテキスト化する。
Vimの<Leader>キーとは?mapleaderの設定とキーマッピングの使い分け
mapleaderの設定方法と、独自キーマッピングを既存機能と衝突させずに増やすコツ。
Vimの「バッファ」「ウィンドウ」「タブ」の違いを整理する
なんとなく使い分けているVimのバッファ・ウィンドウ・タブの関係を、実際の見え方から整理する。
Vimのタブ操作まとめ。開く・閉じる・切り替える、ブラウザ風キーバインドも
Vimのタブを開く・閉じる・切り替える基本コマンドと、ブラウザ感覚で使うためのキーマッピング例。
Vimで複数ファイルを一括処理する方法。windo/bufdo/tabdoの使い分け
開いている複数のウィンドウ・バッファ・タブに同じコマンドをまとめて実行する活用パターン。
Vimの検索オフセットで、検索後のカーソル位置を指定する
検索コマンドに/{offset}を付けて、マッチ位置から直接カーソルを移動させる方法。
Vimのステータスラインを表示/非表示にするlaststatusの設定
laststatusオプションの3段階と、Vim/Neovimでデフォルト値が違う点を解説。
Vimのマクロで複雑な繰り返し作業を自動化する
マクロの記録・実行・編集の基本と、行末へのセミコロン挿入などよく使う具体例。
netrwでファイルを開く5つの方法。分割・タブ・プレビューの使い分け
Vim標準のファイラnetrwで、Enter・o・v・t・pそれぞれのファイルの開き方と使い分け。
Vimのcwとciwの違い。単語の途中にカーソルがあるときに差が出る
単語頭にカーソルがあれば同じ動作だが、途中にあると挙動が変わる理由を解説。
Vimのcwとdwの違い。末尾の空白の扱いが違う理由
cwは単語末尾の空白を残し、dwは空白ごと削除する。この非対称な仕様の理由を解説。
Vimで行内の文字を置換する4つの方法、どれを使えばいいか
置換モードR・:s・ビジュアルモード・オペレータ+テキストオブジェクトを比較する。
Vimで大文字・小文字を変換する方法まとめ(範囲指定/1文字/置換)
ビジュアルモード・gU/gu・~・置換コマンドまで、大文字小文字変換の全パターン。
Vimのu/Uキーがアンドゥと大文字小文字変換の二重の意味を持つ理由
ノーマルモードとビジュアルモードでu/Uの意味が変わる仕組みと、混同を避けるコツ。
netrwを起動する方法まとめ。Explore系コマンドとgfキーバインド
:Explore系、:edit系、gfキーバインドなど、netrwを起動する複数の方法を整理。
netrwのファイル一覧表示を切り替える。thin/long/wide/tree
netrwのファイル一覧表示形式(thin/long/wide/tree)をiキーで切り替える方法。
netrwでよく使うディレクトリをブックマークする(mb/gb/qb)
netrwのディレクトリブックマーク機能でよく使う場所へ素早く移動する方法。
netrwでファイルをコピー・移動する。マーク機能の使い方
netrwでファイルにマークを付けて一括コピー・移動・削除する操作手順。
netrwでファイルを圧縮・解凍する(mz)と圧縮形式の変更
netrwのmzコマンドでファイルを圧縮・解凍する方法と、圧縮形式カスタマイズの注意点。
netrw上部のバナーを非表示にする(Iキー / g:netrw_banner)
netrwの操作説明バナーを一時的に、または恒常的に非表示にする方法。
netrwでリモートサーバのファイルを直接編集する(SCP/SFTP)
プラグインなしでnetrwのscp://・sftp://プロトコルを使いリモートファイルを直接編集する方法。
Neovimのファイラー比較。netrw/nvim-tree/neo-tree/oil.nvim
標準のnetrwと主要なファイラー系プラグインの特徴を比較し、選び方を整理する。
Vimの折りたたみを開閉するコマンド一覧(za/zo/zc/zM/zRほか)
多数ある折りたたみ開閉コマンドのうち、実際に覚えておくべきものを絞って解説。
Vimで折りたたみを作る・消す(zf/zd/zD/zE)
任意の範囲を一時的に隠すzfコマンドと、折りたたみを解除するzd/zD/zEの使い方。
Vimで折りたたみの間をジャンプ移動する(zj/zk)
折りたたみ箇所が多いファイルで、次/前の折りたたみへ一気に移動する方法。
Vimのundo/redoの基本と、ファイルを閉じても履歴を保つ設定
u/Ctrl-rによる基本操作に加えて、ファイルを閉じても取り消し履歴を残す設定。
Vimで文字コードを変更して保存する(fileencoding/fenc)
保存時の文字コードを変更するfileencoding(fenc)オプションの使い方。
Vimで開いているファイルの文字コードを確認する方法
:set enc?で今の文字コードを確認する方法と、ステータスラインへの表示設定。
Vimで文字化けしたファイルを別の文字コードで開き直す(:e ++enc=)
自動判定で文字化けしたファイルを、指定した文字コードで読み込み直す方法。
Vimからシェルコマンドを実行する方法(:! と :terminal)
Vimを閉じずにOSコマンドを実行する:!と、ターミナルをウィンドウ内で使う:terminal。
Vimでシェルコマンドの出力をバッファに直接挿入する(:r!)
lsやpwdの実行結果をコピペせず、:r!コマンドで直接バッファに挿入する方法。
設定ファイルが読み込まれない時に使う:scriptnames
vimrcやプラグインが読み込まれているかを確認する:scriptnamesコマンドの使い方。
Vimの単語移動8種類。w/b/e/geとW/B/E/gEの違い
単語単位で移動するw/b/e/geと、記号を無視するW/B/E/gEの違いと使い分け。
Vimで1文字検索して移動する(f/F/t/T)と繰り返し(;/,)
カーソルを指定した文字へ一発で移動させるf/Fと、その手前で止まるt/Tの違い。
Vimのhjklと矢印キー、結局どっちを使うべきか
hjklが推奨される理由と、例外的に矢印キーが有利な場面を解説。
Vimで行頭・行末へ移動する(0/^/$)とインデントの扱い
行頭移動の0と^はインデントの扱いが違う。行末移動の$とあわせて解説。
Vimのマーク機能で好きな位置にジャンプする(m/`/'/:marks)
任意の位置に印を付けてジャンプするマーク機能と、自動設定される特殊マーク。
Vimのドットコマンド(.)で直前の編集を繰り返す
Vimmerが最初に覚えるべき.コマンドの仕組みと、マクロとの違い。
Vimの画面スクロールとジャンプ操作(Ctrl-f/b/u/d, gg/G/%)
1画面/半画面スクロールと、ファイル先頭末尾・対応する括弧へのジャンプ。
オペレータ+モーション練習ドリル5問
キー操作の結果を予測してから答え合わせする、実践形式のドリル5問。
Vimでオペレータ+検索モーションを使う(c/ d/ y/)
検索キーワードをモーションとして使い、複数行にまたがる範囲を一気に操作する方法。
Vimの文字列検索の基本(/ と ?)と正規表現の入り口
行頭/行末指定・OR検索など、最初に覚えておきたい正規表現パターンを解説。
Vimの検索ハイライトを消す(:nohlsearch)といちいち消さない設定
残り続けるハイライトを消す:nohlsearchと、キーマッピングで手間を省く方法。
Vimの正規表現で最短マッチを使う(.\{-})
HTMLタグの属性値だけを置換したいときに欠かせない最短マッチの使い方。
カーソル下の単語を一発検索する(*/#/g*/g#)
単語を入力し直さずカーソル下の単語をそのまま検索する*/#と、部分一致のg*/g#。
直前の検索キーワードをそのまま変更するcgn/cgN
検索した単語を移動し直さず、cgnで直接変更に入る方法。
Vimのsとcの違い。sは実質cl
似ているようで違うsとcコマンドの関係をシンプルに整理する。
Vimで行を並べ替える(:sort)と重複行を消す方法
昇順・降順ソート、範囲指定、重複排除(:sort u)までプラグイン無しでできる並べ替え。
カーソル下のパスをそのまま開く(gf)と分割・タブでの開き方
import文やhref属性のパスをコピペせずに開くgfコマンドの使い方。
プラグイン無しでファイル名からファイルを探す(:find)
path+=$PWD/**を設定して:findで名前の一部からファイルを探す方法。
Vimの検索コマンドラインで単語を補完する(Ctrl-r Ctrl-w)
検索キーワードを途中まで入力してカーソル下の単語で補完する方法。
変数の宣言位置へジャンプする(gd/gD)
LSP無しでも使える標準機能、ローカル宣言/グローバル宣言へのジャンプ。
:substituteコマンド活用集。全置換・行頭行末への挿入・確認付き置換
:%s///gの基本から、行頭行末への文字列挿入、確認しながらの置換までまとめる。
Vimのexpressionレジスタ「=」で計算結果を挿入する
プラグイン無しで式を評価してそのまま挿入できるexpressionレジスタの使い方。
Vimの名前付きレジスタで複数箇所を集める("a〜"z / "A〜"Z)
小文字は上書き、大文字は追記。複数箇所を1つのレジスタに集める方法。
Vimの番号付きレジスタ「"0〜"9」の仕組みを正確に理解する
検索モーションが絡む例外パターンなど、番号付きレジスタのルールを正確に解説。
Vimの読み取り専用レジスタ("% "# ": ".)の実践的な使い道
ファイル名や直前のコマンドを自動保持する読み取り専用レジスタの実用例。
Vimでレジスタを貼り付ける全パターン(ノーマル/挿入/コマンドライン)
p/Pだけじゃない、モードごとのレジスタ貼り付けキーバインドを一覧で整理。
Vimのコピー(ヤンク)操作いろいろ。文字/行/矩形範囲
yl/yy/nyy/矩形選択など、ヤンク操作のバリエーションを整理する。
レジスタ練習クイズ6問(選択式)
インサートモードでの貼り付け方法など、レジスタの使い方を選択式クイズで確認。
Vimでファイルタイプを手動指定してハイライトを適用する
無題バッファや自動判定が誤った場合にfiletypeを手動指定する方法。
gVimのメニュー・ツールバー・スクロールバーを消す(guioptions)
gVimのGUIパーツをguioptionsでまとめて、または個別に表示/非表示にする方法。
gVimのフォントを変更する(guifont)
gVimの表示フォントを変更する方法と、ターミナル版に効かない理由。
Vimの配色テーマを変更する(:colorscheme)
標準搭載のカラースキームに切り替える方法と、外部テーマ導入時の注意点。
Vimでタブ・改行・行末スペースを可視化する(listchars)
見えない文字を記号表示し、タブとスペースの混在を発見しやすくする方法。
Vimでファイルを読み取り専用モードで開く(-R / view)
誤って変更したくないファイルを読み取り専用モードで開く方法。
Vimで独自キーマッピングに使える未割り当てキー一覧
既存機能を潰さずに独自マッピングを追加できる、未割り当て/代替可能キーの一覧。
ESCキーの代わりになるキー(Ctrl-[ と Ctrl-c の違い)
ホームポジションを崩さずノーマルモードに戻るCtrl-[と、Ctrl-cの挙動の違い。
設定したキーマッピングの一覧を確認する(:map / :verbose map)
モード別のキーマッピング一覧表示と、定義元ファイルまで分かるverbose map。
Vimで改行コードを変更して開き直す(fileformat)
CRLF/LF/CRの改行コードを指定して読み込み直す方法。
Vimの設定値を確認する(:set と :set all の違い)
変更した値だけを表示する:setと、すべてのオプションを表示する:set allの違い。
Vimの相対行番号(relativenumber)で縦移動を強化する
カーソル行からの相対的な行番号を表示し、カウント付き移動を使いやすくする。
Vimのランタイムパスを確認する(runtimepath)
プラグインが読み込まれないときにまず確認すべき検索先ディレクトリ一覧。
Neovimの設定を1から書かず始める方法(kickstart.nvim/LazyVim)
フォークして育てるkickstart.nvimと、すぐ使える完成形のLazyVimを紹介。
Vimのタブバーを表示/非表示にする(showtabline)
タブが1つのときは隠し、複数あるときだけ表示するshowtablineの設定。
Neovimの構成診断コマンド:checkhealthの使い方
インストール状態やプラグインの動作をまとめて診断できる:checkhealthの使い方。
init.vimとginit.vimの違い(Neovimの設定ファイル)
設定全般を扱うinit.vimと、GUI固有の設定を担うginit.vimの役割の違い。
Windows 10/11にNeovimを最短でインストールする方法
wingetコマンド1行でWindowsにNeovimを導入する方法とGUIクライアントの選択肢。
NeovimをUSBメモリに入れてポータブル運用する方法
本体・設定・プラグインをUSBメモリにまとめ、インストール不要な環境で使う構成。
Windows版Neovimの設定ファイルの配置場所
init.vim/init.luaを置く標準パスと、XDG_CONFIG_HOMEで変更する方法。
nvim-qtの起動オプションまとめ
最大化・フルスクリーン・ウインドウサイズ・設定ファイル指定の起動パラメータ集。
Vim/NeovimでPythonの実行パスを設定・確認する方法
g:python3_host_progでのパス指定と、has('python3')/checkhealthでの確認方法。
WindowsでNeovimをPython開発環境として構築する手順
lazy.nvim・mason.nvim・LSP・blink.cmpでPython向けIDEに仕立てる構成をゼロから解説。
DockerでVim/Neovimの検証用サンドボックス環境を作る
設定やプラグインを壊れる心配なく試せる、使い捨ての検証環境をDockerで用意する方法。
Vimで開いているファイルを再読み込みする(:e!)
外部で更新されたファイルを再読込する:e!と、全バッファ/全タブをまとめて再読込する方法。
Vimでカーソル位置・単語数・文字数を確認する(Ctrl-g / g Ctrl-g)
位置確認のCtrl-gと詳細表示のg Ctrl-g、置換コマンドでの柔軟なカウント方法。
Vimでファイルパスを補完・挿入する方法(Ctrl-x Ctrl-f)
パス補完のCtrl-x Ctrl-fと、OSコマンドの出力を挿入する:r!の使い分け。
Vimで別ファイルの内容をカーソル位置に読み込む(:read)
テンプレートファイルなどを:readで差し込む方法と、挿入位置の指定方法。
Vimで最近使ったファイルを開く(:oldfiles)
ファイル履歴から開く:bro olコマンドと、:filterによる絞り込み方法。
Vimで開いている全バッファを検索する(bufdo + vimgrep + cwindow)
:bufdo vimgrep + cwindowで、開いている全バッファを一括検索し一覧表示する。
Vimのバッファ一覧(:ls)の読み方と絞り込み方
:lsで表示される記号の意味と、状態やファイル名で絞り込んで表示する方法。
Vimでウインドウを閉じる4つの方法の違い
:q/:q!/:close/:hideの違いと、最後のウインドウでVimが終了する条件。
Vimでウインドウを分割する方法(:split / :vsplit / :new / :vnew)
水平分割・垂直分割それぞれの、既存ファイル分割と新規バッファ用コマンドまとめ。
Vimでウインドウ間をカーソル移動する方法(Ctrl-w)
Ctrl-w hjklでの方向移動、Ctrl-w wでの順次移動、特殊移動をまとめて解説。
Vimでウインドウの位置を入れ替える方法(Ctrl-w r/x/K/J/H/L)
ウインドウの回転・入れ替えと、端に移動して最大化するレイアウト変更キー。
Vimで複数ファイルを横断検索する(vimgrep + cwindow)
ワイルドカードでファイル指定して検索し、cwindowで結果を一覧表示する方法。
Vimのvimgrepとgrepの違い(内部grepと外部grep)
速度・対象・エンコーディング認識などの違いを比較し、grepprgの変更方法も紹介。
Vimで今のウインドウ以外を閉じる方法(Ctrl-w o / :only)
カレントウインドウだけを残して他を全部閉じる方法と、未保存変更時の挙動。
Vimでウインドウのサイズを変更する方法(Ctrl-w +/-/</>、:resize)
幅・高さの変更キーとresizeコマンド、全ウインドウを揃えるCtrl-w =の使い方。
Vimのコマンドラインウインドウの使い方(q: / q/)
コマンド・検索履歴をバッファとして編集・再実行できる機能の使い方。
Vimでユーザー定義コマンドを作る方法(:command)
自作のExコマンドを定義する方法、引数の扱い方、実用的な設定例まとめ。
Vimでファイル間の差分を表示する(vimdiff / :diffsplit)
vimdiffや:diffsplitで差分を色分け表示し、差分箇所を移動する方法。
Vimでファイル間の差分をマージする(:diffget / :diffput)
相手の変更を取り込むdoと、自分の変更を渡すdpの使い方、パッチのマージ方法。
Vimで括弧・引用符の中身を書き換える(ci" / ci( / ci{ / ci[)
カーソル位置を気にせず囲みブロックの中身だけを書き換えるテキストオブジェクト。
VimでHTMLタグの中身・属性値を書き換える(cit / dat)
タグの中身を書き換えるcitと、タグごと削除するdatの使い方。
Vimで特殊記号を入力する方法(文字コード指定 / ダイグラフ)
Ctrl-vでの文字コード直接指定と、2文字の組み合わせで入力するダイグラフ。
Vimの最低限の使い方。モード・移動・保存だけ知っておく入門ガイド
とりあえずVimを使う必要がある人向けに、詰まないための最低限だけをまとめた。
コマンド・Exコマンド・キーマッピングの違いを整理する
混同しがちなVim用語をヘルプの表記に沿って整理する。
Vim/Neovimの標準チュートリアルを使う(vimtutor / :Tutor)
環境ごとのチュートリアル起動方法と、演習を定着させる繰り返しのコツ。
Vimをオンラインで学べるサイト・学習ゲームまとめ
OpenVim、VimGolf、VIM Adventuresなどブラウザだけで練習できるサイトを紹介。
なぜVimmerはVimを使い続けるのか
操作性・ホームポジション・汎用性・カスタマイズ性の観点から理由を整理する。
Vimで現在の日付・時刻を挿入する方法(strftime)
プラグインなしでstrftime()を使い、好きなフォーマットで日時を挿入する方法。
Vimの標準入力補完(Ctrl-n / Ctrl-p / Ctrl-x)の使い方
プラグインなしのキーワード補完と、対象を絞り込むCtrl-xのサブモード。
Vimでファイルを自動保存する方法(autocmd / auto-save.nvim)
プラグインなしのautocmdによる自動保存と、Neovim向けプラグインの使い方。
Vim/Neovimにスタート画面を追加する(vim-startify / snacks.nvim)
起動直後に最近使ったファイルを一覧表示するプラグインをVim/Neovim別に紹介。
VSCodeユーザーがVimに移行する方法(vscode-neovim / Neovide)
VSCodeの機能を保ったままVim操作を導入する方法と、段階的な移行の進め方。
gVimでプラグイン設定が反映されない原因(.vimrcと.gvimrcの違い)
GUI専用設定ファイルに書いてしまいがちな設定と、症状からの切り分け方。
Vimでマルチカーソルを使う方法と、標準機能だけで代用する方法
vim-visual-multiの導入方法と、置換・ビジュアルブロックで代用できる場面。
Vimでインデントを増減する方法(>> / << / shiftwidth)
1行・複数行のインデント操作と、言語別にインデント幅を設定する方法。
ブラウザのクラウドIDEでVimキーバインドを使う方法
GitHub CodespacesなどでVim拡張を有効にする方法。Cloud9の現状にも言及。
複数デバイスで同じVim環境を使う(VPS + SSH構成)
VPS上に1つだけ環境を用意し、どの端末からもSSHで同じ設定を使う構成。
Vim/Neovimの学習段階別おすすめ書籍
基本操作・実務Tips・Vim script・モダン構成、段階に応じた書籍の選び方。
Vimmerがキーボード選びで重視すべきポイント
Ctrlキーの位置、矢印キーの有無、打鍵感がVim操作にどう効いてくるか。
Vimのヘルプを使いこなす方法(:help)
タブ補完・ワイルドカード・モード接頭辞を使った効率的なヘルプ検索のコツ。
正規表現検索の練習ドリル5問
*/cgn/カウント付き検索など、実行結果を予測してから確認する実践ドリル。
正規表現置換の練習ドリル5問
グループ参照・大文字小文字変換・\zsを使った置換パターンの予測ドリル。