MATLAB:删除行热键?

时间:2015-03-20 14:23:05

标签: matlab keyboard

我的触控板使用起来不舒服,因此我的目标是仅使用键盘进行编码。 无论我设置什么键,我的“杀线”热键都不起作用。我确实取消了所有冲突。

简单问题: 有没有办法制作一个热键,那将删除代码行,光标(插入符号)当前位于(不仅是光标后面的所有代码,就像kill-line应该这样做)?

4 个答案:

答案 0 :(得分:4)

默认情况下,Kill line(Windows中默认为Ctrl+K)仅在Matlab控制台窗口中有效。如果您转到File->Preferences->Keyboard->Shortcuts并选择Kill Line操作行,则在下一个表格(标记为Shortcuts for Kill Line)中,您会看到两列ShortcutTolls with shortcut。因此,您应该Tools with shortcutAll tools而不是Command Window,方法是点击它并选择所有内容。

答案 1 :(得分:0)

有。您需要创建新的快捷方式,将其固定到快速访问工具栏并使用Alt + number(或使用AHK自定义快捷方式)运行

Home - > New - > Command Shortcut

粘贴这段代码并填入Label字段,即"删除行"字符串并检查Add to quick access toolbar

currentEditor = matlab.desktop.editor.getActive;
originalSelection =currentEditor.Selection;
row = originalSelection(1);% get row of cursor
C = strsplit(currentEditor.Text,'\n');% Split text of editor by lines
C(row) = [];%remove current row
currentEditor.Text = strjoin(C,'\n');%join it together
currentEditor.Selection =  [originalSelection(1) 1  originalSelection(1) 1 ];
  % make sure cursor is on the same line and on first position

Shortcut editor

现在,您的快捷方式可能会显示在Search documentation文本框旁边。 按Alt + 1将触发代码并删除编辑器中的行。

现在,您可以借助AutoHotkey将其更改为自定义快捷键。

#IfWinActive MATLAB    ;in MATLAB window
F11::                  ;pressing F11...
Send !1                ;triggers Alt + 1 

编辑:经过一小时的测试后,我不得不说,这是有效的,但遗憾的是不好,特别是对于较大的脚本。有延迟和编辑"闪烁" ...

答案 2 :(得分:0)

Alamakanambra解决方案的问题是它将多个'\ n'统一为一个'\ n'

例如,如果这是您的代码:

y=eye(5)
x=eye(5)


% set m
m = length(x)

% display value of m
fprintf('value of m is: %d', m)

您想删除此行:y = eye(5) 然后运行先前的解决方案将输出以下代码:

x=eye(5)
% set m
m = length(x)
% display value of m
fprintf('value of m is: %d', m)

所需的输出是:

x=eye(5)


% set m
m = length(x)

% display value of m
fprintf('value of m is: %d', m)

解决方案是使用CollapseDelimiters属性,并在strsplit方法中将其设置为false

您可以找到解决方案here

这是完整的解决方案:

currentEditor = matlab.desktop.editor.getActive;
originalSelection =currentEditor.Selection;
row = originalSelection(1)-1;% get row of cursor
C = strsplit(currentEditor.Text,'\n','CollapseDelimiters',false) % Split text of editor by lines
C(row) = [];%remove current row
currentEditor.Text = strjoin(C,'\n');%join it together
currentEditor.Selection =  [originalSelection(1)-1 1  originalSelection(1) 0 ];
  % make sure cursor is on the same line and on first position

答案 3 :(得分:0)

更好的方法是直接使用AHK:

#IfWinActive,ahk_exe MATLAB.exe
    ^d::send,{End}{Home 2}+{Down}{Del}
#IfWinActive

您可以将^ d(ctrl + d)更改为您喜欢的任何其他键。