Vim研究所

Vim/Neovimの実践的な使い方や設定、開発効率化について書いています。

Articles

レジスタ基本操作

Vimのレジスタは何種類ある?覚えておくべき使い分けとハマりやすい勘違い

無名・番号付き・名前付き・読み取り専用など全48種類を整理し、実務でよく使うものだけに絞って使い分けとハマりどころを解説する。

Neovim比較

neovimとは何か?Vimとの違いを今から知るならここだけ見ればいい

neovimはVimのフォークの一つ。何が違うのか、なぜ選ばれているのかをLSP・Lua設定・Treesitterを軸に整理する。

NeovimWindows

Windows に Neovim を最短でインストールする方法

wingetでの導入から、モダンなプラグインマネージャで最小構成のinit.luaを組むところまでの手順。

WindowsTips

Windows で GVim/Neovim を右クリックメニューから開けるようにする

レジストリを編集して、任意のファイルを右クリックメニューからGVim/Neovimで開けるようにする手順。

学習

Vimを好きになるために、まず1週間だけ使い続けてみる

Vimが苦手なうちに挫折しやすい理由と、好きになるまでの間だけ意識しておくとよいこと。

設定Tips

Vimの設定を一時的に全部初期値へ戻すコマンド :set all&

プラグインなしでVim/Neovimのオプションを一時的にすべてデフォルトへ戻す方法と注意点。

Tipsデバッグ

Vimの:messagesなどコマンド結果をバッファに出力してコピーする方法

通常は選択・コピーできないVimの内部出力を、execute()でバッファに書き出してテキスト化する。

キーマッピング設定

Vimの<Leader>キーとは?mapleaderの設定とキーマッピングの使い分け

mapleaderの設定方法と、独自キーマッピングを既存機能と衝突させずに増やすコツ。

基本操作用語

Vimの「バッファ」「ウィンドウ」「タブ」の違いを整理する

なんとなく使い分けているVimのバッファ・ウィンドウ・タブの関係を、実際の見え方から整理する。

タブ基本操作

Vimのタブ操作まとめ。開く・閉じる・切り替える、ブラウザ風キーバインドも

Vimのタブを開く・閉じる・切り替える基本コマンドと、ブラウザ感覚で使うためのキーマッピング例。

一括処理Tips

Vimで複数ファイルを一括処理する方法。windo/bufdo/tabdoの使い分け

開いている複数のウィンドウ・バッファ・タブに同じコマンドをまとめて実行する活用パターン。

検索Tips

Vimの検索オフセットで、検索後のカーソル位置を指定する

検索コマンドに/{offset}を付けて、マッチ位置から直接カーソルを移動させる方法。

設定Tips

Vimのステータスラインを表示/非表示にするlaststatusの設定

laststatusオプションの3段階と、Vim/Neovimでデフォルト値が違う点を解説。

マクロTips

Vimのマクロで複雑な繰り返し作業を自動化する

マクロの記録・実行・編集の基本と、行末へのセミコロン挿入などよく使う具体例。

netrwファイラー

netrwでファイルを開く5つの方法。分割・タブ・プレビューの使い分け

Vim標準のファイラnetrwで、Enter・o・v・t・pそれぞれのファイルの開き方と使い分け。

テキストオブジェクト基本操作

Vimのcwとciwの違い。単語の途中にカーソルがあるときに差が出る

単語頭にカーソルがあれば同じ動作だが、途中にあると挙動が変わる理由を解説。

基本操作Tips

Vimのcwとdwの違い。末尾の空白の扱いが違う理由

cwは単語末尾の空白を残し、dwは空白ごと削除する。この非対称な仕様の理由を解説。

置換基本操作

Vimで行内の文字を置換する4つの方法、どれを使えばいいか

置換モードR・:s・ビジュアルモード・オペレータ+テキストオブジェクトを比較する。

大文字小文字Tips

Vimで大文字・小文字を変換する方法まとめ(範囲指定/1文字/置換)

ビジュアルモード・gU/gu・~・置換コマンドまで、大文字小文字変換の全パターン。

大文字小文字ハマりどころ

Vimのu/Uキーがアンドゥと大文字小文字変換の二重の意味を持つ理由

ノーマルモードとビジュアルモードでu/Uの意味が変わる仕組みと、混同を避けるコツ。

netrwファイラー

netrwを起動する方法まとめ。Explore系コマンドとgfキーバインド

:Explore系、:edit系、gfキーバインドなど、netrwを起動する複数の方法を整理。

netrwTips

netrwのファイル一覧表示を切り替える。thin/long/wide/tree

netrwのファイル一覧表示形式(thin/long/wide/tree)をiキーで切り替える方法。

netrwTips

netrwでよく使うディレクトリをブックマークする(mb/gb/qb)

netrwのディレクトリブックマーク機能でよく使う場所へ素早く移動する方法。

netrwファイラー

netrwでファイルをコピー・移動する。マーク機能の使い方

netrwでファイルにマークを付けて一括コピー・移動・削除する操作手順。

netrwTips

netrwでファイルを圧縮・解凍する(mz)と圧縮形式の変更

