技術memo

関数型ゴースト

Visual Studio 2012/2013でEmacsキーバインドを使う方法(暫定)

環境

Emacs emulationについて

これのことです。: Emacs emulation 拡張機能

結論から言ってしまうと、ダメっぽいです。

VS2013でのEmacs emulation

この辺を参考にしてインストールします。: VisualStudio2013でEmacsキーバインドを使う - Qiita

VS2012でのEmacs emulation

この辺を参考にしてインストールできそうな気がします。(未検証): Emacs Emulation Extension を Visual Studio 2012にインストールする - Azureの小ネタ (改)

何がダメなのか

Tabキー入力の挙動がおかしくなります。インデント(設定によりスペース4つの場合もあり)の入力ができません。: Emacsキーボード マップ スキーム利用時のタブキーの動作をデフォルトに戻す方法

この記事はVS2008のものですが、現象としては全く同じです。そして

あとでマクロを書いて貼り付けて解決済みにしようと思います。

とだけ書かれて続報がありません。また、その他対応方法も探したけれど見つかりません。(自分で書くのは、最終手段としておいて……。)

対応

XKeymacsの導入

仕方がないのでXKeymacs for 64bit Windowsを使用してみます。: XKeymacs for 64bit Windows Wiki - OSDN

anything.el的なキルリング表示ができないのが辛いところですが、ひとまず何もないよりはだいぶマシっぽいです。(上記VS2012のケースの参考リンクには、XKeymacsではキーを取りこぼしてダメそうとありますが、まあ、しばらく試してみて考えます。)

XKeymacsの設定(プロパティ)から、以下を設定しておきます。(ところで、私の環境ではGUI表示がだいぶ崩れていますが、とりあえず動かすだけなら支障ありません。)

  • 標準
    • kill-ring-max: 10
    • 詳細タブ
      • カテゴリ: その他, コマンド: newlineにCtrl+M, Ctrl+Shift+Mが割り当てられているので、Ctrl+Jに変更(お好みで)
      • その他、お好みでキーバインドを調整
  • 何もなくてもEmacsキーバインドを実現しているアプリケーション(NTEmacs, Firefox(+KeySnail)): 「XKeymacsを無効にする」をチェック

また、XKeymacsの設定(オプション)から、「ログオン時に実行」にチェックしておきます。

Visual Studioの設定

オプション->環境->キーボードから、

  • 「編集.メンバーの一覧」コマンドを、全体でAlt+Mに割り当て(Ctrl+Jが重複するため)
  • 「編集.置換」コマンドを、全体でAlt+Qに割り当て(配置はお好み)

とりあえずこの程度で、試運転してみようと思います。

追記

[2015-9-17]

keyhacも良いらしい、との情報がありました。

kill/yankのインターフェースは、こちらのほうが良さそうです。幾つか気になるところもあるので、設定をカスタムしてやる必要はありそうですが。(具体的にはC-bでのタブ切り替えが動かなかったり、C-sの検索がアプリケーションによっては動かなかったり、Escが2度押しだったりするあたり。)