我正在尝试阅读两篇大型文档 - 内容相同但语言不同,在 NP++ 中并排显示,并开启同步垂直滚动。这当然有效,直到我打开自动换行。
使用自动换行时,一个文档的行比另一个文档的行大,这意味着当我向下滚动时,文档会慢慢不同步。
有什么解决办法吗?
答案1
如果你使用的是 Windows,你可以为每个文档打开 2 个 Notepad++ 实例,然后使用自动热键您可以创建一个脚本,每次执行鼠标滚轮旋转时,将第一个窗口的相同鼠标滚轮旋转复制到第二个窗口。如果我是你,我会寻求帮助这里。他们很有可能想出比我更好的解决方案。
对于 Linux,由于 AutoHotkey 无法在其下工作,因此您应该使用自动识别。
编辑:
我找到了它的代码这里:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
#SingleInstance Force
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
Process, Priority, , High
SetTitleMatchMode, 2
; Set your desired app names here. It is enough to use a part of the window's title
PART_OF_TITLE_OF_APP_A := "Notepad++"
PART_OF_TITLE_OF_APP_B := "Word"
GroupAdd, Scroll_Group, %PART_OF_TITLE_OF_APP_A%
GroupAdd, Scroll_Group, %PART_OF_TITLE_OF_APP_B%
SetWinDelay 0
#If (WinActive(PART_OF_TITLE_OF_APP_A) && WinExist(PART_OF_TITLE_OF_APP_B))
|| (WinActive(PART_OF_TITLE_OF_APP_B) && WinExist(PART_OF_TITLE_OF_APP_A))
WheelUp::
WheelDown::
PgUp::
PgDn::
Up::
Down::
MouseGetPos, mX, mY
Send {%A_ThisHotKey%}
GroupActivate Scroll_Group ; activate the next window of this group
If (A_ThisHotKey = "WheelUp" || A_ThisHotKey = "WheelDown")
MouseMove, 200, 200, 0 ; move the mouse over the currently active window
Send {%A_ThisHotKey%}
GroupActivate Scroll_Group
MouseMove, mX, mY, 0
return
要使用此代码,请安装 AutoHotkey,然后将上述代码保存到名为 的文件中mouse_scroll_sync_over_2_windows.ahk
。
为了演示这一点,我创建了 2 个文本文件test1.txt
并test2.txt
填充了乱码文本,以便我可以看到滚动条移动,然后我进入 .ahk 文件并修改了这 2 个参数,如下所示:
PART_OF_TITLE_OF_APP_A := "test1.txt"
PART_OF_TITLE_OF_APP_B := "test2.txt"
保存 .ahk 文件后,我会运行它。现在,每次我在 Notepad++ 中滚动打开的两个文本文件中的任何一个时,另一个窗口的滚动都会随之滚动。只需确保在滚动之前先用鼠标单击窗口内的文本,否则同步将不起作用。
上述两个参数使用窗口的部分标题。要获取窗口的标题,您应该使用窗口间谍AutoHotkey 附带的工具。
这是在 Windows 10 上使用 AutoHotkey 版本 1.1.34.04 进行的测试。