mac+vscodeで範囲指定するには
問題点
特に何も考えずにMACにscodeをインストールし、awesome-emacs-keymapという拡張機能を載せて、ctrl-space(c-space/^space/C-SPC)をしても範囲指定(set-mark-command)が始まりません。
emacsなどではこれで範囲指定が始まります。これができないと、マウスに手を伸ばすとか、Shiftキーを押しっぱなしにする必要が出てきます。Shiftキーの場合にはカーソルキーを使わないといけませんよね。つまりどちらの選択肢でも手がホームポジションから離れてしまう。これものすごく不便なわけです。
やったこと
入力ソースのショートカット変更
C-spaceで入力ソースが切り替わる画面がポップアップしてきます。
そこで色々調べてみると、
VSCode でもEmacsのマーク機能を使いたいという記事を見つけました。
なるほど。ここにはc-@で動くということが書いてあります。やってみましたが、うまく動きません。もしかしてawesome-emacs-keymapが動いていないのか、とか思ってしまいます。awesome-emacs-keymapでキーバインドを調べてみると、たしかにc-spaceとかc-s-2と書いてあって、英語版のキーボードだと2のシフトで@マークだということを考えると問題なさそう。でも私は日本語キーボードを使っています。これが原因かも。いや、そもそもvscodeでc-@を打つとターミナルモードが起動しますので、他の拡張機能がc-@を奪っている可能性もあります。
いろいろと拡張機能を入れちゃったので、どれが原因かわからず。涙
またググってみていると、macの設定の中のキーボードからショートカットにいき、入力ソースを選択すると、前の入力ソースを選択とか入力メニューの次のソースを選択などのショートカットの設定が見えて、この機能にc-spaceが割り当てられていることがわかりました。
これを外すと確かにc-spaceを押下しても「入力ソースの選択」は出なくなりました。しかしvscode上での範囲の選択開始になりません。
emacsでやる?
半分諦めてemacsで入力をするかなぁなどと考え、調べてみたら、emacs mac portが良さげ。早速インストールを開始。30年くらい前にSun Microsystemsのワークステーションで使っていたemacsを久しぶりに使うか、とインストール後にtutorialをちょこちょこやって記憶を取り戻します。
おお、確かにBufferを切り替えながら色々やったなぁ。もう覚えていないけど。c-x 1など忘れていましたので、大変でした。とはいえざっと思い出せていい感じかな。
spotlightの設定変更
emacsの世界に行ってしまうか、と思い始めていましたが、ちょっと待てと、改めてググってみていたらC(Control)-スペースで Spotlight が起動されてしまうというページにSpotlightが邪魔をしているというのも見つけました。そこでmacの設定のSportlightの設定を選びます。そうするとキーボードショートカットのところにc-spaceがありました。
これを変更して再度vscodeを動かしてみましたが、やっぱりダメ。vscodeでc~spaceを押下しても、範囲指定の開始になりません。
再起動でやっと動く
もしかして、と気がつき、vscodeの再立ち上げをしてみました。でもだめ。こうなったらmacの再起動もしてみました。
おお、そうしたら、やっとvscodeの範囲指定がc-spaceでできました。
macのどこをいじると再起動しなければならないのかよくわかっていませんが、これで今はうまくいきました。
おわりに
mac初心者で、windowsから引っ越してきたばかりであるため、macの設定などについてよくわかっていません。そのため、適当にいじったらうまくいったというレベルで恐縮です。
もしかしたら他にもハマっている人がいるかもしれないので、メモを残しておきます。というのは私がググった限りでは入力ソースとspotlightの両方に引っかかっている可能性が書いてある情報が見つからなかったためです。ま、よく探せばあるのかもしれませんが。
注:あとで再度探してみたら、Emacs 超クイックリファレンスの「4.カット/コピー/削除」の所にc-spaceが「古いOSXではSpotlight検索、新しいOSXでは日本語入力モード」に割り当てられているという記述がありました。やっぱりよく探せばあったのか。でも自分のMACだと両方に引っかかったけど。
以上