設定 - Vim

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

Vimを使いこなすための最も効果的な方法は、Vimの設定を行うことである。

ここでは、.vimrcファイルによるVimの設定方法を記載する。


.vimrcファイルとは

Vimの設定を行うことができるファイルである。
このファイルにVimの設定を記述することで、カスタマイズできる。

初期状態では、vimrcファイルは存在しないので、ファイルを作成する。

touch ~/.vimrc



Vimの設定

以下に、Vimの設定例を示す。
この設定を参考にして、各ユーザに沿った設定を行う。

"----------------------------------------
" 全般
"----------------------------------------
" ファイルを上書きする前にバックアップを作ることを無効化
set nowritebackup
" ファイルを上書きする前にバックアップを作ることを無効化
set nobackup
" vimの矩形選択で文字が無くても右へ進める
set virtualedit=block
" 挿入モードでバックスペースで削除できるようにする
set backspace=indent,eol,start
" 全角文字専用の設定
set ambiwidth=double
" wildmenuオプションを有効(vimバーからファイルを選択できる)
set wildmenu

"----------------------------------------
" 検索
"----------------------------------------
" 検索するときに大文字小文字を区別しない
set ignorecase
" 小文字で検索すると大文字と小文字を無視して検索
set smartcase
" 検索がファイル末尾まで進んだら、ファイル先頭から再び検索
set wrapscan
" インクリメンタル検索 (検索ワードの最初の文字を入力した時点で検索が開始)
set incsearch
" 検索結果をハイライト表示
set hlsearch

"----------------------------------------
" 表示設定
"----------------------------------------
" エラーメッセージの表示時にビープを鳴らさない
set noerrorbells
" Windowsでパスの区切り文字をスラッシュで扱う
set shellslash
" 対応する括弧やブレースを表示
set showmatch matchtime=1
" インデント方法の変更
set cinoptions+=:0
" メッセージ表示欄を2行確保
set cmdheight=2
" ステータス行を常に表示
set laststatus=2
" ウィンドウの右下にまだ実行していない入力中のコマンドを表示
set showcmd
" 省略されずに表示
set display=lastline
" タブ文字を CTRL-I で表示し、行末に $ で表示する
set list
" 行末のスペースを可視化
set listchars=tab:^\ ,trail:~
" コマンドラインの履歴を10000件保存する
set history=10000
" コメントの色を水色
hi Comment ctermfg=3
" 入力モードでTabキー押下時に半角スペースを挿入
set expandtab
" インデント幅
set shiftwidth=2
" タブキー押下時に挿入される文字幅を指定
set softtabstop=2
" ファイル内にあるタブ文字の表示幅
set tabstop=2
" ツールバーを非表示にする
set guioptions-=T
" yでコピーした時にクリップボードに入る
set guioptions+=a
" メニューバーを非表示にする
set guioptions-=m
" 右スクロールバーを非表示
set guioptions+=R
" 対応する括弧を強調表示
set showmatch
" 改行時に入力された行の末尾に合わせて次の行のインデントを増減する
set smartindent
" スワップファイルを作成しない
set noswapfile
" 検索にマッチした行以外を折りたたむ(フォールドする)機能
set nofoldenable
" タイトルを表示
set title
" 行番号の表示
set number
" ヤンクでクリップボードにコピー
set clipboard=unnamed,autoselect
" Escの2回押しでハイライト消去
nnoremap <Esc><Esc> :nohlsearch<CR><ESC>
" シンタックスハイライト
syntax on
" すべての数を10進数として扱う
set nrformats=
" 行をまたいで移動
set whichwrap=b,s,h,l,<,>,[,],~
" バッファスクロール
set mouse=a

" auto reload .vimrc
augroup source-vimrc
  autocmd!
  autocmd BufWritePost *vimrc source $MYVIMRC | set foldmethod=marker
  autocmd BufWritePost *gvimrc if has('gui_running') source $MYGVIMRC
augroup END

" auto comment off
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
    " In text files, always limit the width of text to 78 characters
    autocmd BufRead *.txt set tw=78
    " When editing a file, always jump to the last cursor position
    autocmd BufReadPost *
    \ if line("'\"") > 0 && line ("'\"") <= line("$") |
    \   exe "normal! g'\"" |
    \ endif
  augroup END
endif



Vimの使用方法

検索

Vimの検索方法には、以下に示すように、/コマンド(検索)やglobalコマンド(検索にも使える)等がある。

  • /、?、*、#、g*、g#
  • :g, :v
  • vimgrep


  • /コマンド
    /?で検索を開始する。
    例 : /abc
    また、正規表現でも検索できる。
    例 : /^abc
    次にマッチするパターンを検索するには、[n]キーまたは[N]キーを押下する。

    検索の履歴を閲覧・編集するには、/コマンドの後に、[Ctrl]キーと[F]キーを同時押下する。


  • vimgrepコマンド
    Vimからgrepが実行できる。
    grepを実行するために、Vimを中断(C-z)することなく、grepの結果をVimで閲覧、指定した行へジャンプできる。

    カレントファイルをgrepするには、:vimgrep <パターン> %と記述する。
    また、"foo bar"を検索する場合、:vimgrep /foo bar/ %というように、/<パターン>/で囲む必要がある。

    また、マッチした行をquickfix-windowを確認するには、:cwindowと記述する。
    quickfix-windowを最初から表示するには、 | cwinを実行する。
    例 : :vimgrep foo % | cwin

  • vimgrepコマンドにおける対象ファイルの指定
    • vimgrep /pattern/ **
      カレントディレクトリ以下の全ファイルを対象にする(再帰的)
    • vimgrep /pattern/ foo/*
      fooディレクトリ直下のファイルを対象にする。
    • vimgrep /pattern/ foo/**
      fooディレクトリ直下の全ファイルを対象にする。(再帰的)
    • vimgrep /pattern/ foo/**/*.c
      fooディレクトリ直下の*.cファイルを対象にする。(再帰的)

/コマンドとvimgrepコマンドの違い

/ vimgrep
quickfix-window ×
ヒット件数 ×
正規表現
次のマッチへ移動 [n]キー :cnext(:cn)
前のマッチへ移動 [N]キー :cpreious(:cp)または:cNext(:cN)
検索対象 カレントのバッファ 引数で指定