我的触控板使用起来不舒服,因此我的目标是仅使用键盘进行编码。 无论我设置什么键,我的“杀线”热键都不起作用。我确实取消了所有冲突。
简单问题: 有没有办法制作一个热键,那将删除代码行,光标(插入符号)当前位于(不仅是光标后面的所有代码,就像kill-line应该这样做)?
答案 0 :(得分:4)
默认情况下,Kill line
(Windows中默认为Ctrl+K
)仅在Matlab控制台窗口中有效。如果您转到File->Preferences->Keyboard->Shortcuts
并选择Kill Line
操作行,则在下一个表格(标记为Shortcuts for Kill Line
)中,您会看到两列Shortcut
和Tolls with shortcut
。因此,您应该Tools with shortcut
为All 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
现在,您的快捷方式可能会显示在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)更改为您喜欢的任何其他键。