私的におすすめな~/.vimrcの設定

デフォルトの状態で使ってもいいのですが、~/.vimrcの設定で自分好みのエディタにすることができます。

環境

$ cat /etc/almalinux-release 
AlmaLinux release 10.1 (Heliotrope Lion)
$ LANG=C vim --version | head -n 2
VIM - Vi IMproved 9.1 (2024 Jan 02, compiled Sep 10 2025 00:00:00)
Included patches: 1-83

設定例

$ cat ~/.vimrc
"==================================================
" vimrc(AlmaLinux / RHEL 向け)
"==================================================

"--------------------------------------------------
" 基本動作
"--------------------------------------------------

" vi互換モードを無効化する【推奨】
" vi / vim 起動時の挙動差をなくす
set nocompatible

" 保存時の文字コードをUTF-8にする【推奨】
set fileencoding=utf-8

" 外部で更新された場合に自動で再読み込みする【推奨】
set autoread

" 未保存でもバッファを切り替えられるようにする【推奨】
set hidden

" undo履歴をファイルに保存する(任意)
"set undofile
" undo履歴をホームディレクトリ配下に保存する(任意)
"set undodir=~/.vim/undo//

" バックアップファイルを作成しない(任意)
set nobackup

" スワップファイルを作成しない(任意)
set noswapfile

" modelineを無効化して設定注入を防止する(任意)
set nomodeline

"--------------------------------------------------
" ファイルタイプ別設定
"--------------------------------------------------

" ファイルタイプ別の設定とインデントを有効化する【推奨】
filetype plugin indent on

"--------------------------------------------------
" 検索系
"--------------------------------------------------

" 小文字のみの検索では大文字小文字を区別しない【推奨】
set ignorecase

" 大文字を含む検索では大文字小文字を区別する【推奨】
set smartcase

" 検索文字入力中から検索を開始する【推奨】
set incsearch

" ファイル末尾に達したら先頭から再検索する【推奨】
set wrapscan

" 検索結果をハイライト表示する【推奨】
set hlsearch

" Escキーを2回押すと検索ハイライトを解除する【推奨】
nmap <Esc><Esc> :nohlsearch<CR><Esc>

"--------------------------------------------------
" 表示・操作系
"--------------------------------------------------

" 相対行番号を表示する(任意)
"set relativenumber

" 現在行を強調表示する(任意)
"set cursorline

" 現在列を強調表示する(任意)
"set cursorcolumn

" 行末の1文字先までカーソル移動できるようにする【推奨】
set virtualedit=onemore

" ビープ音を鳴らさず画面表示で通知する【推奨】
set visualbell

" 括弧入力時に対応する括弧を表示する【推奨】
set showmatch

" コマンド補完を一覧表示と最長一致にする【推奨】
set wildmode=list:longest

" 折り返し表示行単位で下に移動する【推奨】
nnoremap j gj

" 折り返し表示行単位で上に移動する【推奨】
nnoremap k gk

" シンタックスハイライトを有効化する【推奨】
syntax enable

"--------------------------------------------------
" ステータスライン / paste事故防止
"--------------------------------------------------

" paste状態をステータスラインに表示する【推奨】
set statusline=%<%f\ %h%m%r%=%{&paste?'[PASTE]':''}\ %y\ %l/%L

" ステータスラインを常に表示する【推奨】
set laststatus=2

" F2キーでpasteモードを切り替える【推奨】
set pastetoggle=<F2>

"--------------------------------------------------
" インデント・タブ方針
"--------------------------------------------------

" 方針:
" ・基本はスペース2文字とする
" ・TABは使用しない(Makefileを除く)
" ・smartindent / cindent は使用しない

" 不可視文字を表示する【推奨】
set list

" TABと行末スペースを可視化する
set listchars=tab:»·,trail:·

" TABキー入力をスペースに変換する【推奨】
set expandtab

" 自動インデントの幅を2文字にする【推奨】
set shiftwidth=2

" TAB/BSキーで2文字分移動する【推奨】
set softtabstop=2

" TAB文字の表示幅を2文字にする【推奨】
set tabstop=2

"--------------------------------------------------
" Makefile例外設定
"--------------------------------------------------

" MakefileではTABを使用するようにする【推奨】
augroup makefile_tab
  autocmd!
  autocmd FileType make setlocal noexpandtab tabstop=8 shiftwidth=8 softtabstop=0
augroup END

"--------------------------------------------------
" vimrc自動再読み込み
"--------------------------------------------------

" vimrc保存時に自動で再読み込みする【推奨】
augroup source-vimrc
  autocmd!
  autocmd BufWritePost *vimrc source $MYVIMRC
augroup END

"--------------------------------------------------
" 自動コメント挿入の抑制
"--------------------------------------------------

" 改行時にコメントが自動継続しないようにする【推奨】
augroup auto_comment_off
  autocmd!
  autocmd BufEnter * setlocal formatoptions-=r
  autocmd BufEnter * setlocal formatoptions-=o
augroup END

"--------------------------------------------------
" HTML / XML 閉じタグ補完
"--------------------------------------------------

" 閉じタグを自動補完できるようにする(任意)
augroup MyXML
  autocmd!
  autocmd Filetype xml  inoremap <buffer> </ </<C-x><C-o>
  autocmd Filetype html inoremap <buffer> </ </<C-x><C-o>
augroup END

"--------------------------------------------------
" 編集位置の記憶
"--------------------------------------------------

if has("autocmd")
  augroup redhat
    autocmd!
    " テキストファイルの行幅を78文字に制限する(任意)
    autocmd BufRead *.txt set tw=78
    " 前回終了時のカーソル位置に移動する【推奨】
    autocmd BufReadPost *
      \ if line("'\"") > 0 && line("'\"") <= line("$") |
      \   exe "normal! g'\"" |
      \ endif
  augroup END
endif
タイトルとURLをコピーしました