netrwのmzコマンドでファイルを圧縮・解凍する方法と、圧縮形式カスタマイズの注意点。

netrw設定

netrw上部のバナーを非表示にする(Iキー / g:netrw_banner)

netrwの操作説明バナーを一時的に、または恒常的に非表示にする方法。

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の使い方。

折りたたみTips

Vimで折りたたみの間をジャンプ移動する(zj/zk)

折りたたみ箇所が多いファイルで、次/前の折りたたみへ一気に移動する方法。

Undo基本操作

Vimのundo/redoの基本と、ファイルを閉じても履歴を保つ設定

u/Ctrl-rによる基本操作に加えて、ファイルを閉じても取り消し履歴を残す設定。

文字コード設定

Vimで文字コードを変更して保存する(fileencoding/fenc)

保存時の文字コードを変更するfileencoding(fenc)オプションの使い方。

文字コードTips

Vimで開いているファイルの文字コードを確認する方法

:set enc?で今の文字コードを確認する方法と、ステータスラインへの表示設定。

文字コードTips

Vimで文字化けしたファイルを別の文字コードで開き直す(:e ++enc=)

自動判定で文字化けしたファイルを、指定した文字コードで読み込み直す方法。

コマンド実行Tips

Vimからシェルコマンドを実行する方法(:! と :terminal)

Vimを閉じずにOSコマンドを実行する:!と、ターミナルをウィンドウ内で使う:terminal。

コマンド実行Tips

Vimでシェルコマンドの出力をバッファに直接挿入する(:r!)

lsやpwdの実行結果をコピペせず、:r!コマンドで直接バッファに挿入する方法。

トラブルシューティングTips

設定ファイルが読み込まれない時に使う: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と^はインデントの扱いが違う。行末移動の$とあわせて解説。

移動Tips

