簡體   English   中英

在終端中檢測vim,更少等

[英]Detect vim, less, etc. in Terminal

現在,在OS X Yosemite的終端應用程序中,您可以使用鼠標在vim / less /任何東西中滾動。 如何檢測正在運行的程序是否支持這種滾動?

想要支持滾動的程序將一個轉義序列發送到啟用鼠標輸入的終端,例如\\e[?1002h用於報告按鈕單擊。 然后,每當您單擊鼠標時,終端就會將控制代碼發送回程序,告訴您單擊了哪個按鈕以及在何處。 鼠標單擊按鈕4和5即可發送向上或向下滾動。

請參閱XTerm Control Sequences文檔第29頁附近的“鼠標跟蹤”部分。

在bash中嘗試一下:

$ echo $'\e[?1002h'
$ hexdump -C
... click and scroll a bit, then hit enter...
^[[Ma7*^[[Ma7*^[[M`7*^[[M`7*^[[M`7*^[[M`7*^[[Ma7*^[[Ma7*^[[M`1.^[[M`1.
00000000  1b 5b 4d 61 37 2a 1b 5b  4d 61 37 2a 1b 5b 4d 60  |.[Ma7*.[Ma7*.[M`|
00000010  37 2a 1b 5b 4d 60 37 2a  1b 5b 4d 60 37 2a 1b 5b  |7*.[M`7*.[M`7*.[|
00000020  4d 60 37 2a 1b 5b 4d 61  37 2a 1b 5b 4d 61 37 2a  |M`7*.[Ma7*.[Ma7*|
^C
Returned 130 (SIGINT).

啟動鼠標跟蹤的程序(在本例中為bash)將鼠標輸入作為標准輸入上的編碼內容接收。

開源的MouseTerm插件已經可以在Terminal.app中滾動了十年。 您可以查看其源代碼以了解詳細信息。

優勝美地終端監聽備用屏幕轉義序列。 如果轉到首選項→設置→鍵盤,則可以看到“滾動備用屏幕”選項。

有關xterm的“備用屏幕”功能的更多信息:

在VT102模式下,有一些轉義序列可以激活和禁用備用屏幕緩沖區,該緩沖區的大小與窗口的顯示區域相同。 激活后,當前屏幕將保存並替換為備用屏幕。 在恢復正常屏幕之前,將無法保存從窗口頂部滾動出來的行。 xterm的termcap(5)條目允許可視編輯器vi(1)切換到備用屏幕進行編輯,並在退出時恢復該屏幕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM