タイトル: 行数を表示する方法
SEOタイトル: vi / Vim 行数表示完全ガイド (:set number / 相対行 / 永続化)
| この記事の要点 |
|
結論: 行番号を出すコマンド
" Normal モードで Esc → コロン入力
:set number
" または短縮形
:set nu
" 消す
:set nonumber
:set nonu
" トグル
:set number!
左端にカーソル行までを含む絶対行番号が表示されます。
相対行番号 (relativenumber)
Vim 7.3 で追加された便利機能。現在行からの距離を表示し、5j (5 行下) や 10dd (10 行削除) のような移動・編集コマンドが直感的になります。
" 相対行番号 ON
:set relativenumber
:set rnu " 短縮形
" 相対行番号 OFF
:set norelativenumber
:set nornu
" トグル
:set rnu!
表示イメージ:
3 function add(a, b) {
2 return a + b;
1 }
0 function sub(a, b) { ← 現在行
1 return a - b;
2 }
3
4 function mul(a, b) {
「3 つ下に行きたい」→ 3j で即座に動けます。
Hybrid モード (絶対行 + 相対行)
Vim 7.4 以降では 両方同時に有効化できます。現在行は絶対行番号、他は相対行番号という最強モード:
:set number
:set relativenumber
" まとめて
:set nu rnu
表示イメージ:
3 function add(a, b) {
2 return a + b;
1 }
42 function sub(a, b) { ← 現在行は絶対 (42)
1 return a - b;
2 }
3
4 function mul(a, b) {
これで「現在何行目か」も「あと何行下か」も同時に分かります。Neovim ディストリの LazyVim / AstroNvim はこれがデフォルトです。
設定の永続化 (~/.vimrc)
毎回 :set number を打つのは面倒。~/.vimrc に書けば起動時に自動適用されます:
# ~/.vimrc を編集
vi ~/.vimrc" ~/.vimrc
set number
set relativenumber
" カーソル位置を強調
set cursorline
" ステータスラインに行・列番号
set ruler
" 検索ハイライト
set hlsearch
set incsearch
保存して再起動すれば次回から有効です。
Neovim の場合
Neovim では ~/.config/nvim/init.vim または ~/.config/nvim/init.lua に書きます:
" ~/.config/nvim/init.vim (Vim script 派)
set number
set relativenumber-- ~/.config/nvim/init.lua (Lua 派、推奨)
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.cursorline = true
関連: ステータス情報
" ステータスラインに行・列・% を表示
:set ruler
" 常時ステータスライン表示
:set laststatus=2
" カーソル列のハイライト
:set cursorcolumn
" カーソル行のハイライト
:set cursorline
" 現在行の情報を即座に表示
Ctrl+g " Normal モード
" → "filename.txt" 42 lines --50%-- col 12
特定行へのジャンプ
:42 " 42 行目へ
42G " 同じく 42 行目へ (Normal モード)
gg " 1 行目
G " 最終行
50% " ファイル中央 (50%)
" 検索でジャンプ
/pattern " pattern にマッチする行へ
行内容のコピーと操作
yy " 現在行をコピー (yank)
3yy " 3 行コピー
:42y " 42 行目をコピー
:42,50y " 42-50 行目をコピー
:%y+ " 全行をシステムクリップボードへ (要 +clipboard)
p " ペースト
:42pu " 42 行目の後にペースト
" 行コピーをシステムクリップボードへ (macOS / Linux GUI)
:set clipboard=unnamed " macOS
:set clipboard=unnamedplus " Linux
行番号付きで表示・印刷
" 行番号付きで cat (vi 外)
cat -n file.txt
" 番号付きで表示
nl file.txt
" Vim で印刷時に行番号
:set printoptions=number:y
:hardcopy
nano / Emacs での同等操作
| エディタ | 行番号 ON |
|---|---|
| Vim / vi | :set number |
| Neovim | :set number |
| nano | Ctrl+C でカーソル位置表示 / nano -l file で起動 |
| Emacs | M-x linum-mode or M-x display-line-numbers-mode |
| VS Code | 標準で表示 / 設定 editor.lineNumbers |
FAQ
Q: 行番号をコピーしたくない (画面選択時)
A: ターミナル選択コピーは行番号も入ります。:set mouse=a を入れて Vim 内選択 (Visual モード) を使うか、行番号を一時的に消す: :set nonu。
Q: 行番号の幅が広くて見づらい
A: :set numberwidth=3 で幅指定。または相対行番号で 2 桁に抑える。
Q: :set nu を打ってもエラーになる
A: Normal モードで実行する必要があります。Esc を押してから :set nu。Insert モードのまま打つと文字列として入力されます。
Q: 古い vi (Vim でない真の vi) で行番号は?
A: 同じ :set number / :set nu で OK。古典 vi は機能が限られますが、行番号は標準サポート。