Vimのマーク機能で好きな位置にジャンプする(m/`/'/:marks)

任意の位置に印を付けてジャンプするマーク機能と、自動設定される特殊マーク。

基本操作効率化

Vimのドットコマンド(.)で直前の編集を繰り返す

Vimmerが最初に覚えるべき.コマンドの仕組みと、マクロとの違い。

移動基本操作

Vimの画面スクロールとジャンプ操作(Ctrl-f/b/u/d, gg/G/%)

1画面/半画面スクロールと、ファイル先頭末尾・対応する括弧へのジャンプ。

練習問題オペレータ

オペレータ+モーション練習ドリル5問

キー操作の結果を予測してから答え合わせする、実践形式のドリル5問。

検索オペレータ

Vimでオペレータ+検索モーションを使う(c/ d/ y/)

検索キーワードをモーションとして使い、複数行にまたがる範囲を一気に操作する方法。

検索基本操作

Vimの文字列検索の基本(/ と ?)と正規表現の入り口

行頭/行末指定・OR検索など、最初に覚えておきたい正規表現パターンを解説。

検索Tips

Vimの検索ハイライトを消す(:nohlsearch)といちいち消さない設定

残り続けるハイライトを消す:nohlsearchと、キーマッピングで手間を省く方法。

正規表現Tips

Vimの正規表現で最短マッチを使う(.\{-})

HTMLタグの属性値だけを置換したいときに欠かせない最短マッチの使い方。

検索基本操作

カーソル下の単語を一発検索する(*/#/g*/g#)

単語を入力し直さずカーソル下の単語をそのまま検索する*/#と、部分一致のg*/g#。

検索オペレータ

直前の検索キーワードをそのまま変更するcgn/cgN

検索した単語を移動し直さず、cgnで直接変更に入る方法。

基本操作Tips

Vimのsとcの違い。sは実質cl

似ているようで違うsとcコマンドの関係をシンプルに整理する。

Tips基本操作

Vimで行を並べ替える(:sort)と重複行を消す方法

昇順・降順ソート、範囲指定、重複排除(:sort u)までプラグイン無しでできる並べ替え。

Tips基本操作

カーソル下のパスをそのまま開く(gf)と分割・タブでの開き方

import文やhref属性のパスをコピペせずに開くgfコマンドの使い方。

Tips基本操作

プラグイン無しでファイル名からファイルを探す(:find)

path+=$PWD/**を設定して:findで名前の一部からファイルを探す方法。

検索Tips

Vimの検索コマンドラインで単語を補完する(Ctrl-r Ctrl-w)

検索キーワードを途中まで入力してカーソル下の単語で補完する方法。

Tips基本操作

変数の宣言位置へジャンプする(gd/gD)

LSP無しでも使える標準機能、ローカル宣言/グローバル宣言へのジャンプ。

置換Tips

:substituteコマンド活用集。全置換・行頭行末への挿入・確認付き置換

:%s///gの基本から、行頭行末への文字列挿入、確認しながらの置換までまとめる。

レジスタTips

Vimのexpressionレジスタ「=」で計算結果を挿入する

プラグイン無しで式を評価してそのまま挿入できるexpressionレジスタの使い方。

レジスタTips

Vimの名前付きレジスタで複数箇所を集める("a〜"z / "A〜"Z)

小文字は上書き、大文字は追記。複数箇所を1つのレジスタに集める方法。

レジスタハマりどころ

Vimの番号付きレジスタ「"0〜"9」の仕組みを正確に理解する

検索モーションが絡む例外パターンなど、番号付きレジスタのルールを正確に解説。

レジスタTips

Vimの読み取り専用レジスタ("% "# ": ".)の実践的な使い道

ファイル名や直前のコマンドを自動保持する読み取り専用レジスタの実用例。

レジスタ基本操作

Vimでレジスタを貼り付ける全パターン(ノーマル/挿入/コマンドライン)

p/Pだけじゃない、モードごとのレジスタ貼り付けキーバインドを一覧で整理。

レジスタ基本操作

Vimのコピー(ヤンク)操作いろいろ。文字/行/矩形範囲

yl/yy/nyy/矩形選択など、ヤンク操作のバリエーションを整理する。

練習問題レジスタ

レジスタ練習クイズ6問(選択式)

インサートモードでの貼り付け方法など、レジスタの使い方を選択式クイズで確認。

設定Tips

Vimでファイルタイプを手動指定してハイライトを適用する

無題バッファや自動判定が誤った場合にfiletypeを手動指定する方法。

gVim設定

gVimのメニュー・ツールバー・スクロールバーを消す(guioptions)

gVimのGUIパーツをguioptionsでまとめて、または個別に表示/非表示にする方法。

gVim設定

gVimのフォントを変更する(guifont)

gVimの表示フォントを変更する方法と、ターミナル版に効かない理由。

設定Tips

Vimの配色テーマを変更する(:colorscheme)

標準搭載のカラースキームに切り替える方法と、外部テーマ導入時の注意点。

設定Tips

Vimでタブ・改行・行末スペースを可視化する(listchars)

見えない文字を記号表示し、タブとスペースの混在を発見しやすくする方法。

Tips基本操作

Vimでファイルを読み取り専用モードで開く(-R / view)

誤って変更したくないファイルを読み取り専用モードで開く方法。

キーマッピング設定

Vimで独自キーマッピングに使える未割り当てキー一覧

既存機能を潰さずに独自マッピングを追加できる、未割り当て/代替可能キーの一覧。

キーマッピングTips

ESCキーの代わりになるキー(Ctrl-[ と Ctrl-c の違い)

ホームポジションを崩さずノーマルモードに戻るCtrl-[と、Ctrl-cの挙動の違い。

キーマッピングTips

設定したキーマッピングの一覧を確認する(:map / :verbose map)

モード別のキーマッピング一覧表示と、定義元ファイルまで分かるverbose map。

改行コードTips

Vimで改行コードを変更して開き直す(fileformat)

CRLF/LF/CRの改行コードを指定して読み込み直す方法。

設定Tips

Vimの設定値を確認する(:set と :set all の違い)

変更した値だけを表示する:setと、すべてのオプションを表示する:set allの違い。

設定基本操作

Vimの相対行番号(relativenumber)で縦移動を強化する

カーソル行からの相対的な行番号を表示し、カウント付き移動を使いやすくする。

設定トラブルシューティング

Vimのランタイムパスを確認する(runtimepath)

プラグインが読み込まれないときにまず確認すべき検索先ディレクトリ一覧。

Neovim設定

Neovimの設定を1から書かず始める方法(kickstart.nvim/LazyVim)

フォークして育てるkickstart.nvimと、すぐ使える完成形のLazyVimを紹介。

設定Tips

Vimのタブバーを表示/非表示にする(showtabline)

タブが1つのときは隠し、複数あるときだけ表示するshowtablineの設定。

Neovimトラブルシューティング

Neovimの構成診断コマンド:checkhealthの使い方

インストール状態やプラグインの動作をまとめて診断できる:checkhealthの使い方。

Neovim設定

init.vimとginit.vimの違い(Neovimの設定ファイル)

設定全般を扱うinit.vimと、GUI固有の設定を担うginit.vimの役割の違い。

Neovim環境構築

Windows 10/11にNeovimを最短でインストールする方法

wingetコマンド1行でWindowsにNeovimを導入する方法とGUIクライアントの選択肢。

NeovimTips

NeovimをUSBメモリに入れてポータブル運用する方法

本体・設定・プラグインをUSBメモリにまとめ、インストール不要な環境で使う構成。

Neovim設定

Windows版Neovimの設定ファイルの配置場所

init.vim/init.luaを置く標準パスと、XDG_CONFIG_HOMEで変更する方法。

NeovimTips

nvim-qtの起動オプションまとめ

最大化・フルスクリーン・ウインドウサイズ・設定ファイル指定の起動パラメータ集。

Neovim設定

Vim/NeovimでPythonの実行パスを設定・確認する方法

g:python3_host_progでのパス指定と、has('python3')/checkhealthでの確認方法。

Neovim環境構築

WindowsでNeovimをPython開発環境として構築する手順

lazy.nvim・mason.nvim・LSP・blink.cmpでPython向けIDEに仕立てる構成をゼロから解説。

Neovim環境構築

DockerでVim/Neovimの検証用サンドボックス環境を作る

設定やプラグインを壊れる心配なく試せる、使い捨ての検証環境をDockerで用意する方法。