Terminal-Emulator
終端仿真器中的中心電流線
我真正喜歡的 emacs 緩衝區(甚至
ansi-term
、shell
和)的一個特性是能夠在終端中“居中”目前行,以便螢幕的上半部分仍然包含一些先前的輸出。eshell``C-l
似乎一個標準(不確定標準的名稱是什麼)終端在
C-l
按下時會將目前行移動到視窗的頂部。有沒有一種通用的方法可以將目前行移動到螢幕的中心?如果沒有,有沒有辦法專門針對 iterm2、終端或已移植到 OS X 的某些終端仿真器執行此操作?
大多數終端仿真器都可以“做到”這一點,但這需要一些工作:
- 假設您要移動的行位於螢幕底部。
- 如果您想將該行向上移動,您可以通過向底行發送一個轉義序列來滾動(或“索引”)該行,並(計數!)將該行向上移動您要滾動的行數。
- 滾動移動螢幕上的所有行。您可以通過設置滾動區域來限制移動的行數。通過這樣做,您可以防止螢幕上半部分的線條消失。但是你的線的原始位置和它的目標之間的線會消失。
這只會使隊伍向上移動。類似地,您可以使用“反向索引”向下移動一行。順便說一下,這些操作不在標準ECMA-48 中,而是在 xterm 之類的任何東西中(基於 DEC vt100)。
ansi-term
支持滾動/索引。最後,這只是上升或下降。要向左/向右移動一行,您可以在游標位於行首時發送用於插入或刪除字元的轉義序列。
這些轉義序列記錄在
terminfo(5)
手冊頁中。我已經提到了這些:
csr
(設置滾動區域)
ind
(索引)
rin
(反向索引)
cup
(游標位置)
ich
(插入字元)
dch
(刪除字元)進一步閱讀: