在 FreeBSD 的终端中按 ctrl + 箭头键时出现 ;5D

在 FreeBSD 的终端中按 ctrl + 箭头键时出现 ;5D

在 centos 上,我可以通过按 ctrl + 箭头(左或右)跳过一个单词。当我 ssh 进入 FreeBSD 框并尝试相同的模式时,我得到了:

$ tail -f 20120412.log;5D;5D;5D

(每次尝试 =;5天

有办法修复这个问题吗?我正在使用 Ubuntu 12.04 + Terminator。

提前致谢。

答案1

.inputrc主目录中的A将导致ctrl+left在 Ubuntu 上停止工作(例如)。

为了使一切正常运行,请将以下内容添加到~/.inputrc

# Include system-wide inputrc, which is ignored by default when
# a user has their own .inputrc file.
$include /etc/inputrc

答案2

如果你使用 ZSH,那么请使用/etc/zshrc文件。

case "${TERM}" in
  cons25*|linux) # plain BSD/Linux console
    bindkey '\e[H'    beginning-of-line   # home 
    bindkey '\e[F'    end-of-line         # end  
    bindkey '\e[5~'   delete-char         # delete
    bindkey '[D'      emacs-backward-word # esc left
    bindkey '[C'      emacs-forward-word  # esc right
    ;;
  *rxvt*) # rxvt derivatives
    bindkey '\e[3~'   delete-char         # delete
    bindkey '\eOc'    forward-word        # ctrl right
    bindkey '\eOd'    backward-word       # ctrl left
    # workaround for screen + urxvt
    bindkey '\e[7~'   beginning-of-line   # home
    bindkey '\e[8~'   end-of-line         # end
    bindkey '^[[1~'   beginning-of-line   # home
    bindkey '^[[4~'   end-of-line         # end
    ;;
  *xterm*) # xterm derivatives
    bindkey '\e[H'    beginning-of-line   # home
    bindkey '\e[F'    end-of-line         # end
    bindkey '\e[3~'   delete-char         # delete
    bindkey '\e[1;5C' forward-word        # ctrl right
    bindkey '\e[1;5D' backward-word       # ctrl left
    # workaround for screen + xterm
    bindkey '\e[1~'   beginning-of-line   # home
    bindkey '\e[4~'   end-of-line         # end
    ;;
  screen)
    bindkey '^[[1~'   beginning-of-line   # home
    bindkey '^[[4~'   end-of-line         # end
    bindkey '\e[3~'   delete-char         # delete
    bindkey '\eOc'    forward-word        # ctrl right
    bindkey '\eOd'    backward-word       # ctrl left
    bindkey '^[[1;5C' forward-word        # ctrl right
    bindkey '^[[1;5D' backward-word       # ctrl left
    ;;
esac

答案3

除非您更改了默认设置,否则您在 Ubuntu 上使用的 shell 是 bash。在 FreeBSD 上,默认 shell 是 csh。您可以在两个操作系统中使用以下命令更改 shell:

chsh

将 FreeBSD 中的 shell 设置为 /usr/local/bin/bash。Bash 不是 FreeBSD 的一部分,因此如果您还没有安装,请从 ports 安装它:

cd /usr/ports/shells/bash
make install
make clean

最后一件事:不要更改 root 的 shell。这就是“toor”帐户的用途:拥有 root 的所有权限,但您可以将 shell 设置为您想要的任何值。原因是在 toor 下没有任何系统活动运行,因此将该帐户的 shell 更改为您习惯的 shell(或可能更适合用作登录 shell)不会破坏任何东西或让任何人感到困惑。

答案4

您在 FreeBSD 机器上运行的 shell 可能不支持该控制序列。但是,如果不知道您在任一端运行的是什么 shell,就很难确定。

相关内容