Project CHANKO

駆け出しサーバエンジニア育成プロジェクト Project CHANKO 始動

vim の嫌いなところを頑張って設定で潰すためのメモ その1

vim に慣れてきて、こんな便利なんだもん、すげーやつだよと思えてきましたが、「だけどここは好きになれない!」って部分もあるのが事実です。

そんなところを潰すための設定をメモります。

INSERT mode から抜けるときに IME OFF

let &t_SI .= "\e[<0t"
let &t_EI .= "\e[<0t"
set timeoutlen=100

まずこれです。

&t_SI はインサートモード開始時に実行されるものを定義しています。「Start Insert」の略ですかね。

&t_EI はインサートモード終了時に実行されるものを定義しています。こっちは「End Insert」かな。

これらに \e[<0t を代入していますが 意味合いとしては「ESC[<0t」ということになります。
このような不思議なコードを入力しておくことで、以下のように ASCI エスケープシーケンスにより定義された動作をします。

ESC [ : CSI モードの開始
< Pn t : Pn が 0 の場合は IME OFF, Pn が 1 の場合は IME ON

これらをインサートモード開始・終了時両方で定義すると、インサートモード抜けたときにうっかり「日本語入力状態でした…イラッ」みたいなことが無くなります。
ちなみに set timeoutlen=100 は、それらの定義が反応するまでの時間です。あまり短い時間にしてしまうと回線遅延によって上手く動作しないことがあるそうです。

INSERT mode に入るときにカーソル形状を変える

let &t_SI .= "\e[5 q"
let &t_EI .= "\e[1 q"

こっちは、カーソル形状 (キャレット) の変更です。

「\e[5 q」は入力箇所に縦線で点滅する、Windowsテキストエディタ等でお馴染みの形状になります。これで勝つる。

「\e[1 q」はインサートモードを終えたらまたボックス型の点滅に戻すやつです。表示状態をインサートモードと変えることで俄然見やすくなります。

インサートモード中
f:id:chankoron:20161028162617p:plain

インサートモードから抜けました
f:id:chankoron:20161028162620p:plain