【发布时间】:2022-01-04 07:35:58
【问题描述】:
在某些情况下,当我输入箭头键时,它会在屏幕上输出字符串^[[A、^[[B、^[[C、^[[D。我正在使用 tmux 和 oh-my-zsh 环境。
情况包括:
- 启动服务器,tmux 中的窗格正在为持续运行的进程工作。当服务器进入断点时,我使用
up箭头键查找以前的历史记录,但屏幕输出^[[A字符串。
为什么以及如何处理它?
【问题讨论】:
在某些情况下,当我输入箭头键时,它会在屏幕上输出字符串^[[A、^[[B、^[[C、^[[D。我正在使用 tmux 和 oh-my-zsh 环境。
情况包括:
up箭头键查找以前的历史记录,但屏幕输出^[[A字符串。为什么以及如何处理它?
【问题讨论】:
简而言之,这正是计算机所看到的从您的键盘发送的内容。
您实际上需要一些实用程序,例如 bash 中的 readline 库来转换字符序列,例如^[[D 用于光标移动操作,例如←。很多时候这已经提供,我们只是认为这是理所当然的。
与 Esc (0x1B)、Space (0x20) 或
Del (0x7F),没有为
箭头键,这是在计算机历史上很晚才发明的。
当你按下箭头键时,键盘实际发送的是一个序列 的组合。一种流行的组合是
| Arrow Key | Control Sequence Introducer (CSI) |
|---|---|
| ↑ | ESC [ A |
| ↓ | ESC [ B |
| → | ESC [ C |
| ← | ESC [ D |
ESC 键(ASCII 值 27 十进制,033 八进制或 0x1B 十六进制)相当于 Ctrl + [,显示为^[。
因此,您看到的是您的键盘实际发送的内容。你按下←,计算机收到ESC [ D,正好是^[[D。
【讨论】:
^[[D 而普通的 zhs 和 bash(包括 tmux 中的 bash)得到右箭头左操作?