Emacsでリージョンを選択するには、Shift+ を使用することが非常に多いUp/Downです。GUIモードでは正常に動作しますが、オプションemacs
で呼び出された場合-nw
、Shift+でのみ行を選択できますDown。Shift+は、Up仕事は、私はミニバッファでこのエラーメッセージを取得できません。
<select> is undefined
この問題を解決するにはどうすればよいですか?
Emacsでリージョンを選択するには、Shift+ を使用することが非常に多いUp/Downです。GUIモードでは正常に動作しますが、オプションemacs
で呼び出された場合-nw
、Shift+でのみ行を選択できますDown。Shift+は、Up仕事は、私はミニバッファでこのエラーメッセージを取得できません。
<select> is undefined
この問題を解決するにはどうすればよいですか?
回答:
テキスト端末は、キーではなく文字(より正確にはバイト)のみを送信します。キーとキーコード(修飾子付きのキー)は、文字シーケンスとしてエンコードされます。印刷可能な文字を挿入するキーは、それ自体として送信されます。ファンクションキーはエスケープシーケンスとして送信されます。ほとんどのエスケープシーケンスは、文字Escape(?\e
Emacs構文)とそれに続く2つ以上の印刷可能文字で構成されます。emacsで使用するためのターミナルのコントロールキーとアップ/ダウンキーおよびキーボード入力とテキスト出力の仕組みをご覧ください。詳細については。
Emacsには、エスケープシーケンスを独自のキーの概念に変換するメカニズムがあります。変換テーブルinput-decode-map
は、Emacsの起動時に初期化されます(より正確には、新しいフレームが開いたとき:この変数は各端末で異なる値を持ちます)。時々、Emacsは端末から送信されたすべてのエスケープシーケンスを知らないことがあります。
あなたの場合、EmacsにはShift+ によって送信されたエスケープシーケンスの解釈が間違っているようUpです。あなたはとしてそれを解釈することを指示する必要がありますS-up
のではなくselect
。最初に、エスケープシーケンスが何であるかを把握します。で*scratch*
バッファを押しCtrl+ Qその後、Shift+ Up。このコマンドC-q
により、次の文字(エスケープ文字)がそのまま挿入され、その後にエスケープシーケンスの残りが続きます。レッツはそれを言うShift+をUp送信し\e[1;2A
、その後、あなたがで対応するエントリを再定義する必要があるでしょう、私たちのシステムにinput-mode-map
:
(define-key input-decode-map "\e[1;2A" [S-up])
原則として、input-decode-map
端末ごとに設定する必要があります。実際には、同じエスケープシーケンスが異なるキーをエンコードする2つのターミナルを持つことは非常にまれであるため、グローバル設定で問題なく動作します。
define-key
コマンドは、initファイルに追加されます。それは、~/.emacs.d/init.el
または他のいくつかの場所です。あなたはの使用例をたくさん見つけるdefine-key
ために検索することでdefine-key
はなく、バインドにマッピング発見は別の問題です。いくつかのマップが関与しています:global-map
、input-decode-map
、function-key-map
、keyboard-translate-map
。Spacemacsを知らないので、あなたの質問に答える方法がわかりません。標準インターフェイスを乱雑に再定義するSpacemacsなどのパッケージの使用はお勧めしません。
input-decode-map
、いくつかの例を見つけて作業することができました。私はそれを取ることができinput-decode-map
、ユーザは、バッファにテキストを入力している場合に適用さ?
input-decode-map
は、適用されるキーマップの1つです。詳細については、マニュアルを参照してください。
emacsでは、領域はポイント(カーソル)とマーク(「マーク」されたカーソルの以前の位置)で区切られます。
したがって、「領域を選択」するには、そのマークを配置してから、ポイントを移動する必要があります。
マークを配置する最も簡単な方法は、を押すことC-SPC
です。次に、カーソルを移動するだけで、「リージョン」が表示されます。
「地域を選択解除」するには、C-SPC
もう一度押すことができます。
「shift + movement」は他のソフトウェアの一般的なキーバインドであるため、デフォルトでは、この「select region」動作をエミュレートします。ただし、シフトは修飾キーとしてemacsに送信できないため、ターミナルでは機能しません。
一般に、このC-SPC
方法は他の地域を選択する方法よりもはるかに強力であることに注意してください。移動には上/下/左/右に限定されず(たとえば、検索を使用できます)、必要ありません不快なキーの組み合わせを長期間維持すること。
Are the (define-key ...)
init.elに入るコマンド 私が見ることができるどこかに詳細な例はありますか?