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


11

私はGNU Emacsを使用します。emacs -nwこれは通常、ターミナルバージョンを起動します(ウィンドウ化されたGUIバージョンとは対照的です)。

私は学校の論文を書いているLaTeXので、flyspell-modeemacs内のスペルチェックに使用します。これはGUIバージョンでは正常に機能しますが、端末ではキーストロークC-.Ctrl- .)で問題が発生します。ttyでは、これは何もせず、terminatororまたはgnome-terminalでは、単に「。」を入力します。

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

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


1
こっちも一緒。あなたは試すましたかEsc- x flyspell-mode?これは私のために動作します。
マスロア

はい、そうです。私は常にから始めますflyspell-modeM-xESC x違いはないようです。
cg505

1
こっちも一緒。しかし、私は両方のバージョンで機能するデフォルトのキーバインディングを見つけましたESC-TAB
マクニス

ええ、ESC TABまたはM-TAB両方が私のために働く。ヒント@McNisseをありがとう。
cg505

回答:


4

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

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


1
この答えは本当に興味深いです。さらに深く掘り下げてみると、DEC VT100の動作は似ていますが、厳密には異なります。コントロールキーと他のキーを同時に押すと、1)キーボードスキャンコードでASCIIテーブルを検索します2)ASCIIで有効なコントロールコードのテーブルを検索します3)有効であれば、ASCII 4のビット5とビット6をマスクします) 送った。そのため、ctrl-J、ctrl-j、およびctrl- *はすべてLFを送信できますが、有効性チェックにより組み合わせが制限されました。参照してください。12月VT100技術マニュアルのセクション4-43(PDFページ93)。
野口健二

'C-.'xtermのemacsで問題なくキャプチャできますが、urxvtまたはstではキャプチャできません。なぜそうなるのでしょうか?
stewSquared

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.