まさはる's Weblog

まさはる's Weblog
Macintoshとオーディオの話題

2002年12月23日

Vim-6.1のインストール(その2)

Category : Terminal / Posted at 2002年12月23日 00:00

 Emacsの使用を諦めてVimばっかり使っているのですが、「Vim-6.1のインストール」のインストール方法だと文字コードの自動判別が出来ません。そこで、他のサイトを参考に、文字コードの自動判別を有効にしてビルド(+iconv)し、ステータスラインに文字コードを表示することが出来たので、その方法を以下に示します。

Vim-6.1
自動判別された文字コードと改行コード(sjis,mac)

 文字コードの自動判別を有効にするには、あらかじめlibiconvをインストールしてからvimをインストールするのですが、以下に示すautoconf -o auto/configureを実行しないと+iconvにならないようです。

● libiconv-1.8のインストール
$ curl -O ftp://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.8.tar.gz
$ tar xzf libiconv-1.8.tar.gz
$ cd libiconv-1.8
$ ./configure
$ make
$ sudo make install

● vim-6.1のインストール
$ curl -O ftp://ftp.vim.org/pub/vim/unix/vim-6.1-rt1.tar.gz
$ curl -O ftp://ftp.vim.org/pub/vim/unix/vim-6.1-rt2.tar.gz
$ curl -O ftp://ftp.vim.org/pub/vim/unix/vim-6.1-src1.tar.gz
$ curl -O ftp://ftp.vim.org/pub/vim/unix/vim-6.1-src2.tar.gz
$ tar xzf vim-6.1-rt1.tar.gz
$ tar xzf vim-6.1-rt2.tar.gz
$ tar xzf vim-6.1-src1.tar.gz
$ tar xzf vim-6.1-src2.tar.gz
$ cd vim61/src/
$ autoconf -o auto/configure
$ cd ..
$ ./configure --enable-multibyte
$ make
$ sudo make install

 文字コードの自動判別の設定は、~/.vimrcのset fileencodingsで自動判別させる順序*1に文字コードを書けばよく、また、ステータスラインに文字コードを表示する設定は、set statuslineの設定文字列に関数を作って入れ込めばいいようです。これらオプションの書き方は、vimをインストールしたディレクトリのshare/vim/vim61/doc/options.txtに記載されています。(関数の書き方は...パクってきたので分かりません...(^_^;*2

● サンプルの.vimrc

" .vimrc
" ()書きはデフォルト値
" ********************
" 一般
" ********************
" vi互換にしない(compatible)
set nocompatible
" バックアップをとる(nobackup)
set backup
" 記憶する履歴数(0)
set history=50
 
" ********************
" 画面
" ********************
" ルーラーを表示(noruler)
set ruler
" 入力中のコマンドを表示(noshowcmd)
set showcmd
" ステータスラインを常に表示(1)
set laststatus=2
" 行番号を表示させない(同じ)
set nonumber
" タブや改行を表示しない(同じ)
set nolist
" ステータスラインの表示項目(無し...たぶん標準は%t\ %m%h%r%=%l,%c%V\ %P)
" [1] sample.txt [type][encoding:format][+][RO]    1,1-1    All
set statusline=[%n]\ %t\ %y%{GetStatusEx()}%m%r%=%l,%c%V\ \ \ \ %P
 
" ********************
" 文章編集
" ********************
" 行頭の空白、改行、挿入モードの開始位置での削除を許す(無し)
set backspace=indent,eol,start
" 新しい行を直前の行と同じインデントにする(noautoindent)
set autoindent
" Tab文字の文字幅(8)
set tabstop=4
" cindentやautoindent時に挿入されるタブの幅(8)
set shiftwidth=4
" キーボードでTabキーを押した時に挿入される空白の量(同じ)
set softtabstop=0
 
" ********************
" 検索
" ********************
" 検索文字列が小文字の場合は大文字小文字を区別なく検索する(noignorecase)
set ignorecase
" 検索文字列に大文字が含まれている場合は区別して検索する(nosmartcase)
set smartcase
" 検索時に最後まで行ったら最初に戻る(同じ)
set wrapscan
" 検索文字列入力時に順次対象文字列にヒットさせない(同じ)
set noincsearch
 
" ********************
" 文字コード
" ********************
" 内部の文字コード(latin1)
set encoding=utf-8
" ファイルの文字コード(無し)
set fileencoding=utf-8
" 入力ファイルの自動識別(ucs-bom,utf-8,latin1)+iconvでビルドされている必要あり
set fileencodings=ucs-bom,iso-2022-jp,euc-jp,sjis,utf-8,latin1
" ファイルの改行コード(unix)
set fileformat=unix
" 入力ファイルの改行コードの自動識別(unix,dos)
set fileformats=mac,unix,dos
 
" ********************
" オートコマンド
" ********************
if has("autocmd")
    " ファイル形式の検出、プラグインとインデントのロードを有効にする
    filetype plugin indent on
    " ファイル形式がtextの場合78文字で行を分割する
    autocmd FileType text setlocal textwidth=78
    " ファイル保存時のカーソル位置を記憶する
    autocmd BufReadPost *
        \ if line("'\"") > 0 && line("'\"") <= line("$") |
        \   exe "normal g`\"" |
        \ endif
endif
 
" ********************
" 関数の定義
" ********************
" 文字エンコーディングと改行コードの取得
function! GetStatusEx()
    let str = &fileformat
    if has("multi_byte") && &fileencoding != ""
        let str = &fileencoding . ":" . str
    endif
    let str = "[" . str . "]"
    return str
endfunction

 なお、上記.vimrcのコメント行の( )書きはデフォルトの設定を記載しています。

*1 書く順序によって、自動判別がうまくいかない場合もあるようです。utf-8はlatin1よりも前に書かないとutf-8のファイルがうまく表示されません。(試行錯誤により)
*2 eval.txtとusr_41.txtあたりに記載されています。

 Mac OS X v10.3の場合は、libiconv 1.9とvim 6.2がインストール済みとなっていますが、日本語を入力したい場合はvimにマルチバイトのオプションを付けてインストールする必要があるようです。

● vim-6.2のインストール
$ curl -O ftp://ftp.vim.org/pub/vim/unix/vim-6.2.tar.bz2
$ tar jxvf vim-6.2.tar.bz2
$ cd vim62
$ ./configure --enable-multibyte
$ make
$ sudo make install

 なお、ターミナルのウインドウ設定で「非ASCII文字をエスエープする」にチェックが入っていると日本語が正しく表示されません。

このページのトップに戻る