---
title: Neovim の編集操作、レジスタ、プロジェクト探索
url: https://doc.liz6.com/ja/tools/nvim/03-editing-navigation
locale: ja
area: tools
tags:
- Neovim
- 開発ツール
date: 2026-09-15
modified: 2026-09-15
description: 操作とテキスト範囲を組み合わせ、buffer、window、tabpage、quickfix を小さな課題で理解する。
---

# Neovim の編集操作、レジスタ、プロジェクト探索

編集は「どの範囲へ何をするか」を組み合わせると予測しやすい。大量のキーを先に覚えるより、基本操作をファイル探索へつなげる。

基礎は `nvim --clean` で練習できる。LazyVim やプラグインの上書きは `:verbose nmap` で調べる。

## 操作と範囲の組み合わせ

普通モードは命令、挿入モードは入力、可視モードは選択、`:` はコマンドラインを担当する。

| 入力 | 意味 |
| --- | --- |
| `i` / `a` | カーソルの前／後へ挿入 |
| `ciw` | 単語内部を変更 |
| `ci"` | 二重引用符の内部を変更 |
| `dap` | 段落と周辺範囲を削除 |
| `.` | 直前の反復可能な編集を繰り返す |
| `u` / `Ctrl+r` | 取り消し／やり直し |

`ciw` は c と iw の組み合わせである。編集後は Escape で戻り、結果を見る。局所的な文字編集はプロジェクト全体の参照を理解しないため、意味的な名前変更は [LSP](04-language-tools.md)を使う。

## 削除後に貼り付け内容が変わる理由

既定ではコピー、削除、変更がレジスタへ影響する。内容を明示的に残すには名前付きレジスタを使う。

| 入力 | 作用 |
| --- | --- |
| `"ayy` | 行を a へコピー |
| `"ap` | a から貼り付け |
| `"_dd` | 行を削除し内容を捨てる |
| `:registers` | 中身を確認 |

`"_` はブラックホールレジスタ。cutlass は一部の動作を変更するため導入前後を比較する。`+` のシステム連携には provider が必要となる。[遠隔入力](06-remote-input.md)

## buffer、window、tabpage

buffer は文書、window はその表示領域、tabpage は窓の組である。同じ buffer を複数の窓で見られ、表示していない buffer も存在できる。

```vim
:edit notes.md
:vsplit notes.md
:ls
```

二つの窓は同じ文書を表示し、`:ls` が buffer 一覧を出す。片方での変更は同じ buffer に反映される。

`Ctrl+w` の後に h/j/k/l で移動、`:close` で窓を閉じ、`:bnext` で buffer を切り替える。窓を閉じてもファイルは削除されない。タブはプロジェクト、作業場所、LSP を自動隔離するものでもない。

## 検索から quickfix へ

文書内は `/pattern` と n/N。通常文字に近い検索には `\V` を使えるが、バックスラッシュには意味が残る。

Markdown が存在するプロジェクトルートで実行する。

```vim
:vimgrep /TODO/j **/*.md
:copen
```

quickfix はファイル、位置、メッセージを保存する。Enter で開き、`:cnext` / `:cprevious` で移動する。大きなリポジトリは生成物を無制限に走査せず、範囲を絞った rg や LazyVim の検索を使う。

picker はバージョンで変わるため which-key を確認する。現在ファイルのディレクトリとプロジェクトルートを区別する。

## 小さな編集課題

独立した `notes.md` を作る。

```text
title = "draft"
TODO review the example
keep this line
remove this line
```

1. `ci"` で draft を ready に変える。
2. keep の行を a にコピーする。
3. remove の行をブラックホールへ削除し、a から貼る。
4. 貼り付けを取り消してやり直し、範囲を見る。
5. 同じ buffer を二つの窓で表示して TODO を探す。

題名、レジスタ保持、両窓の内容を確認する。詳細は導入版と一致する `:help text-objects`、registers、windows、quickfix を読む。
