vimrcのススメ!@2024

2024年6月13日

この記事を読むと得られる情報

全国1億人のvimerの皆さん、おまたせしました!!
vimの画面だって高機能に美しく使いたいですよね?
そこで今回はvimの設定を司る~/.vimrcのオススメ記述をご紹介します。

完成予想図

vimの完成予想図
  • カラースキームの導入
  • Markdownのシンタックスハイライト
  • ステータスバーの導入
  • ファイラーの利用を可能に

本題

vimとgitがインストール済みの環境で、自分のホームディレクトリに.vimrcをいうファイルネームで下記の内容を記載します。
(新規作成でも上書きでもどちらでも大丈夫です)

" 機能型
"" 互換モードの廃止(要先頭記述)
set nocompatible
"" コマンドの履歴を10000件残す
set history=10000
"" 行を跨いでのカーソル移動を有効にする
set whichwrap=b,s,h,l,<,>,[,]
"" w!!でsudoを忘れても保存
cnoremap w!! w !sudo tee > /dev/null %<CR> :e!<CR>
"" バックスペースの有効化
set backspace=indent,eol,start
"" 左右スクロールは一文字づつ行う
set sidescroll=1
"" 左右スクロール時の視界を確保
set sidescrolloff=8
"" 文字コードの設定
set encoding=utf-8
"" vimのマルチバイトへの対応
scriptencoding utf-8
"" 保存時の文字コード
set fileencoding=utf-8
"" NeoVimのインストール確認
if has('vim_starting')
    set runtimepath+=~/.vim/bundle/neobundle.vim/
    if !isdirectory(expand("~/.vim/bundle/neobundle.vim/"))
        echo "install NeoBundle..."
        :call system("git clone git://github.com/Shougo/neobundle.vim ~/.vim/bundle/neobundle.vim")
    endif
endif
call neobundle#begin(expand('~/.vim/bundle/'))
NeoBundleFetch 'Shougo/neobundle.vim'
" プラグインの個別記載
"" カラースキームのvim-code-darkを導入
NeoBundle 'tomasiser/vim-code-dark'
"" ステータスラインの情報を強化
NeoBundle 'itchyny/lightline.vim'
"" 末尾のスペースを強調表示
NeoBundle 'bronson/vim-trailing-whitespace'
"" インデントの可視化
NeoBundle 'Yggdroot/indentLine'
"" Markdown構文
NeoBundle 'joker1007/vim-markdown-quote-syntax'
"" 軽量なファイラー
NeoBundle 'scrooloose/nerdtree'
""" Control + f ファイラーのオンオフ
nnoremap <silent><C-f> :NERDTreeToggle<CR>
"" NeoVimの設定系
call neobundle#end()
filetype plugin indent on
NeoBundleCheck
"" code-darkが存在すれば有効化する
if neobundle#is_installed('vim-code-dark')
    colorscheme codedark
endif
" 表示系
"" ステータスラインを表示
set laststatus=2
"" カーソル行の背景色を変える
set cursorline
"" 上下4行の視界を確保
set scrolloff=4
"" カラーbitの指定
set t_Co=256
"" 括弧入力時の対応する括弧を表示
set showmatch
"" 入力中のコマンドを表示
set showcmd
"" 現在のモードを表示する
set showmode
"" 編集中のファイル名を表示
set title
"" カーソルの位置表示を有効にする
set ruler
"" キャレットの形状変更
let &t_SI = "\<Esc>]50;CursorShape=1\x7"
let &t_EI = "\<Esc>]50;CursorShape=0\x7"
"" コードの色分け
syntax enable
"" □ や○ 文字が崩れる問題を解決
set ambiwidth=double
"" 対応する括弧の強調表示
set showmatch
source $VIMRUNTIME/macros/matchit.vim
"" 長文が表示されなくなる問題の解決
set display=lastline
" 入力補助系
"" オートインデント
set smartindent
"" smartindentで増減する幅
set shiftwidth=4
"" インデントのスペースを設定
set tabstop=4
"" タブ入力を複数の空白入力に置き換える
set expandtab
"" 連続した空白に対してタブキーやバックスペースキーでカーソルが動く幅
set softtabstop=4
"" ペースト時の自動インデント
if &term =~ "xterm"
    let &t_SI .= "\e[?2004h"
    let &t_EI .= "\e[?2004l"
    let &pastetoggle = "\e[201~"
    function XTermPasteBegin(ret)
        set paste
        return a:ret
    endfunction
    inoremap <special> <expr> <Esc>[200~ XTermPasteBegin("")
endif
"" 改行時に前の行のインデントを継続する
set autoindent
" 検索系
"" 大文字と小文字を区別しない
set ignorecase
"" インクリメンタルサーチを行う
set incsearch
"" 大文字と小文字が混在した言葉で検索を行った場合に限り、大文字と小文字を区別する
set smartcase
"" 検索文字列をハイライトする
set hlsearch
"" 最後尾まで検索を終えたら次の検索で先頭に移る
set wrapscan
"" 貼り付け時にインデントを無効化
set paste

解説

基本的にはコメントアウトに書いてある通りですが、少し複雑なところを解説していきたいと思います。

NeoVimのインストール確認

22行目からブロックですが、本設定ではいくつかvimのプラグインを使用しています。
そのプラグインを管理するツールであるNeoVimが環境に存在するかを確認して、なければインストールされるようになっています。
ここのインストールでgitが使われるので、gitがインストールされていないとエラーになります。

ファイラーの使い方

Ctrl + f で画像の様に左側にツリー形式のファイラーを起動できます。
これでいちいちvimを閉じることなく違うファイルを編集することができます!
vimの起動したディレクトリをカレントディレクトリとして起動しますのでそこだけはご注意を