2013年1月28日月曜日

Vimの衝撃

十数年前、Spark Station 10あたりを使っていた頃のお話。
メールは MHを使ってましたし、重いってのもありまして emacs/mule系は避けていました。
エディタと言えば、もっぱら vi、やっぱり viですよねっ (^^;)
すっかり jklh移動のキーバインドも慣れた頃、viの拡張機能搭載版のエディタ
vimの存在を知りました。(その拡張機能は tcshに出会った時くらいに衝撃を覚えました)
当時はマルチバイト未対応だったので 独自の日本語対応版Jvim+onewとか使ってました。
最近では vimは Windows版などもリリースされておりますので、
未だに vimは愛用させていただいております。(マルチバイト対応の Vim6.0良いですよねっ)

vi と比べて vimの優れる点と言えば、、、
  1. カット&ペースト機能 (箱型も可能)
  2. 画面分割して分割表示や複数ファイル表示が可能
  3. UNDO/REDOが無限
  4. レコーディング機能

他にもたくさんあるのですが、まぁ切がないと言うか、たぶん使い切れていないと言うか…(^^;)
そんな vimユーザが贈る、便利な .vimrc設定メモっ !!!

---------------------------------------------------------------------------------------
set report=1          ... 一括置換とかした時のレポート下限値(一個でもレポートさせる設定)
set showmode          ... 現在のステータスをステータス行に表示(INSERTだとか、REPLACEだとか)
set ls=2              ... ステータスバーのカラー反転?
set ic                ... 検索や置換時に大文字/小文字を区別しない
set tabstop=4         ... tabstop 8は横に間延びしすぎて嫌いです…
set nobackup          ... 自動バックアップとかいらない人向け
set nowrap            ... 1行が長い場合表示を折り返してくれるのを抑止
set ruler             ... 今何行目? 何文字目? をステータスバーに表示してくれる機能
set undolevels=1000   ... UNDO/REDOの上限値設定
"
map ; :               ... コロンよりセミコロンが好きなおおちゃくな人向け
map v @a              ... レコーディング a の発動
map b @b              ... レコーディング b の発動
map W ^W              ... CTR+Wって指つりますよね…な人向け
map > ^W+             ... 複数表示させているときの画面拡大
map < ^W-             ... 複数表示させているときの画面縮小
---------------------------------------------------------------------------------------

特にレコーディング機能は慣れると便利ですので、簡単な例題をご紹介しておきます。
.vimrcの設定として上の"map v @a"は仕込んでおいてください。

[例題] 1~100の数字を 1行に一つ記述。

1
2
3
~中略~
98
99
100

上記のようなイメージです、これを vimのレコーディング機能を用いてやるとどうなるか。

[step.1] まず、1行目に 1と書く。
[step.2] qa と打って レコーディング開始 (レコーディング aに記憶開始)
[step.3] yyでヤンクし、pでペーストする。
[step.4] 既にペーストした行に移動しているはずなので、ここで CTL+a (数字がインクリメントされる)
[step.5] q と打ち、レコーディング記憶の終了。
[step.6] あとは vを連打(mapしていないなら@a)、と言うか押しっぱなしで ok。
         あっという間に 1~100のナンバリングが!!

まぁ、これはあくまで例題で実用性は無いのですが、もっと複雑な組み合わせとかにも使えますし、
それまでは、あ"~ scriptで処理するか~、、、てなことも、vimのレコーディング機能で出来てしまう、
…と言うことも結構ありました。 良かったらご参考まで。

それではまた。

造花のインテリアにご興味のある方は、造花の通販まで宜しくです。