有没有办法在MATLAB中“跳转”?

时间:2013-10-22 16:51:48

标签: matlab user-interface user-controls

在MATLAB编辑器中,您可以使用上/下箭头键滚动线条,并且可以使用页面向上/向下按钮跳过页面。

但是,有没有办法让我一次滚动说10行?还是其他一些可编程的线路?我以为我可以用CTRL键做到这一点,但这似乎不起作用......

感谢。

3 个答案:

答案 0 :(得分:2)

如果您使用的是Windows,则可以使用滚轮设置(位于Control PanelMouse,标签Wheel

Roll the wheel one notch to scroll: 
   The following number of lines at a time: 10

答案 1 :(得分:1)

不是我所知道的,但有一件事情很接近而且我发现非常有用的是使用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 + 输入跳转到下一个单元格。所有这些都可以在File-> Preferences-> Keyboard-> Shortcuts下自定义。

将代码与注释分成逻辑部分是你应该在维护良好的代码中做的事情,所以这几乎不是问题。我一直用它来将脚本划分为一个从文件中加载一些东西的部分(这可能需要很长时间),然后进行一些计算(你可能想要改变几次,而不是每次都重新加载数据) ,然后是另一个部分来制作一个情节(你可能需要多次编辑和执行才能做到正确)。使用单元格模式,您可以逐段浏览代码并根据需要重复多次以使其正确。

答案 2 :(得分:1)

这是一个由两部分组成的解决方案,可让您选择所需的热键和滚动量。我们将首先创建一个函数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)添加到键集(ctrl + shift + up / down)中,用于箭头键('UP'/'DOWN')和小键盘箭头(KB_UP / KB_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解释了EditorMacro及其在UndocumentedMatlab.com的表现非常好。 (我发现他的工具uiinspect对于理解编辑器对象足以编写jumpscroll非常重要。)


最后一节是关于林斌答案的评论,但我还没有S.O.实际把它放在那里的声誉。

如果您使用的是Windows,键盘宏程序AutoHotkey可以解决鼠标问题。在许多其他方面,它可让您通过按键控制鼠标滚轮。而不是设置鼠标滚轮属性滚动更大的数量,您只需按一下键就可以模仿 n 滚轮点击。对于Mac / Linux,可能有类似的东西。