技術ノート
公開

Neovim

Neovimの使用方法メモ

NeovimUbuntu
実行環境OSUbuntu 26.04PlatformWSL2fastfetch2.62.1
実行環境の詳細
Fastfetch output for the Ubuntu 26.04 WSL2 environment
OS
Ubuntu 26.04
Platform
WSL2
Host
Windows Subsystem for Linux - Ubuntu-26.04 (2.6.2.0)
Kernel
Linux 6.6.87.2-microsoft-standard-WSL2
Shell
zsh 5.9
Terminal
Windows Terminal
CPU
AMD Ryzen 7 5700G
GPU
AMD Radeon(TM) Graphics [Integrated]
Memory
31.03 GiB
Disk
1006.85 GiB - ext4
Arch
x86_64 / amd64
WM
Weston WM (Microsoft Corporation)
Display
3440x1440, 60 Hz
Local IP
192.168.0.216/24
Locale
C.UTF-8
fastfetch
2.62.1

インストール

sudo apt update
sudo apt install curl

curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
sudo rm -rf /opt/nvim-linux-x86_64
sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz

rm nvim-linux-x86_64.tar.gz
echo 'export PATH="$PATH:/opt/nvim-linux-x86_64/bin"' >> ~/.bashrc
source ~/.bashrc
echo 'export PATH="$PATH:/opt/nvim-linux-x86_64/bin"' >> ~/.zshrc
source ~/.zshrc
nvim --version
# NVIM v0.12.2
# Build type: Release
# LuaJIT 2.1.1774638290
# Run "nvim -V1 -v" for more info

起動

初回の起動画面

vimと同様、:qを入力して終了します。

設定

~/.config/nvim/init.luaに設定を記述します。

~/.config/nvim/init.lua
vim.opt.number = true
vim.opt.relativenumber = true

vim.opt.tabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true

vim.opt.ignorecase = true
vim.opt.smartcase = true

vim.opt.clipboard = "unnamedplus"

vim.g.mapleader = " "
vim.keymap.set("n", "<leader>w", "<cmd>write<CR>", { desc = "Save file" })
vim.keymap.set("n", "<leader>q", "<cmd>quit<CR>", { desc = "Quit" })

vim.api.nvim_create_autocmd("BufReadPost", {
    callback = function()
        local mark = vim.api.nvim_buf_get_mark(0, '"')
        local line_count = vim.api.nvim_buf_line_count(0)

        if mark[1] > 0 and mark[1] <= line_count then
            pcall(vim.api.nvim_win_set_cursor, 0, mark)
        end
    end,
})

nvim ~/.config/nvim/init.lua

設定変更後の見た目

各設定の影響

設定影響
vim.opt.number = true左端に行番号を表示します。
vim.opt.relativenumber = trueカーソル行からの相対行番号を表示します。numberと併用すると、カーソル行は絶対行番号、それ以外は相対行番号になり、5jd3jのような移動・編集の行数を数えやすくなります。
vim.opt.tabstop = 4ファイル内にあるタブ文字を、画面上で4文字幅として扱います。
vim.opt.shiftwidth = 4自動インデントや>><<で増減するインデント幅を4文字にします。
vim.opt.expandtab = true挿入モードでTabを押したとき、タブ文字ではなくスペースを入力します。
vim.opt.ignorecase = true/?で検索するとき、大文字小文字を区別しません。
vim.opt.smartcase = trueignorecaseが有効な状態でも、検索語に大文字が含まれる場合は大文字小文字を区別します。たとえばfooFooにも一致し、Fooは大文字小文字の並びが一致する候補に絞られます。
vim.opt.clipboard = "unnamedplus"通常なら無名レジスタに入るヤンク、削除、変更、貼り付けをシステムクリップボードの+レジスタに変更します。OS側のコピー・貼り付けと連携しやすくなります。
vim.g.mapleader = " "<leader>キーをスペースにします。
vim.keymap.set("n", "<leader>w", "<cmd>write<CR>", { desc = "Save file" })ノーマルモードでspacewの順に押すと:writeを実行して保存します。desc:mapなどに表示される説明です。
vim.keymap.set("n", "<leader>q", "<cmd>quit<CR>", { desc = "Quit" })ノーマルモードでspaceqの順に押すと:quitを実行して終了します。
vim.api.nvim_create_autocmd("BufReadPost", ...)ファイルを読み込んだ直後に処理を実行します。ここでは、前回そのファイルを閉じたときのカーソル位置へ戻す処理を設定しています。