Vim 設定メモ

Vim を使いやすくする設定。nvi が入っていない環境向け。

または、nvi パッケージが腐っている Debian GNU/Linux 5.0 など向け。Debian GNU/Linux 5.0 の nvi は、文字コード自動判別が悪さをしてしまい、ちょっとでも文字コード変換がうまくいかないと、そこでデータを truncate してしまうバグがあるため使うのは危険。#496305 - Cannot handle chars with top bit set under LOCALE=C - Debian Bug report logs

Debian GNU/Linux 6.0 の nvi は LANG=C (LC_CTYPE=C) にして使えば調子が良い。

.vimrc

set cp nohls t_Co= vi= shm+=It enc=latin1 isp=
if has("multi_lang") language C endif if has("autocmd") filetype off endif
  • cp: compatible, 互換モード
  • nohls: 検索キーワードのハイライトをオフにする
  • t_Co=: カラー表示禁止
  • vi=: .viminfo を使用しない
  • shm+=It: shortmess. 起動時のメッセージを表示しない。ファイル名が長すぎる場合は、続きを表示させるためのキー入力を待たず、省略して表示する
  • enc=latin1: 文字エンコーディングを latin1 にする。文字コード判定をせず、任意のバイト列を受け付ける
  • isp=: 表示可能文字を ASCII に限定する
  • if has("multi_lang"): Vim が --enable-gui=no --with-features=tiny でコンパイルされている場合のエラーを回避するための if 文
  • language C: 各種メッセージを英語にする
  • if has("autocmd"): vim-tiny でエラーになるのを回避するための if 文
  • filetype off: ファイルタイプに応じた文法解釈等を一切行わない

やりたいけどできていない設定 (or bugs):

  • 行頭で s または lc0 した場合に、$ が表示されず文字が削除されてしまうのを、通常の vi と同じように $ 表示となるようにする設定
  • c0 による編集後に、行頭で . を押してリピート (もちろん失敗する) の後、行頭ではない場所で . を押してリピートを押した時に、通常の vi のように正しくリピートする設定
    • この操作をすると、vim は入力モードに入ったままになるという、どう見ても vi ではない動作をする (通常の vi では、. で入力モードに入ることはできない)
    • この他、行頭で c0 を操作するとその次の . によるリピートがうまくいかないという問題もある

パッチ