AtomのキーバインドがJIS配列でバグってる件について
Atomが流行ってるらしいので、vimから乗り換えようとして。
Atomをvimっぽく使うやつとして、次のを入れてみた。(vimから離れなさい)
vim-mode は vim の normal/insert-mode を実現するプラグイン。
ex-mode は、その名の通り、ex-mode を実現するプラグインである。
JIS配列では、ex-modeは起動しない
さて、 ex-mode を入れて「:」を押したハズなのに、何故か起動しない。
ネットの情報を便りに見ると、「shift-:」で起動するそうである。
やってみたら、あら、本当に起動した。
「これ、バグだろ!」
JIS配列では、「shift-:」=「*」である。
つまり、normal-modeで「*」による検索が行えなくなってしまう。
バグとの遭遇
色々調べた結果、原因は Atom の keymap にあった。
atom-keymap/src/helpers.coffee (2015/07/25 最新)
どうやら、keycode を見て、shift/unshift状態をハードコーディングしている。
そして、ここに書かれているのは・・・US配列である。
つまり、この挙動は Atom 側の問題であった。
迂回策
さすがにコード修正は大変なので、次のプラグインで修正したkeymapを作ることにした。
andischerer/atom-keyboard-localization
これを入れると、すぐにキーマップが「da_DK」になってしまうので、「es_ES」等に変更。
そして、次の手順で修正する。
- 「ctrl-shift-P」でパネル起動。
- 「Keyboard Localization」を入力して起動。
- 修正したいキーを押して、修正keymapを作る。
- ファイルに貼り付ける。
- ファイルの絶対パスを設定する。
とりあえず、即席で keymap を作ってみた。
{ "49": { "shifted": 33 }, "50": { "shifted": 34 }, "51": { "shifted": 35 }, "52": { "shifted": 36 }, "53": { "shifted": 37 }, "54": { "shifted": 38 }, "55": { "shifted": 39 }, "56": { "shifted": 40 }, "57": { "shifted": 41 }, "186": { "unshifted": 58, "shifted": 42 }, "187": { "shifted": 43, "unshifted": 59 }, "188": { "shifted": 60, "unshifted": 44 }, "189": { "shifted": 61, "unshifted": 45 }, "190": { "shifted": 62, "unshifted": 127 //間違ってるっぽい? }, "191": { "shifted": 63, "unshifted": 47 }, "192": { "shifted": 96, "unshifted": 64 }, "219": { "shifted": 123, "unshifted": 91 }, "220": { "shifted": 124, "unshifted": 92 }, "221": { "shifted": 125, "unshifted": 93 }, "222": { "shifted": 126, "unshifted": 94 }, "226": { "shifted": 95, "unshifted": 92 } }
これで無事、ex-mode が「:」で起動するようになった。(/・ω・)/
・・・なんか、vim に戻りたくなってきたぞ。(」・ω・)」