Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 返回键、向上箭头键等的单独键绑定。?_Bash_Terminal_Osx Yosemite_Readline - Fatal编程技术网

Bash 返回键、向上箭头键等的单独键绑定。?

Bash 返回键、向上箭头键等的单独键绑定。?,bash,terminal,osx-yosemite,readline,Bash,Terminal,Osx Yosemite,Readline,我不明白为什么在使用bash的readline时return没有自己的键 使用control+m与使用return相同 如何创建两个单独的键绑定,一个用于control+m,另一个用于return? 这同样适用于向上/向下箭头等。将它们打印为引号表明它们不是一个单独的键,而是一个键序列,因此我不能将该序列用于另一个函数。如果您更改该顺序,您会发现使用任何终端应用程序都很麻烦,因为所有类似POSIX的系统都使用“换行符”作为结束行。ASCII回车符^M通常被转换为换行符(恰好被编码为ASCII换行

我不明白为什么在使用bash的readline时return没有自己的键

使用control+m与使用return相同

如何创建两个单独的键绑定,一个用于control+m,另一个用于return?


这同样适用于向上/向下箭头等。将它们打印为引号表明它们不是一个单独的键,而是一个键序列,因此我不能将该序列用于另一个函数。

如果您更改该顺序,您会发现使用任何终端应用程序都很麻烦,因为所有类似POSIX的系统都使用“换行符”作为结束行。ASCII回车符
^M
通常被转换为换行符(恰好被编码为ASCII换行符
^J
)。如果在终端上运行
stty-a
,您可能会注意到如下情况:

~ (4) stty -a
speed 38400 baud; 40 rows; 80 columns;
lflags: icanon isig iexten echo echoe echok echoke -echonl echoctl
        -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
        -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff -ixany -imaxbel -iutf8
        -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
        -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
        eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
        min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
        stop = ^S; susp = ^Z; time = 0; werase = ^W;
~(4)stty-a
速度38400波特;40行;80列;
lflags:icanon isig iexten echo echok echoke-echonl echoctl
-echoprt-altwerase-noflsh-tostop-flusho pendin-Nokerinfo
-extproc
iflags:-istrip icrnl-inlcr-igncr ixon-ixoff-ixany-imaxbel-iutf8
-ignbrk brkint-inpck-ignpar-parmrk
oflags:opost onlcr-oxtabs-onocr-onlret
cflags:cread cs8-parenb-parodd hupcl-clocal-cstopb-crtscts-dsrflow
-dtrflow-mdmbuf
cchars:丢弃=^O;dsusp=^Y;eof=^D;eol=;
eol2=;擦除=^?;intr=^C;杀死你;lnext=^V;
最小值=1;退出=^\;重印=^R;开始=^Q;状态=^T;
停止=^S;susp=^Z;时间=0;werase=^W;

icrnl的
icrnl
表示回车符映射到换行符。所以如果您断开
return
键,您可以在每次需要换行时键入control/M或control/J。大多数人喜欢只按一个键就可以了。

这里到底有什么问题?你能重新绑定一个特定的密钥吗?能否为每个键设置一个字符/字节?还有别的吗?编辑问题,我想要两个不同的键绑定<接受行需要代码>返回,但⌃+m就是这样浪费的。你可以映射
return
来生成你想要的任何东西,但是
^m
是回车,这是人们所期望的。您必须更改terminfo条目来解决这个问题(希望所有内容都能正确引用)。我想。你在这里担心的
ctrl+m
的什么“浪费”呢?你想用它做什么呢?但是我的
return
键正在生成
⌃M
,因为我想在系统上的任何其他应用程序中保留该功能,并保留修改后的US布局。只有终点站有这种奇怪的行为。@ViktorLexington:啊,我明白你的意思了。它是vt100仿真的一部分,因此任何终端仿真器都会表现出这种行为。GUI没有这种约束。