在 MATLAB 编辑器中,您显然可以使用向上/向下箭头键滚动浏览行,并且可以使用向上/向下翻页按钮跳转页面。
但是,有没有办法让我一次滚动 10 行?或者其他一些可编程的线数?我以为我可以用CTRL键做到这一点,但这似乎不起作用......
谢谢。
在 MATLAB 编辑器中,您显然可以使用向上/向下箭头键滚动浏览行,并且可以使用向上/向下翻页按钮跳转页面。
但是,有没有办法让我一次滚动 10 行?或者其他一些可编程的线数?我以为我可以用CTRL键做到这一点,但这似乎不起作用......
谢谢。
如果您使用的是 Windows,则可以使用滚轮设置(在Control Panel
、Mouse
、 tab 中Wheel
:
Roll the wheel one notch to scroll:
The following number of lines at a time: 10
这是一个由两部分组成的解决方案,可让您选择所需的任何热键和滚动量。我们将首先创建一个函数 jumpscroll,它将插入符号移动任意行数,并保留其列位置:
function jumpscroll(n)
editor = com.mathworks.mlservices.MLEditorServices.getEditorApplication.getActiveEditor;
line_col = editor.positionToLineAndColumn( editor.getCaretPosition );
editor.goToLine( line_col(1)+n, line_col(2) )
Matlab 键盘快捷键不具备调用随机函数的灵活性,但 Yair Altman 的EditorMacro主要解决了这个缺陷。该函数使用 3 个参数调用:组合键、按下这些键时要执行的操作以及宏/快捷方式的类型。查看内部函数文档以了解详细信息。
在命令窗口中运行,以下行将 jumpscroll(n) 添加到箭头键 ('UP'/'DOWN') 和数字键盘箭头 (KB_UP/KB_DOWN) 的键集 (ctrl+shift+up/down) 中。
n = 10; % number of lines to move up or down
EditorMacro('shift ctrl pressed UP', {@jumpscroll,-n}, 'run');
EditorMacro('shift ctrl pressed KP_UP', {@jumpscroll,-n}, 'run');
EditorMacro('shift ctrl pressed DOWN', {@jumpscroll, n}, 'run');
EditorMacro('shift ctrl pressed KP_DOWN', {@jumpscroll, n}, 'run');
现在可以轻松更改跳过的行数或组合键。不幸的是,键绑定只在当前的 Matlab 会话中持续存在,并且必须在每个新会话中重新加载。理想情况下,这些行将进入 startup.m,但这会导致 EditorMacro 在完全加载之前尝试访问编辑器句柄的问题。所以......似乎有必要在启动 Matlab 后手动运行这些行。如果有人有更好的想法,请回复!
该解决方案的两个部分都依赖于 Matlab 的一些隐藏内容,并且可能会在未来的版本中中断。Yair 在UndocumentedMatlab.com上解释了 EditorMacro 以及它做得很好的地方。(而且我发现他的工具uiinspect对于理解编辑器对象以编写跳转滚动至关重要。)
最后一部分是对林斌的回答的评论,但我还没有真正把它放在那里的声誉。
如果您使用的是 Windows,键盘宏程序AutoHotkey可以解决鼠标问题。除此之外,它还可以让您通过按键来控制鼠标滚轮。而不是将鼠标滚轮属性设置为更大的滚动量,您可以通过单次按键模拟n轮点击。Mac/Linux 可能有类似的东西。
不是我知道的,但我发现非常有用的一件事是使用cell mode。它的工作方式是将代码分成逻辑部分,并带有“%% section heading”形式的注释(需要第一个空格):
%% this is section one
some_code_here(); % a normal comment
bla;
%% this is section two
code_for_section_two_goes_here;
如果您随后打开单元格模式(编辑器中的菜单栏->单元格->启用单元格模式),编辑器会通过绘制一些细灰线并更改背景颜色来非常清楚您正在哪个部分工作。这本身并不有趣,但是您可以让 Matlab 只执行脚本当前单元格中的代码,方法是将光标定位在单元格内的任何位置并按CTRL+ Enter。您还可以通过CTRL+ ↑/向上或向下移动一个单元格↓(类似于您想要的)以及更多的操作,例如执行当前单元格并通过CTRL+ SHIFT+跳转到下一个单元格Enter。所有这些都可以在 File->Preferences->Keyboard->Shortcuts 下自定义。
在维护良好的代码中无论如何都应该将带有注释的代码分成逻辑部分,因此这几乎不是问题。我一直使用它来将脚本分成一个部分,从文件中加载一些东西(这可能需要很长时间),然后是一些计算(你可能想要更改几次,而不是每次都重新加载数据) ,然后是另一个部分来制作一个情节(您可能需要多次编辑和执行才能正确)。使用单元格模式,您可以逐节浏览代码,并根据需要重复多次以使其正确。