vimrcの設定を晒すのは数年ぶりなので初投稿です(?)
たまーにバックアップだのこのプラグインが~とかで記事にしてましたが、改めてvimrc全文を晒して…という事はやってこなかったと思うので、現時点でのvimrcの中身を晒しものにしとこうかなと。
使ってない設定とか、書いてある場所が違う設定もあるかもしれませんが、どうぞ生煮えの目で見守ってやってください!
" ※他環境でよみこむと終端文字エラーを起こすことがあるので注意 " e.g. CFLRのvimrcをLRで読み込むなど set ttimeout set timeoutlen=300 set ttimeoutlen=10 let mapleader = " " " set list " show hlsearch result num set shortmess-=S set ruler set rulerformat=%55(%{strftime('%a\ %b\ %e\ %I:%M\ %p')}\ %5l,%-6(%c%V%)\ %P%) set number set relativenumber " plugin configuration " packadd vim-jetpack call jetpack#begin() Jetpack 'tani/vim-jetpack', {'opt': 1} "bootstrap Jetpack 'liuchengxu/vim-which-key' Jetpack 'kaz399/spzenhan.vim' Jetpack 'lambdalisue/fern.vim' Jetpack 'jeetsukumaran/vim-buffergator' "Jetpack 'vim-airline/vim-airline' Jetpack 'raghur/vim-ghost' Jetpack 'vim-scripts/YankRing.vim' Jetpack 'itchyny/lightline.vim' Jetpack 'prabirshrestha/vim-lsp' Jetpack 'prabirshrestha/asyncomplete.vim' Jetpack 'nathanaelkane/vim-indent-guides' Jetpack 'altercation/vim-colors-solarized' Jetpack 'cocopon/iceberg.vim' Jetpack 'gkeep/iceberg-dark' Jetpack 'junegunn/fzf.vim' Jetpack 'junegunn/fzf', { 'do': {-> fzf#install()} } Jetpack 'mechatroner/rainbow_csv' Jetpack 'mhinz/vim-startify' Jetpack 'roxma/vim-hug-neovim-rpc' Jetpack 'roxma/nvim-yarp' Jetpack 'liuchengxu/vim-which-key' Jetpack 'simeji/winresizer' Jetpack 'mattn/vim-maketable' Jetpack 'obcat/vim-hitspop' call jetpack#end() let s:jetpackfile = expand('<sfile>:p:h') .. '/pack/jetpack/opt/vim-jetpack/plugin/jetpack.vim' let s:jetpackurl = "https://raw.githubusercontent.com/tani/vim-jetpack/master/plugin/jetpack.vim" if !filereadable(s:jetpackfile) call system(printf('curl -fsSLo %s --create-dirs %s', s:jetpackfile, s:jetpackurl)) endif for name in jetpack#names() if !jetpack#tap(name) call jetpack#sync() break endif endfor " vim-whichkey config " toggle whichkey nmap <silent> <Leader> :WhichKey '<Space>' <CR> " vim-hitstop config let g:hitstop_line = 'winbot' let g:hitstop_column = 'winright' highlight link hitstopErrorMsg ErrorMsg " fzfz / RG use config nnoremap <silent> <Leader>,p :GFiles<CR> nnoremap <silent> <Leader>,P :Files<CR> nnoremap <silent> <Leader>,s :RG<CR> nnoremap <silent> <Leader>,c :Commits<CR> " Fern.vim config nmap <silent><C-e> :Fern ~/ -reveal=% -drawer -toggle -width=30<CR> nmap <silent><Leader>e :Fern ~/ -reveal=% -drawer -toggle -width=30<CR> "lightline-vim settings let g:lightline = { \ 'colorscheme': 'icebergLight', \ } " plugin confiuration END " " " normal vim confiuration END " set nocompatible set cursorline set cursorcolumn set incsearch set ttyfast set showtabline=2 set encoding=utf-8 " 改行コードの自動判別 set fileformats=unix,dos,mac " 他環境での改行コード変換 " setl fenc=utf-8 " setl ff=-unix " setl ff=dos "file profile config set nobomb "swpファイル保存ディレクトリ set directory=~/vimfiles "バックアップファイル(redo/undoファイル)保存ディレクトリ set backupdir=~/vimfiles set showcmd "未保存バッファから移動する時に警告を無視する set hidden "文字列検索時のハイライト有効化 set hlsearch "copy, cut, paste config set clipboard=unnamed,autoselect "clipboard configuration(neovim) " set clipboard=unnamedplus " backspaceキーで削除出来るようにする set backspace=indent,eol,start "setting indent set autoindent set smartindent set breakindent "status line ever indicate set laststatus=2 set autowrite set nobackup set noswapfile set noundofile "tab & visual UI settings set shiftwidth=4 set tabstop=4 set noexpandtab set title set background=dark "terminal color:: set t_Co=256 "color scheme setting:: "colorscheme retrobox colorscheme retrobox syntax enable "use multibyte character setting set ambiwidth=double " nnoremap j gj " nnoremap k gk " nmap gj j " nmap gk k nmap <expr> j v:count ? 'j' : 'gj' nmap <expr> k v:count ? 'k' : 'gk' nmap <Esc><Esc> :nohlsearch<CR><Esc> imap kj <Esc> set whichwrap=b,s,<,>,[,] " Buffergator mru list toggle nmap <silent><Leader><Leader>b :BuffergatorToggle<CR><Esc> " g:buffergator_split_size = 2 " g:buffergator_suppress_keymaps = 1 " Diff's configuration nmap <Leader><C-d> :diffthis<CR> nmap <Leader><C-S-d> :diffoff<CR> " ime off(spzenhanを使用する場合※プラグインとしてインストール必須?環境変数のパスを通してしまえば良い) " ※環境によっては動作しない可能性あり(Windows機3機で検証済) if executable('spzenhan') let s:lastimestate = 0 autocmd InsertLeave * :call system('spzenhan 0') autocmd CmdlineLeave * :call system('spzenhan 0') endif " cmd-vim tab switch configuration nmap <C-Tab> :tabnext<CR> nmap <C-S-Tab> :tabprevious<CR> nmap <C-j> :bnext<CR> nmap <C-k> :bprev<CR> cmap sefm set filetype=markdown cmap sefp set filetype=php cmap sefh set filetype=html "open-browser.vim settings " let g:netrw_nogx = 1 " disable netrw's gx mapping. " nmap gx <Plug>(openbrowser-smart-search) " vmap gx <Plug>(openbrowser-smart-search) " coc.vim configuration " set statusline^=%{coc#status()}%{get(b:,'coc_current_function','')} " GUI font configuration "default use font/fontwide " フォントのところは適宜変える形で set guifont=Juisee_HWNF:h12 guifontwide=Juisee_HWNF:h12 " コマンド一発でGUIの文字のサイズを変更できるようにする VS= 10, VSS= 12, VSSS=14 cmap VS set guifont=Juisee_HWNF:h10 guifontwide=Juisee_HWNF:h10 cmap VSS set guifont=Juisee_HWNF:h12 guifontwide=Juisee_HWNF:h12 cmap VSSS set guifont=Juisee_HWNF:h14 guifontwide=Juisee_HWNF:h14
あいかわらずinit.luaから引き継いでいる点としては、
あたりで、多くのnvimプラグインをvimでもそれっぽい感じで使えるようにするために(互換性のあるプラグイン以外は)最初の2週間ほどはプラグインを探して試してまた探して…という作業に追われることになってしまった。
一方で、フォントはnvimに切り替えてからの1年、HackGenConsoleNF→PlemolJP Console NFJ→Juisee_HWNFと相変わらず等幅フォントを使い続ける点は変わっておらず、やはり3:5版は使いづらいという苦手意識が拭えない。いや常用すれば快適なのかもしれないけど。
プラグイン
パッケージマネージャはlazy.nvim→vim-plug→jetpack.vimへと移行。
vim-plugもjetpackも1ファイルで完結していて特に不満はないのだけど、単にjetpackの方が(若干)読み込みが早いのと、lazyほど豪華なUIは無くても良いかな、と思ったことが大きい。
特にUIがごちゃごちゃしすぎているというのは大きく、しかもこのvimrcでWindows/Linuxどちらも使うので、快適な遅延読み込みのために微調整するのが面倒くさいというのもあるし。
その中でも圧倒的に便利なプラグインをいくつか。
lightline.vim
- この類のプラグインというとairlineあたりが筆頭候補になるけど、10年前からずっとステータスバーはlightlineで統一。というよりこのプラグインのデフォルト設定に慣れすぎてほかの色(e.g.NORMALモードで赤や橙になるやつとか)が違和感しかなく、疲れるから使ってないという切実な事情もある。
が、一時期カラースキームをIcebergにしていた影響でlightlineもIcebargに統一してあり、かつステータスバーだけはLightテーマで統一。
spzenhan.vim
日本語入力をする上では欠かせない。
一応、linux(かつfcitx5-mozc)で使う場合はfcitx5-remtoeという選択肢があるにせよ、linuxでも大して設定変更をせずに使える点は高く評価したい。
hitstop
最近追加したがかなり使い勝手が良く、検索時にスクショのように右上(設定で変更可能)で何件中の何件目かを確認できるのが良い。
ステータスバーにも同様の表示はあり、環境次第ではこっちのほうが使いやすかったりするが、いかんせん一画面を分割していることの多い人間としてはいちいちウィンドウごとに異なる幅の右下をすぐに凝視するのはつらいという事もありこのプラグインに落ち着いた。

