无法输入' a'终端中的符号

时间:2015-03-03 01:59:38

标签: bash terminal .bash-profile

我的终端出现了一种奇怪的行为。我的OS X上的iTerm和基本终端都不起作用。我只能输入'A'而不是'a',而不是'a'字母。如果我尝试bash --noediting,那么我可以输入'a',但使用起来非常不舒服。我检查了~/.bashrc~/.bash_profile,但没有发现任何对我来说很奇怪的事情。谁能帮助我? 任何反馈意见。

2 个答案:

答案 0 :(得分:3)

很可能你以某种方式引入了 a 的readline绑定。

作为第一步,尝试这样:( grep参数为$"a",但你不能输入:))

bind -p | grep $'"\x61"'

应打印出来:

"a": self-insert

如果确实如此,那么我的猜测是错误的,你需要去其他地方寻找。如果没有,那么你需要修复它,你可以这样做:

bind $'"\x61"':self-insert

现在您需要在bash启动文件中找到错误的bind命令的位置。我首先要抓住bind。它可能位于源自其中一个文件的文件中。祝你好运。

您还应该检查readline库使用的文件~/.inputrc来初始化它的绑定。

答案 1 :(得分:1)

如果字母a已映射到其中一个控制字符,则可以获得一些有趣的效果。尝试stty -a,但您可能需要输入:

  • stty- Control-V a

获取命令的-a。这应该显示如下:

speed 9600 baud; 65 rows; 135 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 = ^X; lnext = ^V;
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
    stop = ^S; susp = ^Z; time = 0; werase = ^W;

除非我的怀疑是正确的,cchars值中的一个是a