unindent関数のショートカットをバインドしようとしましたが、CTRL-[nanorcにbind ^[ unindent main
()を入力すると、CTRL-[テキストがまだ一般的な緑ではなく赤にフォーマットされ、バインディングが機能していることがわかります。bind M-[ unindent main
()に変更してみましたが、ALT-[まだ機能しません。奇妙なことに、両方がCTRL-]機能しますALT-]。この問題を解決する方法はありますか?
答え1
あなたはできません。
端末はキーストロークではなく文字を送信します。 (望むよりキーボード入力とテキスト出力はどのように機能しますか?詳しくはこちらをご覧ください。 ) ただし、すべてのキーに対応する文字があるわけではありません。文字がないキーまたはキーコードを押すと、端末はその文字を表す文字シーケンスを送信するか、場合によっては印刷できない文字シーケンスを送信します。制御文字)。これらのシーケンスは、常に次のような特定の文字で始まります。脱出する特徴。この文字はCtrl+[で送信されます。
^[
したがって、バインディング(Ctrl+)が可能な場合は、[エスケープシーケンスを送信するすべてのキーが削除されます。たとえば、端末に応じてUp3文字(^[
、、、)または3文字(、、、[
)を送信します。再バインドできる場合は、キーが実行する操作を実行してから、およびを挿入します。A
^[
O
A
^[
Up^[
[
A
Alt+charエスケープ文字を送信してから性格。したがって、をバウンスすると、M-[
実際には2つの文字シーケンス(^[
、、[
)が再バインドされ、一部のカーソルとファンクションキーが破損します。
Nanoは技術的にリバインディング(バージョン2.5.3ベース)を許可します^[
が、読み取るときに^[
エスケープシーケンスの始まりとして分類し(少し単純化しました)、Not looking for Bindingsで始まるため、何の効果もありません^[
。 Nanoは明示的に再バインドを禁止しますM-[
。
この問題を解決する方法があります一部端末しかし、少数の編集者だけがこれを利用します。 Nanoは、主に端末が存在する場所を使用せず、この機能をサポートしていないユーザーを対象とする比較的シンプルなエディタです。