我一直在尝试将快捷方式绑定CTRL-[到 unindent 函数,但似乎如果您在 nanorc 中输入bind ^[ unindent main
( CTRL-[),文本仍将被格式化为红色,而不是通常的绿色,它告诉您绑定会起作用。我尝试将其更改为bind M-[ unindent main
( ALT-[),但仍然无法正常工作。奇怪的是,两者都CTRL-]有效ALT-]。有没有办法解决这个问题?
我一直在尝试将快捷方式绑定CTRL-[到 unindent 函数,但似乎如果您在 nanorc 中输入bind ^[ unindent main
( CTRL-[),文本仍将被格式化为红色,而不是通常的绿色,它告诉您绑定会起作用。我尝试将其更改为bind M-[ unindent main
( ALT-[),但仍然无法正常工作。奇怪的是,两者都CTRL-]有效ALT-]。有没有办法解决这个问题?
你不能。
终端发送字符,而不是键。(有关详细信息,请参阅键盘输入和文本输出如何工作?)但并非所有键都有对应的字符。当您按下没有相应字符的键或键和弦时,终端会发送代表它的字符序列,或者在少数情况下是不可打印的控制字符)。这些序列总是以特定字符开头,称为转义字符。这个字符也是Ctrl+[发送的。
因此,如果您可以绑定
^[
(Ctrl+ [),那将破坏所有发送转义序列的键。例如,根据终端Up发送三个字符 (^[
,[
,A
) 或三个字符 (^[
,O
, )。A
如果您可以重新绑定^[
,则Up密钥将执行^[
然后插入[
和的操作A
。Alt+char发送转义字符,后跟char。因此,如果您
M-[
重新绑定,您实际上会重新绑定两个字符序列 (^[
,[
),这会破坏一些光标和功能键。Nano 在技术上允许重新绑定
^[
(从 2.5.3 版开始),但这没有任何效果,因为当它读取 时^[
,它会将其归类为转义序列的开始(我正在简化一点)并且它从不查找^[
. Nano 明确禁止重新绑定M-[
。在某些终端上有解决此问题的方法,但只有少数编辑器利用它们。Nano是一个比较简单的编辑器,主要针对不使用终端的用户,不支持该功能。