Vim研究所
Vim/Neovimの実践的な使い方や設定、開発効率化について書いています。
Articles
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で用意する方法。