在终端中检测vim,less等

时间:2014-07-21 01:15:41

标签: macos vim terminal osx-yosemite

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

2 个答案:

答案 0 :(得分:7)

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

请参阅第29页的“鼠标跟踪”部分 XTerm Control Sequences文件。

在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 plugin已在Terminal.app中启用滚动十年。您可以查看其源代码以获取详细信息。

答案 1 :(得分:7)

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

有关xterm&#39替代屏幕功能的更多信息:

  

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