(cygwin や mingw の)mintty ターミナル上の vim で、カーソル形状をモードによって次のように変えたい。
- 通常はブロック型点滅カーソル
- 挿入モード時はライン型点滅カーソル
vimrc の設定
vimrc に次を追加すればよい。
let &t_ti.="\e[1 q"
let &t_SI.="\e[5 q"
let &t_EI.="\e[1 q"
let &t_te.="\e[0 q"
(引用元 : http://code.google.com/p/mintty/wiki/Tips#Mode-dependent_cursor_in_vim )
起動・終了時、モード切替時に、mintty の制御シーケンスを使ってカーソル形状を変えている。
参考:mintty の制御シーケンス
mintty でカーソル形状を変える制御シーケンスは以下のとおり。
- ESC [ 0 SP q ⇒ mintty のデフォルト設定
- ESC [ 1 SP q ⇒ ブロック型、点滅あり
- ESC [ 2 SP q ⇒ ブロック型、点滅なし
- ESC [ 3 SP q ⇒ 下線型、点滅あり
- ESC [ 4 SP q ⇒ 下線型、点滅なし
- ESC [ 5 SP q ⇒ ライン型、点滅あり
- ESC [ 6 SP q ⇒ ライン型、点滅なし
(参照 : http://code.google.com/p/mintty/wiki/CtrlSeqs#Cursor_style )
この制御シーケンスは、VT510 ベースに mintty 独自拡張を追加した感じらしい。
余談
ちなみに、制御シーケンスをテキストファイルに記述するときに、vim で C-v C-[ と入力して ESC コード(表示上は ^[ になる)を直接埋め込んでいるのをよく見かける。
でも、上記の設定で ESC コードを "\e" と書いているように、普通のテキスト文字だけで記述できることが多い。
個人的には、テキストファイルに制御コードを埋め込むのは好きではないので、テキスト文字で記述できるときはなるべくそうしている。