^[ または M-[ ショートカットをナノのタスクにどのようにバインドしますか?

^[ または M-[ ショートカットをナノのタスクにどのようにバインドしますか?

unindent関数のショートカットをバインドしようとしましたが、CTRL-[nanorcにbind ^[ unindent main()を入力すると、CTRL-[テキストがまだ一般的な緑ではなく赤にフォーマットされ、バインディングが機能していることがわかります。bind M-[ unindent main()に変更してみましたが、ALT-[まだ機能しません。奇妙なことに、両方がCTRL-]機能しますALT-]。この問題を解決する方法はありますか?

答え1

あなたはできません。

端末はキーストロークではなく文字を送信します。 (望むよりキーボード入力とテキスト出力はどのように機能しますか?詳しくはこちらをご覧ください。 ) ただし、すべてのキーに対応する文字があるわけではありません。文字がないキーまたはキーコードを押すと、端末はその文字を表す文字シーケンスを送信するか、場合によっては印刷できない文字シーケンスを送信します。制御文字)。これらのシーケンスは、常に次のような特定の文字で始まります。脱出する特徴。この文字はCtrl+[で送信されます。

^[したがって、バインディング(Ctrl+)が可能な場合は、[エスケープシーケンスを送信するすべてのキーが削除されます。たとえば、端末に応じてUp3文字(^[、、、)または3文字(、、、[)を送信します。再バインドできる場合は、キーが実行する操作を実行してから、およびを挿入します。A^[OA^[Up^[[A

Alt+charエスケープ文字を送信してから性格。したがって、をバウンスすると、M-[実際には2つの文字シーケンス(^[、、[)が再バインドされ、一部のカーソルとファンクションキーが破損します。

Nanoは技術的にリバインディング(バージョン2.5.3ベース)を許可します^[が、読み取るときに^[エスケープシーケンスの始まりとして分類し(少し単純化しました)、Not looking for Bindingsで始まるため、何の効果もありません^[。 Nanoは明示的に再バインドを禁止しますM-[

この問題を解決する方法があります一部端末しかし、少数の編集者だけがこれを利用します。 Nanoは、主に端末が存在する場所を使用せず、この機能をサポートしていないユーザーを対象とする比較的シンプルなエディタです。

関連情報