终端键绑定的配置文件在哪里?

终端键绑定的配置文件在哪里?

我想检查/更改/重新映射我的 Ubuntu 服务器终端中的键绑定。(我没有使用任何 GUI。我指的是基本终端 TTY1)。

我的核心问题是:

  • 终端键绑定的配置文件在哪里?

背景:(我写这个背景是为了帮助读者了解我的观点。)

  • 我想了解我的“低级”终端键绑定,以便我可以更好地配置和使用 Byobu。

  • 如果答案能够的话,我将不胜感激:

    • 解释终端启动的进程顺序/堆栈(因为这将帮助我了解哪些进程正在“窃取”键绑定)

    • 澄清我使用的术语是否错误

答案1

简短答案

直接回答问题:

终端键绑定的配置文件在哪里?

就我的情况而言(Ubuntu 16.04,带有 bash),Serge 的回答很有用。(虽然我不太确定它是否涵盖了所有可能冲突的键绑定,这就是我写这个较长答案的原因。)Bash 在这些文件中配置键绑定:

  • 默认键绑定:/etc/inputrc
  • 自定义键绑定:~/.inputrc

长答案

在本节中,我想更全面一些。虽然 bash 和 readline 会影响键绑定,但它们还涉及其他过程。例如,如何ALT-2绑定到 TTY #2?

概述

作为概述,以下是我在 Ubuntu Server 16.04 机器上涉及的部分。我首先从systemd,Ubuntu 当前的 init 系统。

  • systemd开始systemd_logind
  • systemd_logind使用 启动 TTY1 login
  • login开始bash
  • bash使用该readline库。
  • bash运行~/.bashrc最终开始byobu
  • byobu在我的系统上,用作tmux后端

(注:systemd用于Ubuntu 15.04和16.04。暴发户是 Ubuntu 6.10 到 15.10 的初始化系统,根据https://en.wikipedia.org/wiki/Ubuntu_version_history

实际上,以下组件会捕获一些按键:

  • systemd-logind(陷阱ALT-1ALT-2)。
  • login
  • bash使用readline
  • tmux
  • byobu
  • TTY(TODO:我不知道这是否是其中的一部分systemdlogin

systemd-logind

对于 Ubuntu 16.04,systemd-logind是用户登录的起点。根据systemd-logind 的 Ubuntu 手册页

systemd-logind 是管理用户登录的系统服务。它负责:

  • 跟踪用户和会话、其进程和空闲状态
  • 为用户提供基于 PolicyKit 的访问,以执行系统关机或睡眠等操作
  • 为应用程序实现关机/睡眠抑制逻辑
  • 处理电源/睡眠硬件键
  • 多席位管理
  • 会话切换管理
  • 用户设备访问管理
  • 在虚拟控制台激活和用户运行时目录管理时自动生成文本登录(gettys)

另请参阅logind.conf 的手册页。我没有看到任何关于终端键绑定的提及。

TTY/键盘配置

TTY/键盘配置相关链接:

TTY/键盘布局工具:

bash(带有 readline 库)

gnu.org bash 参考有关于 bash 和 readline 函数的详细文档。

这些配置文件影响键绑定:

  • 默认键绑定:/etc/inputrc
  • 自定义键绑定:~/.inputrc

tmux

tmux 键绑定描述如下:https://wiki.archlinux.org/index.php/Tmux#Key_bindings

用户特定的配置文件应位于 ~/.tmux.conf,而全局配置文件应位于 /etc/tmux.conf。

屏风

Byobu 有默认键绑定可以由用户定义/usr/share/byobu/keybindings/

工作正在进行中

注意:这个答案还在完善中。可能会有错误。(我发现根据我的阅读和推理,陈述看似正确的东西更容易,如果有错就改正。)当它接近完成时,我会更新它并删除此通知。

答案2

根据 bash 手册(可通过命令行访问man bash),可以通过~/.inputrc文件配置自定义键绑定。自定义键绑定的设置方式如下:

  When using the form keyname:function-name or macro, keyname is the name
   of a key spelled out in English.  For example:

          Control-u: universal-argument
          Meta-Rubout: backward-kill-word
          Control-o: "> output"

当终端启动并将控制权传递给您的 shell(bash通常是)时,它会读取配置文件,包括~/.inputrc。readline 库实际上是启用此行为的,它还允许使用viemacs编辑模式。其他 shell 可能不支持 readline,例如ksh,因此您确实需要使用vi/编辑更多。在这种情况下,快捷键与和文本编辑器emacs的快捷键相同。viemacs

byobu 与~/.inputrcbash 的readline: 并无太大关系,它使用了大量自己的自定义键绑定和设置,这些键绑定和设置大多来自它所使用的后端 -screentmux。我建议您阅读手册页和教程,以了解它们的工作原理。

相关内容