我将python-indent
从3更改为4.然后我mark-whole-buffer
和indent-for-tab-command
。它给了我垃圾。
答案 0 :(得分:6)
有indent-region
功能。所以我尝试标记整个缓冲区,然后M-x
并输入indent-region
。据我所知,它通常与C-M-\
绑定。
修改强>
重新缩进不适用于tab-width
更改。正如我在评论中写的那样,将空格更改为制表符,然后更改tab-width
是一个解决方案:
“猜测你是缩进空格而不是制表符,首先对tabify
设置为3的缓冲区内容tab-width
进行缩放。然后将tab-width
更改为4并运行untabify
“。
答案 1 :(得分:2)
这是一种黑客行为,但它不会给你indent-region
给你的垃圾
1)确保标签为空格设置为4个空格。在暂存缓冲区中输入:
(setq tab-width 4)
然后通过标记并使用M-x eval-region
2)使用制表符
全局替换所有三个空格的集合M-x replace-regexp [SPC][SPC][SPC][RET] C-q[TAB][RET]
3)突出显示整个缓冲区并取消验证
M-x mark-whole-buffer M-x untabify
这会将所有标签转换为四个空格。
答案 2 :(得分:0)
尝试indent-region
而不是缓冲区。最初限制为C-M-\
答案 3 :(得分:0)
这有点像黑客,但它对我来说是一个快速的解决办法:到“M-X替换字符串”,“” - > “”。然后,如果您的emacs对文件进行自动idnent检测,则必须关闭并重新打开。然后你必须通过并修复多行代码(使用制表符)和具有大量空格的字符串。
答案 4 :(得分:0)
这也可能有所帮助:
http://www.emacswiki.org/emacs/IndentingPython
特别是,PythonTidy对于重构凌乱的代码非常有效,并且有轻微的打嗝(遗憾的是该工具不易配置):
http://www.emacswiki.org/emacs/PythonProgrammingInEmacs#toc17
答案 5 :(得分:0)
可能是主题没有用,但是我使用这样的脚本。 从命令行运行它。 (python reindent.py some.py)
更改string_equal和replace_to。
import sys
file_name = sys.argv[1]
string_equal = " "
replace_to = " "
with open(file_name) as f:
data = f.readlines()
f.close()
def create_new_line(i):
new_line = ""
flag = True
cur_s = ""
for k in i:
if flag and k == " ":
cur_s += k
if cur_s == string_equal:
new_line += replace_to
cur_s = ""
else:
flag = False
new_line += k
return new_line
with open(file_name, "w") as f:
for i in data:
l = create_new_line(i)
f.write(l)
f.close()