OpenSolaris の vi(vim)をカスタマイズする

  • 投稿日:
  • by
今まで実は vi はあまり使っておらず、vim を使っていました。
しかも CentOS などの vim はあらかじめ .vimrc(vim 用設定ファイル)が用意されており、比較的使いやすい状態だったので、同じような操作感を得るために設定を変更しようと思います。 OpenSolaris の vi は、実は vim にエイリアスされているため、vi とコマンドを打って起動するのは vim です。 しかし、vi 互換モードが有効になっているため、実質の動作は vi になってしまいます。以前、記事に書いた、文字を削除しても、表示上残ってしまう現象は、vi 互換モードのせいだったのですね orz
挿入モードでカーソルキーでの移動ができない vi なんて嫌いなので互換性を断ちます。
互換性を断つには、vimrc に以下の一行を記述します。
set nocompatible
ただ、OpenSolaris にはユーザーアカウントごとの .vimrc が用意されていません。なので、自分で作ったりするのですが、実は、サンプルの設定ファイルがあらかじめ用意されているので、それを流用します。
ログインしているユーザーのホームディレクトリで、以下のコマンドを実行してファイルをコピーします。
-bash-3.2# cp /usr/share/vim/vim71/vimrc_example.vim .vimrc
これで、ログインし直せば快適な操作感が得られると思います (^-^)

ついでに自分の場合は、CentOS の .vimrc を参考に、以下の設定を行いました。
  • エンコーディングの設定
  • 自動インデントの無効
一応、完成した .vimrc の内容を載せておきます。
" An example for a vimrc file.
"
" Maintainer:   Bram Moolenaar 
" Last change:  2006 Nov 16
"
" To use it, copy it to
"     for Unix and OS/2:  ~/.vimrc
"             for Amiga:  s:.vimrc
"  for MS-DOS and Win32:  $VIM\_vimrc
"           for OpenVMS:  sys$login:.vimrc

" Setting of character encoding when edited file is preserved.
if v:lang =~ "utf8$" || v:lang =~ "UTF-8$"
  set fileencodings=utf-8,latin1
endif

" When started as "evim", evim.vim will already have done these settings.
if v:progname =~? "evim"
  finish
endif

" Use Vim settings, rather then Vi settings (much better!).
" This must be first, because it changes other options as a side effect.
set nocompatible

" allow backspacing over everything in insert mode
set backspace=indent,eol,start

if has("vms")
  set nobackup          " do not keep a backup file, use versions instead
else
  set backup            " keep a backup file
endif
set history=50          " keep 50 lines of command line history
set ruler               " show the cursor position all the time
set showcmd             " display incomplete commands
set incsearch           " do incremental searching

" For Win32 GUI: remove 't' flag from 'guioptions': no tearoff menu entries
" let &guioptions = substitute(&guioptions, "t", "", "g")

" Don't use Ex mode, use Q for formatting
map Q gq

" In many terminal emulators the mouse works just fine, thus enable it.
set mouse=a

" Switch syntax highlighting on, when the terminal has colors
" Also switch on highlighting the last used search pattern.
if &t_Co > 2 || has("gui_running")
  syntax on
  set hlsearch
endif

" Only do this part when compiled with support for autocommands.
if has("autocmd")

  " Enable file type detection.
  " Use the default filetype settings, so that mail gets 'tw' set to 72,
  " 'cindent' is on in C files, etc.
  " Also load indent files, to automatically do language-dependent indenting.
  filetype plugin indent on

  " Put these in an autocmd group, so that we can delete them easily.
  augroup vimrcEx
  au!

  " For all text files set 'textwidth' to 78 characters.
  autocmd FileType text setlocal textwidth=78

  " When editing a file, always jump to the last known cursor position.
  " Don't do it when the position is invalid or when inside an event handler
  " (happens when dropping a file on gvim).
  autocmd BufReadPost *
    \ if line("'\"") > 0 && line("'\"") <= line("$") |
    \   exe "normal! g`\"" |
    \ endif

  augroup END

else

"  set autoindent               " always set autoindenting on

endif " has("autocmd")

" Convenient command to see the difference between the current buffer and the
" file it was loaded from, thus the changes you made.
command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
                \ | wincmd p | diffthis
以上です。お疲れ様でした!

参考にしたリンク