归位键在终端中不起作用


13

我正在使用GNOME Terminal 2.7.3和zsh 4.3.9(x86_64-unknown-linux-gnu)

Home并且End不起作用。当我按它们时,什么也没发生,什么也没显示。但是当我按shift + Home(滚动到shell输出的开头。)时它们也可以工作,并且在其他GUI程序中也可以工作。我用谷歌搜索并尝试了以下方法。不用找了 :(

  885  bindkey "\e[1~" beginning-of-line
  886  bindkey "\e[H" beginning-of-line
  887  bindkey "\e1~" beginning-of-line
  888  bindkey "\eH" beginning-of-line
  889  bindkey "\e[0H" beginning-of-line

PS:当我在最后一个选项卡,然后按Ctrl + pagedown我被;5~打印在屏幕上。这有什么线索吗?


你有没有.inputrc在你的home目录?新创建的用户会发生这种情况吗?这是否总是发生,还是有一天开始?
bahamat 2011年

不,我没有.inputrc。我不允许创建新用户。总是这样。我ctrl +a和和在一起住ctrl+e
巴尔基2011年

1
我想在那种情况下我不会建议ctrl+actrl+e;-)
bahamat 2011年

Answers:


4

我现在正在使用fedora,但我建议您仔细阅读Archlinux的Wiki ,所有这些:Home和End键不起作用

我做了什么来解决它:

  1. 按Ctrl-V Home键,将打印Home键的转义序列。这是不是 \e[4~\e[1~我预计是通过看/etc/inputrc。是[H[F

  2. 提取终端信息 infocmp $TERM >terminfo.src

  3. 打开文件进行编辑,例如vim terminfo.src,寻找khomekend它分配给的东西,比方说khome=\E[1~kend=\E[4~它是不是在这种情况下工作。删除它,并将其替换为您在步骤1中找到的顺序,因此对我来说,编辑后为:khome=\E[Hkend=\E[F

  4. 如果您想安全演奏,请确保未将[F[H(或您刚刚使用的任何顺序)分配给其他东西,否则事情会变得混乱!

  5. 运行tic terminfo.src创建~/.terminfo目录。

  6. .zshrc所有其他命令之前,添加:export TERMINFO=~/.terminfo

打开一个新的终端窗口,您应该一切正常,家庭和终端必须现在可以正常工作。

PS:从理论上讲,bindkey方法应该可以使用,并且更简单,但是对我而言却不是。


还在CentOS + bash中进行了测试-可以!谢谢您:)
Kasia Gauza

6

由功能键和光标键发送的转义序列由转义字符和可打印字符组成。按Ctrl+ V然后Home。这将从字面上插入转义序列。然后将bindkey说明添加到您的~/.zshrc

该指令可能是(请注意O,不是0):

bindkey '\e[OH' beginning-of-line
bindkey '\e[OF' end-of-line

当我按Ctrl再按Home时,什么也不会打印。什么都没发生。尝试将0也更改为O。
balki 2011年

@balki是Ctrl + V,而不是Ctrl。我刚刚意识到答案中存在格式问题。
吉尔斯(Gillles)“所以-别再邪恶了”

谢谢!:)我现在习惯了ctrl + aand ctrl +e和vi模式
巴尔基

5

我发现我必须先按CTRL-v,放开,然后按HomeEnd键才能分别获得序列^[[H^[[Ffor HomeEnd。将以下行添加到.zshrc文件中为我解决了这个问题:

bindkey '^[[H' beginning-of-line
bindkey '^[[F' end-of-line

2

将这些行添加到/etc/zshrc,然后执行source /etc/zshrc(从此处获取

bindkey '\e[1~'   beginning-of-line  # Linux console
bindkey '\e[H'    beginning-of-line  # xterm
bindkey '\eOH'    beginning-of-line  # gnome-terminal
bindkey '\e[2~'   overwrite-mode     # Linux console, xterm, gnome-terminal
bindkey '\e[3~'   delete-char        # Linux console, xterm, gnome-terminal
bindkey '\e[4~'   end-of-line        # Linux console
bindkey '\e[F'    end-of-line        # xterm
bindkey '\eOF'    end-of-line        # gnome-terminal

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.