Vimを使いこなすためのワザ

カテゴリ: コンピュータ / 公開日: 2009年6月07日(日曜)04:50 / 投稿者: Tom Goodsun

LinuxやUnixでおなじみのVi。VimとかGvimとかも同じようなやつですが、コマンドやショートカットが特殊なため、初めての人には誤操作が多く、敷居が高いのはやむを得ないってところでしょうか。

私自身もまだまだ知らないことが多いので、参考サイトとともにまとめてみることにした。っていうかこういう情報にすぐにたどり着けないんだな。多分。

まずLinuxでは標準的だけど、Windowsで使うにはインストールが必要。日本語化対応されているので概ね問題なし。以下のサイトからダウンロード。

デフォルトの設定は気に食わないので、C:\Program Files\Gvim\以下にできる_vimrc(Linuxの場合はユーザーのホームディレクトリ以下の.vimrc)ファイルをテキストエディタで開き以下のような設定に変更。あくまでも最低限の設定。もはやどのサイトを参考にしたのかは不明。これはWindows用の設定でLinuxで使えるのかはわかりません。「set ~」の部分はLinuxでも使えます(多分)。文字コード設定のために長くなってます。

set nocompatible
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin

if &encoding !=# 'utf-8'
  set encoding=japan
  set fileencoding=japan
endif
if has('iconv')
  let s:enc_euc = 'euc-jp'
  let s:enc_jis = 'iso-2022-jp'
  if iconv("\x87\x64\x87\x6a", 'cp932', 'eucjp-ms') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'eucjp-ms'
    let s:enc_jis = 'iso-2022-jp-3'
  elseif iconv("\x87\x64\x87\x6a", 'cp932', 'euc-jisx0213') ==# "\xad\xc5\xad\xcb"
    let s:enc_euc = 'euc-jisx0213'
    let s:enc_jis = 'iso-2022-jp-3'
  endif
  if &encoding ==# 'utf-8'
    let s:fileencodings_default = &fileencodings
    let &fileencodings = s:enc_jis .','. s:enc_euc .',cp932'
    let &fileencodings = &fileencodings .','. s:fileencodings_default
    unlet s:fileencodings_default
  else
    let &fileencodings = &fileencodings .','. s:enc_jis
    set fileencodings+=utf-8,ucs-2le,ucs-2
    if &encoding =~# '^\(euc-jp\|euc-jisx0213\|eucjp-ms\)$'
      set fileencodings+=cp932
      set fileencodings-=euc-jp
      set fileencodings-=euc-jisx0213
      set fileencodings-=eucjp-ms
      let &encoding = s:enc_euc
      let &fileencoding = s:enc_euc
    else
      let &fileencodings = &fileencodings .','. s:enc_euc
    endif
  endif
  unlet s:enc_euc
  unlet s:enc_jis
endif
if has('autocmd')
  function! AU_ReCheck_FENC()
    if &fileencoding =~# 'iso-2022-jp' && search("[^\x01-\x7e]", 'n') == 0
      let &fileencoding=&encoding
    endif
  endfunction
  autocmd BufReadPost * call AU_ReCheck_FENC()
endif
set fileformats=unix,dos,mac
if exists('&ambiwidth')
  set ambiwidth=double
endif



set diffexpr=MyDiff()

function MyDiff()
  let opt = '-a --binary '
  if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
  if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
  let arg1 = v:fname_in
  if arg1 =~ ' ' | let arg1 = '"' . arg1 . '"' | endif
  let arg2 = v:fname_new
  if arg2 =~ ' ' | let arg2 = '"' . arg2 . '"' | endif
  let arg3 = v:fname_out
  if arg3 =~ ' ' | let arg3 = '"' . arg3 . '"' | endif
  let eq = ''
  if $VIMRUNTIME =~ ' '
    if &sh =~ '\<cmd'
      let cmd = '""' . $VIMRUNTIME . '\diff"'
      let eq = '"'
    else
      let cmd = substitute($VIMRUNTIME, ' ', '" ', '') . '\diff"'
    endif
  else
    let cmd = $VIMRUNTIME . '\diff'
  endif
  silent execute '!' . cmd . ' ' . opt . arg1 . ' ' . arg2 . ' > ' . arg3 . eq
endfunction

"カラープロファイルを設定
colorscheme torte

"行番号を設定
set number

"バックグラウンドの色を設定
set background=dark

"右端での改行しない
set nowrap

"スクロール量を設定
set sidescroll=1

"フォントとフォントサイズの設定
set guifont=MS_ゴシック:h10

"ウィンドウの高さ(行数)の設定
set lines=50

"ウィンドウの幅(文字数)の設定
set columns=150

" スワップファイルを作らない
set noswapfile

" バックアップファイルを作らない
set nobackup

で実際の使い方は以下のサイトを参考にする。

コマンドモードの使い方は最低限覚えなければならない。特に「:w(書き込み)」「:q(終了)」「:wq(書き込みして終了)」「:q!(強制終了)」は必須。他にもコマンドモード、挿入モードで便利な使い方ができるので覚えると仕事が速くなる。Linux上で何かする際もこの使い方を覚えておけば、間違いも減らせるかも。使い方が特殊なので、覚えるまではちょっと苦労するかもだけど。

詳しいことはここでは書かない。リンク先で勉強してくれ。