vimそのものの機能で便利なもの
text-obejcts
オペレータ、モーションの概念自体は前から知っていたものの、テキストオブジェクトを常用するようになったのは今年に入ってから。特に[``]の内側や段落ごとといった感じで範囲指定を行う機能…と解釈してるが、普通にオペレータ+モーションでやるよりも早い場合がある。
今までは例えば[innner]という囲みがあったら、iに移動して6sでインサートモードに入ってから文字入力をしていたが、これが4文字でも256文字でも毎回数字を打っていた(HHKBとはいえ数字を打ち間違えることはしばしば)。
それに対して、テキストオブジェクトも使えばsiwの3文字タイプするだけで済むし、d,i,wどれをとっても位置を正確に指が覚えているので「8ってuの上だっけ?」と一瞬ためらう必要もなし。
同様にdiwならその範囲内の文字を削除、そもそもiにカーソルを合わせなくても(wで単語の先頭まで移動しなくても)ci[で[]のなかの文字を削除してインサートモードへ移動、というのもできる。めっちゃ便利!
Leader / LocaleLeader
Leaderはみんな大好き任意のコマンド列をたたくときのためのスイッチみたいなやつ。一方で、LocalLeaderは特定のプラグイン内でなど、Leaderとは別のスイッチを使いたいときのやつ。ただしLocal~の方はあんまり使ってないw
例として
nmap <silent><Leader><Leader>b :BuffergatorToggle<CR><Esc> nmap <silent><Leader>e :Fern ~/ -reveal=% -drawer -toggle -width=30<CR>
だったら、いちいち:BuffergatorToggleと入力しなくてもスペース×2→bでバッファ一覧が開けるようになるし、いちいち指定の幅でFernを開くためのコマンドを入力しなくても、
カーソル移動
カーソルなんてh/j/k/lで使うやん~という話ではなく、H/M/L/<C-u>/<C-d>はもちろん、(/)/{/}など含めてカーソル移動全般のコマンド。
当然PgUPとかPgDOWNとかも使うが、基本的にホームポジションで操作できるならHHKBのキー配置(をいじくってる身からすると)から下手にほかのキーに指を伸ばしたくないのでこれらのコマンドは快適に編集するうえでは必須。
set hidden
バッファを保存しない状態で移動しようとすると警告が出るのだが、それを無視する。特に原稿執筆を秀丸とかEmEditorとかメモ帳でやらずにvimでやる身としては、無名バッファを何度も行き来することなど日常茶飯事なので、nohiddenにしてあると使いづらくて仕方がない。
vimそのものとは関係ないがあると便利なもの
powertoys
MS謹製の便利ツールセット。環境変数、powertoys run、color picker、FancyZonesなど挙げればキリがなく、しかもそのすべてがコマンドで呼び出し可能という使い勝手の良さ。
keynavish
ポメラの調教()でよく使われているkeynavのwindows移植版。こちらもコマンド操作でマウスカーソルを移動することが出来て、しかも操作体系がvimとも親和性が高いのでスムーズにウィンドウ移動が可能。
例えば、横に4つ開いたウィンドウの左端から右端に移動したいときは<C-;>→l→lですぐ移動できるし、ランチャーとしても代用可能という便利さはそのまま受け継がれている。
しかもvimrcのように設定ファイルが存在し、カスタム可能。さらにそれが平文で保存されていてバイナリでもなく、vimでも普通のテキストで読み込める。
Nerd-Font入りのフォント
例:PlemolJP NF版
とにかくファイラを開いたときに見分けがつきやすい。おまけにちょっとした文字(絵文字相当)もnotepad.exeなんかで表示させた時とあまり違和感なく表示できる。
さて、2024年の話を2025年に3日連続でブチ上げるばっどむーぶをやらかしてますが、たぶん正月三日坊主で明日からは来年まで記事を書かないと思うので、今回が永遠の初投稿という事にしてやってくださいw
2026年時点でのvimrcを丸ごと晒し首にするっていう記事も良いな…