在终端中检测vim,less等

fum*_*007 1 macos vim terminal osx-yosemite

在OS X Yosemite的终端应用程序中,您现在可以使用鼠标在vim/less /中滚动.如何检测正在运行的程序是否支持这种滚动?

and*_*otn 7

想要支持滚动的程序向终端发送转义序列以启用鼠标输入,例如,\e[?1002h用于报告按钮点击.然后,只要您单击鼠标,终端就会将控制代码发送回程序,告诉您单击了哪个按钮以及在哪里.通过鼠标单击按钮4和5发送向上或向下滚动.

请参阅XTerm控制序列文档第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).
Run Code Online (Sandbox Code Playgroud)

启动鼠标跟踪的程序 - 在这种情况下,bash-在标准输入上接收鼠标输入作为编码内容.

开源的MouseTerm插件已经在Terminal.app中滚动了十年.您可以查看其源代码以获取详细信息.


fum*_*007 7

Yosemite Terminal侦听Alternate Screen转义序列.如果转到首选项→设置→键盘,则可以看到"滚动备用屏幕"选项.

有关xterm的备用屏幕功能的更多信息:

在VT102模式下,有一些转义序列可以激活和取消激活备用屏幕缓冲区,该缓冲区的大小与窗口的显示区域相同.激活后,将保存当前屏幕并替换为备用屏幕.在正常屏幕恢复之前,将禁用保存从窗口顶部滚动的行.xterm的termcap(5)条目允许可视化编辑器vi(1)切换到备用屏幕进行编辑并在退出时恢复屏幕.