スキップしてメイン コンテンツに移動

のどか(と窓使いの憂鬱)の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を使えないときなどに使ってみてください。

コメント

このブログの人気の投稿

日記をつけはじめて1年とちょっと経ったまとめ

日記をつけはじめて1年とちょっと経ったまとめ 去年(2017)の 1/11 から日記をつけ始め、気づくともう1年以上ほぼ毎日つけていました まさか習慣化するとは思っていなかったんですが、意外と続いたので一旦まとめておこうと思ってのエントリ このエントリでは どういう手法で続けてきたか や 続けてきた結果どうなったか などをまとめておいて、自分用の改善材料にすること、及び、このエントリを見た人の判断材料にすることを目的としています …ので、書き始めた主要因である書籍 日記の魔力 については、覚えている内容を参考にする程度で、本自体の紹介はほぼしないです(読み返すのが面倒だっただけじゃないです) まとめ 書いてみたら長くなったので、まとめから 自分用のフォーマットを整えれば意外と書くのは楽 愚痴も悩みもとりあえず文字に吐き出すと精神衛生上良い 忘れっぽいと思っていたら、思っていたより数倍物事を忘れていることに気づく 万が一興味を持ったら一度 日記の魔力 を読んでみては 今後は… これまで通り毎日ログを書く ふりかえりの意義を再考して、ちゃんと毎週&毎月ふりかえるようにする ふりかえりの中で、どういうログを書いておくと使いやすいか考えて、日記自体も改善する 以降、自分のふりかえりも兼ねているため長文ですが、つらつらと書きます きっかけ 最初のきっかけは、 Twitter のタイムラインに流れてきたブログのエントリ 思考や行動を改善できる「日記の魔力」とは の引用…だった気がする(この時はまだログをつけていなかったので記録も記憶も残っていない…) ここで紹介されている 日記の魔力 という本を一通り読み、本に書いてあるとおりに 騙されたと思って日記を書き始めてみよう と思ったのが最初の一歩 手法 記憶が朧げですが、確か本の著者の方の手法は ワープロかPCか何かで、毎日のログを隙間時間にファイルに記述する 10日に一度くらいのスパンでそれまで書いた日記をふりかえる ふりかえりの中で、自分が人生で追っていきたい主題みたいなものに関連する内容を別のファイルにコピペして貯めていく みたいな形だったはず。色々と細かいルール(天気などの後から調べれば分かることは書かない等)が少しあった気がするけれど、既に覚えて...

あけましておめでとうございます 2020

あけましておめでとうございます。 去年は1年通して仕事が忙しかったことを言い訳に、何も抱負を達成せずにのんべんだらりと過ごしてしまった一年でした。 去年一切達成できなかった抱負ですが、盛大にハードルを下げつつ、今年も書いておこうと思います。 - 英会話コースを受講する - 隔月で新しいことを体験する(間の月は次の月にやることを考える) - 個人でゲームを作成してプラットフォームへ上げる - 4半期ごとに達成状況を確認して、余裕があったら目標を追加する 以上です。 今年もよろしくお願いいたします。

Firefoxのvim化アドオンVimperatorを使ってみた

Firefoxのアドオン Vimperator をここ1,2か月ほど使っています。 機能的には、知る人(訳:Linux触る機会がある人)ぞ人知るテキストエディタvi又はvimの操作をFirefoxの操作に組み込んでしまおうというもの。 vimに慣れている人なら、導入して少し覚えるだけでマウスを使わずに普通のブラウジングはすべてキーボードで完結できるようになります。 タブのURLコピーや新しいタブでクリップボードにあるURLや検索文字列の検索をボタン一つで開いたり、タブ操作をキーボードの操作のみで出来るなど、慣れればかなり便利で、現在自宅、学校、仕事先すべてのPCに導入するまでに至っております。 操作詳細などは FirefoxのVimperatorがすごく便利 Firefox拡張:FirefoxをVim風のキーバインドで操作するVimperator このあたりを参照してもらえば主要な操作はわかります。直で言ってもらえれば自分が個人的に作ったよく使う操作一覧などお送りします。 さくさく動くのでほとんど満足なのですが、唯一コピペのWindowsデフォルトであるCtrl+cやCtrl+v等の操作が競合してしまうため、感覚的にコピーしたいと思った時にCtrl+Cを押してコピーできていないことによくはまってしまうことが難点な感じです。 今のところ対応策としてはテキストを選択してShift+yでヤンク(コピー)するか、Ctrl+vで1操作エスケープする状態にしたうえでCtrl+cなどする以外にはなさそうな気がします(他に方法があれば教えてくださいpq)。 ここのキーバインドのon/offなどが簡単にできれば最高なのですが、まだまだ発展途上な感じなので今後に期待。