せっかくのどかを購入したのにあんまりキーバインドの改造をしていないので、練習がてらざっくりとvim風キーバインド設定を書いてみました。
多分窓使いの憂鬱でも動きます。動作確認はしていないです。
個人的に以下のキーバインドを先に行っているので、それ前提で見ていただければ。
で、以下がvim風キーバインド
色々試行錯誤しながら書いていたので色々冗長かもしれません。
最初のトリガーは一般的なvimのエスケープなので、普段エスケープを Ctrl + [ でやっている人は別のキーに変えてください。
vimモードから戻る操作は以下を定義しています。最初以外は入力モードに入る際と似た挙動をします。
完璧にvimの動作をするわけじゃないですが、結構動きます。
なんらかの要因でテキスト編集にvimを使えないときなどに使ってみてください。
多分窓使いの憂鬱でも動きます。動作確認はしていないです。
個人的に以下のキーバインドを先に行っているので、それ前提で見ていただければ。
# CapsLock 単発だと Esc になり、押しながら何かを押すと Ctrl になる
mod ctrl += !!英数
key *英数 = *Esc
# SemiColon を Enter に
key *IC-SemiColon = Enter
# Control を押しながら SemiColon で SemiColon
key *IC-C-~S-SemiColon = SemiColon
で、以下がvim風キーバインド
### vim mode
## vim mode トグル
key C-OpenBracket = &Toggle(Lock0)
## keymaps
# 一行ヤンク
keymap2 LineYankReady
key L0-*S-*C-*A-Y = Home S-End C-C Home
# 一行デリート
keymap2 LineDeleteReady
key L0-*S-*C-*A-D = Home S-End C-X
# 一行カット
keymap2 LineCutReady
key L0-*S-*C-*A-C = Home S-End C-X
# 頑張って一番上まで戻ろうとする
keymap2 GoTopReady
key L0-*S-*C-*A-G = PageUp PageUp PageUp PageUp PageUp
# exモードセーブ
keymap2 ex_mode_save
key L0-*S-*C-*A-Enter = C-S
key L0-*S-*C-*A-SemiColon = C-S # Enter代替
# exモード
keymap2 ex_mode
key L0-*S-*C-*A-W = &Prefix(ex_mode_save)
keymap Global
## vim mode 時の挙動
# default mode (Lock0 : on)
key L0-*S-*C-*A-_1 = &Undefined
key L0-*S-*C-*A-_2 = &Undefined
key L0-*S-*C-*A-_3 = &Undefined
key L0-*C-*A-_4 = &Undefined
key L0-S-*C-*A-_4 = End
key L0-*S-*C-*A-_5 = &Undefined
key L0-*S-*C-*A-_6 = &Undefined
key L0-*S-*C-*A-_7 = &Undefined
key L0-*S-*C-*A-_8 = &Undefined
key L0-*S-*C-*A-_9 = &Undefined
key L0-*S-*C-*A-_0 = &Undefined
key L0-*S-*C-*A-Q = &Undefined
key L0-*S-*C-*A-W = →
key L0-*S-*C-*A-E = &Undefined
key L0-*S-*A-R = Delete &Toggle(Lock0, off)
key L0-*S-C-*A-R = C-Y
key L0-*S-*C-*A-T = &Undefined
key L0-*S-*C-*A-Y = &Prefix(LineYankReady)
key L0-*S-*A-U = C-Z
key L0-*S-C-*A-U = PageUp
key L0-*C-*A-I = &Toggle(Lock0, off)
key L0-S-*C-*A-I = Home &Toggle(Lock0, off)
key L0-*C-*A-O = End Enter &Toggle(Lock0, off)
key L0-S-*C-*A-O = Home Enter ↑ &Toggle(Lock0, off)
key L0-*S-*C-*A-P = C-V
key L0-*C-*A-A = → &Toggle(Lock0, off)
key L0-S-*C-*A-A = End &Toggle(Lock0, off)
key L0-*S-*C-*A-S = &Undefined
key L0-*S-*A-D = &Prefix(LineDeleteReady)
key L0-*S-C-*A-D = PageDown
key L0-*S-*A-F = &Undefined
key L0-*S-C-*A-F = PageDown
key L0-*C-*A-G = &Prefix(GoTopReady)
key L0-S-*C-*A-G = PageDown PageDown PageDown PageDown PageDown
key L0-*S-*C-*A-H = ←
key L0-*C-*A-J = ↓
key L0-S-*C-*A-J = End Delete
key L0-*S-*C-*A-K = ↑
key L0-*S-*C-*A-L = →
key L0-*S-*C-*A-Z = &Undefined
key L0-*S-*C-*A-X = Delete
key L0-*S-*C-*A-C = &Prefix(LineCutReady) &Toggle(Lock0, off)
key L0-*C-*A-V = &Toggle(Lock1, on)
key L0-S-*C-*A-V = Home S-End &Toggle(Lock1, on)
key L0-*S-*A-B = ←
key L0-*S-C-*A-B = PageUp
key L0-*S-*C-*A-N = &Undefined
key L0-*S-*C-*A-M = &Undefined
key L0-*S-*C-*A-Solidus = C-F &Toggle(Lock0, off)
key L0-*S-*C-*A-Colon = &Prefix(ex_mode)
key L0-*S-*C-*A-CircumflexAccent = Home
key L0-*S-*C-*A-Esc = &Toggle(Lock0, off)
key L0-*S-*C-*A-英数 = &Toggle(Lock0, off) # Esc代替
# viasual mode (Lock1 : on)
key L1-*S-*C-*A-H = S-←
key L1-*S-*C-*A-J = S-↓
key L1-*S-*C-*A-K = S-↑
key L1-*S-*C-*A-L = S-→
key L1-*S-*C-*A-D = C-X &Toggle(Lock1, off)
key L1-*S-*C-*A-Y = C-C → ←&Toggle(Lock1, off)
key L1-*S-*C-*A-Esc = &Toggle(Lock1, off) → ←
key L1-*S-*C-*A-英数 = &Toggle(Lock1, off) → ← # Esc代替
色々試行錯誤しながら書いていたので色々冗長かもしれません。
最初のトリガーは一般的なvimのエスケープなので、普段エスケープを Ctrl + [ でやっている人は別のキーに変えてください。
vimモードから戻る操作は以下を定義しています。最初以外は入力モードに入る際と似た挙動をします。
- もう一度トリガーボタンを押す
- エスケープキーを押す
- iを押す
- Iを押す
- aを押す
- Aを押す
- ccを押す
完璧にvimの動作をするわけじゃないですが、結構動きます。
なんらかの要因でテキスト編集にvimを使えないときなどに使ってみてください。
コメント
コメントを投稿