web-dev-qa-db-ja.com

Emacs C-。ターミナルで動作していません

私はGNU Emacsを使用します。通常は、ターミナルウィンドウを起動するemacs -nwのように(ウィンドウ化されたGUIバージョンではなく)。

LaTeXで学校の論文を書くので、emacs内のスペルチェックにflyspell-modeを使用します。これはGUIバージョンでは正常に機能しますが、端末ではキーストロークC-.Ctrl-.)。 ttyでは、これは何も行いません。また、terminatorまたはgnome-terminalでは、単に「。」を入力します。

ウィンドウバージョンで行うこと(スペルミスのあるWordのスペル候補を表示する)を実行するにはどうすればよいですか?

編集:これが重要な場合、私はUbuntu 12.04とEmacs 23.3.1を使用しています(これは12.04リポジトリのデフォルトだと思います)。

11
cg505

この質問の重要な部分はすでにコメントで回答されているように見えますが、好奇心が強い場合に根本的な原因に対処するために、ctrl-と思います。端末エミュレータのいくつかの制限のため、端末では機能しません。標準端末では、ctrlは、マイナス64キーを押したASCIIコードを送信するように定義されています(これが、ctrl-J(74)が改行(10)を送信し、ctrl-I(73)がタブを送信する理由です(9)など)。ピリオドのASCIIコードは46であるため、64を引くと-18が得られます。これは負であり、負のASCIIコードがないため無効であり、emacsが受信して理解するものはありません。

Emacsをウィンドウモードで実行すると、ターミナルエミュレーターメカニズムがバイパスされ、代わりに、より堅牢なX11のキーボード処理が使用されます。これにより、より不明瞭なキーストロークを処理できます(各キーストロークをASCII文字に減らすのではなく、プログラムは元のキーと適用可能なすべての修飾子を個別に受け取ります)。したがって、ttyベースのemacsにctrl-を処理させることはおそらく不可能です。端末エミュレーター(およびおそらくemacs)にカスタム変更を加えない限り。

4
Paul

上記の答えはなぜで良い説明を与えますが、それは機能しませんが、実際には対処しません動作させる。 iTerm2の場合、 エスケープシーケンスのキーマッピングを追加 でこれを解決できます。 terminatorまたはgnome-terminalに似たようなものがあると思います

0
Chris