MATLAB或Octave的自动压痕清理器?
有人知道现有的自动清除MATLAB/Octave脚本缩进的方法吗?我有其他人的代码(没有,真的!),这很可怕——没有一个循环或函数缩进,其他行的一半缩进到明显的随机深度 问题是MATLAB不使用支撑,所以C++样式的压头不能工作。Python可能会做一些修改,如果找不到预先存在的解决方案,我会尝试一下 基本上,它只需要在以MATLAB或Octave的自动压痕清理器?,matlab,coding-style,indentation,octave,auto-indent,Matlab,Coding Style,Indentation,Octave,Auto Indent,有人知道现有的自动清除MATLAB/Octave脚本缩进的方法吗?我有其他人的代码(没有,真的!),这很可怕——没有一个循环或函数缩进,其他行的一半缩进到明显的随机深度 问题是MATLAB不使用支撑,所以C++样式的压头不能工作。Python可能会做一些修改,如果找不到预先存在的解决方案,我会尝试一下 基本上,它只需要在以函数,为,如果,而开始的行之后缩进行。。。并且取消缩进以结尾*开头的行,我认为 澄清:正如Jonas所指出的,MATLAB用户可以选择all,然后ctrl+I对缩进进行加密。不
函数
,为
,如果
,而
开始的行之后缩进行。。。并且取消缩进以结尾*
开头的行,我认为
澄清:正如Jonas所指出的,MATLAB用户可以选择all,然后
ctrl+I
对缩进进行加密。不幸的是,我没有访问MATLAB编辑器的权限,如果能够一次自动缩进一批文件也会很好 CTRL+A
(选择全部),然后是CTRL+I
(自动缩进)将在Matlab编辑器中执行此操作 啊,我应该知道emacs和vi会有答案的。我真的应该学一个。不管怎样,我对我正在做的工作感到失望,并将此作为一种置换活动来写。删除+'.test.m'
以替换文件:
#!/usr/bin/env python
import re, sys
def startswith(line=""):
# these need some word-boundary condition, but \b isn't working
ctrlstart = '\s*(function|if|while|for|switch)'
ctrlcont = '\s*(elseif|else|case|catch|otherwise)'
ctrlend = '\s*(end|endfunction|endif|endwhile|endfor|endswitch)'
match = re.match(ctrlstart, line)
if ( match != None ) :
return ['start', match.group(0)]
match=re.match(ctrlcont, line)
if ( match!=None ) :
return ['cont', match.group(0)]
match=re.match(ctrlend, line)
if ( match!=None ) :
return ['end', match.group(0)]
else :
return [False, None]
def main( filelist = list() ) :
for filename in filelist:
nextindent = 0
indentmult = 2
file = open(filename, 'r')
filelines = file.readlines()
for ind in range(0, len(filelines)) :
indentlevel = nextindent
match = startswith(filelines[ind])
if match[0] == 'start' :
nextindent += 1
elif match[0] == 'cont' :
indentlevel -= 1
elif match[0] == 'end' :
indentlevel -= 1
nextindent -= 1
elif match[0] == False :
nextindent = indentlevel
filelines[ind] = ' '*indentlevel*indentmult + filelines[ind].lstrip().rstrip() +'\n'
outfile = open(filename + '.test.m', 'w')
outfile.writelines(filelines)
file.close()
outfile.close()
args = []
for arg in sys.argv[1:] :
args += [str(arg)]
main(args)
我尝试了emacs的方法,但没有用,我对ubuntu和octave还不熟悉。所以我采取了最简单的方法:D,在线站点,为我缩进代码,我可以复制/粘贴新的干净代码
这里有一个vim插件,可以自动缩进并突出显示八度代码的语法
也许是帕斯卡压头?你可以使用在线服务,比如a,请看我关于你获得该产品投票权的回答,因为从技术上讲,它回答了这个问题。不幸的是,我实际上使用的是倍频程,所以我没有matlab编辑器。@NOTT101:谢谢你的投票。需要帮助吗?带倍频程模式的Emacs可以。Emacs或Vim(正如Jonas所说)+宏可以批量执行(您不必手动打开所有文件)