Notepad++ 7.4.2 要打开的文件之一的会话文件条目:
<File firstVisibleLine="36070" xOffset="0" scrollWidth="1232" startPos="1677659" endPos="1677659" selMode="0" lang="Normal Text" encoding="-1" filename="<pathToFile>" backupFilePath="" originalFileLastModifTimestamp="1547671177" mapFirstVisibleDisplayLine="39239" mapFirstVisibleDocLine="36070" mapLastVisibleDocLine="36102" mapNbLine="56" mapHigherPos="1677659" mapWidth="326" mapHeight="224" mapKByteInDoc="1639" mapWrapIndentMode="1" mapIsWrap="yes" />
(1)文件(长度每天变化)加载后,我想在窗口顶部看到文档的最后 16 行。
如果不可能:(2)我怎样才能始终看到文档的最后 x 行?(x = 窗口的行数)
选项“设置 | 首选项 | 编辑 | 启用超出最后一行的滚动”被选中。
答案1
我不知道如何自动滚动到选项 (1) 的末尾,但对于选项 (2):如果你有Python脚本,您可以使用它editor.documentEnd()
来滚动到活动文档的末尾。要自动在打开时滚动到末尾,请运行以下脚本:
# encoding=utf-8
"""in response to https://superuser.com/questions/1395356/open-a-session-file-and-show-the-last-document-lines-at-the-top-of-the-window"""
from Npp import *
def su1395356_ScrollToEnd_Callback(args):
"""this will scroll to the end of the current file"""
b = args['bufferID']
notepad.activateBufferID(b)
editor.documentEnd()
def su1395356_EndCallback():
"""This deactivates (clears) the scroll-to-end callback"""
notepad.clearCallbacks(su1395356_ScrollToEnd_Callback)
if __name__ == '__main__':
"""This registers (activates) the scroll-to-end callback"""
su1395356_EndCallback()
notepad.callback(su1395356_ScrollToEnd_Callback, [NOTIFICATION.FILEOPENED])
运行此脚本后打开的每个文件都应滚动到缓冲区的末尾。
要停止此回调,插件 > PythonScript > 显示控制台,然后su1395356_EndCallback()
从直接行运行。或者,可以将结束回调放在单独的脚本中,该脚本首先导入此脚本,然后调用该su1395356_EndCallback()
函数。
如果您重新启动 NPP,回调将不再有效,因此您需要再次运行该脚本。或者,您可能希望从您的 导入此脚本,startup.py
使用插件 > Python 脚本 > 配置...将“初始化”设置为“ATSTARTUP”,这将使其自动启动
如果你没有startup.py
,你可能需要使用配置...对话框将其添加到菜单项列表;完成此操作并重新启动 NPP 后,您可以使用设置 > 快捷方式映射器分配键盘快捷键。
编辑:针对 (1) 进行计算:编辑第一个函数并添加另一个函数,如下所示。n=16
根据需要将其设置为任意多行,或将其设为参数。这只是一个起点。
def su1395356_ScrollToEnd_Callback(args):
"""this will scroll to the end of the current file"""
b = args['bufferID']
notepad.activateBufferID(b)
su1395356_AlternateScrollToLastNLines()
def su1395356_AlternateScrollToLastNLines():
"""will scroll the last n, assuming **Settings | Preferences | Editing | Enable scrolling beyond last line** enabled"""
n = 16
editor.scrollToEnd()
for i in range(n-1): # use n-1 because one row is already visible
editor.lineScrollUp()