netrw — 組み込みファイルブラウザ
Neovimには netrw というファイルブラウザが標準で組み込まれています。プラグインなしでも基本的なファイル操作が可能です。追加インストール不要なので、まず最初に覚えておくべき機能です。
netrw の基本操作
| キー | 動作 |
|---|---|
| Enter | ファイルを開く / ディレクトリに移動 |
| - | 親ディレクトリへ移動 |
| d | 新しいディレクトリを作成 |
| % | 新しいファイルを作成して開く |
| R | ファイル / ディレクトリの名前変更 |
| D | ファイル / ディレクトリを削除 |
| i | 表示スタイルの切り替え(リスト / ツリー / 詳細) |
| s | ソート方法の切り替え |
| gh | 隠しファイルの表示 / 非表示を切り替え |
Neo-tree.nvim — ファイルツリープラグイン
Neo-tree.nvim は、VSCodeのエクスプローラーに相当するファイルツリーをNeovimに追加するプラグインです。ディレクトリ構造が一目でわかり、マウスを使わずキーボードだけで快適にファイル操作ができます。
-- Lazy.nvim での設定例 { "nvim-neo-tree/neo-tree.nvim", branch = "v3.x", dependencies = { "nvim-lua/plenary.nvim", "nvim-tree/nvim-web-devicons", -- ファイルアイコン(任意) "MunifTanjim/nui.nvim", }, keys = { { "<leader>e", "<cmd>Neotree toggle<cr>", desc = "Explorer Toggle" }, { "<leader>o", "<cmd>Neotree focus<cr>", desc = "Explorer Focus" }, }, opts = { window = { position = "left", width = 35, }, filesystem = { filtered_items = { hide_dotfiles = false, -- .gitignore 等を表示 hide_gitignored = false, }, follow_current_file = { enabled = true, -- 編集中のファイルを自動でフォーカス }, }, }, }
Neo-tree の基本操作
| キー | 動作 |
|---|---|
| a | 新しいファイルを作成(末尾に / をつけるとディレクトリ) |
| d | ファイル / ディレクトリを削除 |
| r | 名前の変更 |
| c | コピー |
| m | 移動 |
| Enter / o | ファイルを開く |
| s | 垂直分割で開く |
| S | 水平分割で開く |
| t | 新しいタブで開く |
| H | 隠しファイルの表示 / 非表示 |
| ? | ヘルプ(キー一覧)を表示 |
Telescope.nvim — ファジーファインダー
Telescope.nvim はNeovim最人気のプラグインのひとつで、ファイル・バッファ・コマンド・ヘルプページなどを曖昧検索(ファジーファインド)で瞬時に探し出せます。キーを数回押すだけで目的のファイルに到達できます。
{
"nvim-telescope/telescope.nvim",
tag = "0.1.x",
dependencies = {
"nvim-lua/plenary.nvim",
-- fzf ネイティブ拡張(高速化)
{ "nvim-telescope/telescope-fzf-native.nvim", build = "make" },
},
keys = {
{ "<leader>ff", "<cmd>Telescope find_files<cr>", desc = "Find Files" },
{ "<leader>fg", "<cmd>Telescope live_grep<cr>", desc = "Live Grep" },
{ "<leader>fb", "<cmd>Telescope buffers<cr>", desc = "Buffers" },
{ "<leader>fh", "<cmd>Telescope help_tags<cr>", desc = "Help Tags" },
{ "<leader>fr", "<cmd>Telescope oldfiles<cr>", desc = "Recent Files" },
},
config = function()
require("telescope").setup({
defaults = {
mappings = {
i = {
["<C-k>"] = "move_selection_previous",
["<C-j>"] = "move_selection_next",
},
},
},
})
require("telescope").load_extension("fzf")
end,
}
Telescope の主なコマンド
| コマンド | 説明 |
|---|---|
| :Telescope find_files | ファイル名でファジー検索 |
| :Telescope live_grep | ファイル内容をリアルタイム検索(ripgrep使用) |
| :Telescope buffers | 開いているバッファを一覧から選択 |
| :Telescope oldfiles | 最近開いたファイルの履歴 |
| :Telescope git_files | Gitリポジトリ内のファイルを検索 |
| :Telescope keymaps | 設定済みキーマップを検索 |
| :Telescope commands | 利用可能なコマンドを検索 |
バッファ管理
Neovimでは「ファイルを開く」ことは「バッファに読み込む」ことです。複数のファイルを同時に開いている場合、それぞれがバッファとして管理されます。バッファを理解することは、Neovimを快適に使う上で非常に重要です。
ウィンドウ分割
Neovimは1つの画面を複数のウィンドウに分割できます。左右にコードとドキュメントを並べたり、上下に本文とターミナルを配置したりと、作業スタイルに合わせた配置が可能です。
| コマンド / キー | 動作 |
|---|---|
| :sp | 水平分割(現在のファイルを上下に分ける) |
| :vsp | 垂直分割(現在のファイルを左右に分ける) |
| :sp filename | 水平分割で別ファイルを開く |
| :vsp filename | 垂直分割で別ファイルを開く |
| Ctrl-w h | 左のウィンドウへ移動 |
| Ctrl-w j | 下のウィンドウへ移動 |
| Ctrl-w k | 上のウィンドウへ移動 |
| Ctrl-w l | 右のウィンドウへ移動 |
| Ctrl-w = | 全ウィンドウを同じサイズに均等化 |
| Ctrl-w > | ウィンドウを右に広げる |
| Ctrl-w < | ウィンドウを左に縮める |
| Ctrl-w + | ウィンドウを下に広げる |
| Ctrl-w - | ウィンドウを上に縮める |
| Ctrl-w o | 現在のウィンドウだけ残して他を閉じる |
| Ctrl-w q | 現在のウィンドウを閉じる |
Ctrl-w h/j/k/l は頻繁に使うので、Ctrl-h/j/k/l に短縮マップするのが一般的です。vim.keymap.set('n', '<C-h>', '<C-w>h') のように init.lua に追加しましょう。
タブページ
Neovimのタブページは、ウィンドウのレイアウト全体を保存する仕組みです。プロジェクトAのウィンドウ配置とプロジェクトBのウィンドウ配置を切り替えるといった使い方が典型的です。
| コマンド / キー | 動作 |
|---|---|
| :tabnew | 新しいタブを開く |
| :tabnew filename | 新しいタブでファイルを開く |
| :tabclose | 現在のタブを閉じる |
| :tabnext / :tabprev | 次 / 前のタブへ移動 |
| gt | 次のタブへ移動 |
| gT | 前のタブへ移動 |
| 3gt | タブ番号 3 へ移動 |
| :tabmove 0 | 現在のタブを先頭に移動 |
マークを使ったジャンプ
マーク機能を使うと、ファイル内の特定の位置に「しおり」をつけて、後からワンキーで戻ることができます。大きなファイルを行き来するときや、複数ファイル間を頻繁に移動するときに非常に便利です。
| キー | 動作 |
|---|---|
| ma | カーソル位置にマーク「a」を設定(小文字 = ファイルローカル) |
| mA | カーソル位置にマーク「A」を設定(大文字 = グローバル、ファイルをまたいで移動可能) |
| `a | マーク「a」の正確な位置(行 + 列)へジャンプ |
| 'a | マーク「a」の行の先頭へジャンプ |
| `` | 直前のジャンプ位置へ戻る |
| '' | 直前にいた行の先頭へ戻る |
| :marks | 設定されているマークの一覧を表示 |
| :delmarks a | マーク「a」を削除 |
`.(バッククォート + ドット) で最後に変更した位置へジャンプ、`0 で前回Neovimを終了したときのファイルの位置に戻ることができます。これらは自動設定されるため、意識せずに活用できます。
Harpoon — 高速ファイル移動
Harpoon(ThePrimeagen作)は、よく使うファイルを「ピン留め」して、ワンキーで切り替えるプラグインです。プロジェクト内で頻繁に行き来するファイルが決まっている場合、Telescope よりもさらに素早く移動できます。
{
"ThePrimeagen/harpoon",
branch = "harpoon2",
dependencies = { "nvim-lua/plenary.nvim" },
config = function()
local harpoon = require("harpoon")
harpoon:setup()
local map = vim.keymap.set
-- ファイルをリストに追加
map("n", "<leader>a", function() harpoon:list():add() end)
-- ファイルリストを表示
map("n", "<C-e>", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end)
-- 1〜4番のファイルへ直接ジャンプ
map("n", "<C-1>", function() harpoon:list():select(1) end)
map("n", "<C-2>", function() harpoon:list():select(2) end)
map("n", "<C-3>", function() harpoon:list():select(3) end)
map("n", "<C-4>", function() harpoon:list():select(4) end)
end,
}
Harpoon の使い方はシンプルです。よく使うファイルを開いて <leader>a でリストに追加し、Ctrl-1 〜 Ctrl-4 で瞬時に切り替えます。Telescope でファイルを探す手間すら不要で、登録済みのファイルには1キーで移動できます。
ファイル管理 キーマップ一覧
本章で紹介したキーマップをまとめます。
ファイルツリー / 検索
| キー(推奨設定) | 動作 |
|---|---|
| <leader>e | Neo-tree をトグル |
| <leader>ff | Telescope: ファイル検索 |
| <leader>fg | Telescope: ファイル内容をgrep |
| <leader>fb | Telescope: バッファ一覧 |
| <leader>fr | Telescope: 最近使ったファイル |
| <leader>a | Harpoon: 現在のファイルをピン留め |
| <C-e> | Harpoon: リストを表示 |
バッファ操作
| キー | 動作 |
|---|---|
| :ls | バッファ一覧を表示 |
| :bn / :bp | 次 / 前のバッファへ移動 |
| :bd | バッファを閉じる |
ウィンドウ操作
| キー | 動作 |
|---|---|
| :vsp / :sp | 垂直 / 水平分割 |
| Ctrl-w h/j/k/l | ウィンドウ間を移動 |
| Ctrl-w = | ウィンドウサイズを均等化 |
| Ctrl-w o | 現在のウィンドウだけ残す |