Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将整个源代码从制表符转换为4个空格_Php_Cakephp - Fatal编程技术网

Php 将整个源代码从制表符转换为4个空格

Php 将整个源代码从制表符转换为4个空格,php,cakephp,Php,Cakephp,在将CakePHP源代码提交给GitHub之后,我才意识到他们现在使用制表符缩进代码,而不是使用四个空格。他们还在.editorconfig文件中定义了这一点,我将其更改为: root = true [*] indent_style = space indent_size = 4 end_of_line = lf insert_final_newline = true trim_trailing_whitespace = true 有没有办法运行整个源代码并安全地将所有制表符转换为四个空格以

在将CakePHP源代码提交给GitHub之后,我才意识到他们现在使用制表符缩进代码,而不是使用四个空格。他们还在
.editorconfig
文件中定义了这一点,我将其更改为:

root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
有没有办法运行整个源代码并安全地将所有制表符转换为四个空格以进行缩进?我的推理是,repo上的每个开发人员都使用四个空格,混合和匹配会导致代码在GitHub上看起来不合适。我只是一个一致性的粉丝:)


如果我采用自制的方式,并为此编写自己的脚本,我并不介意使用哪种语言,尽管我对PHP更有信心(我知道PHP不是最适合这份工作的)。这就像在每个文件上执行
preg_replace(“~\t~”,“$fileText)
一样简单吗?

不确定您是否有权访问或已经使用升华文本2,但它可以自动将所有选项卡转换为空格:


在您希望执行它的目录中尝试以下操作:

find ./ -type f -exec sed -i 's/\t/XXXX/g' {} \;
这应该将选项卡替换为4个空格(如果将X替换为空格)


调整
t/
/g
之间的空格,无论你想要多少空格……只要去掉X,在其中放上空格。

当制表符跟随空格字符,侵占制表符区域时,直接用空格替换制表符将导致不对齐

使用expandtabs()string方法的基本python脚本将使代码看起来与构思时一样。例如,选项卡空间为4:

#!/usr/bin/python
#
# convert source code or text with spaces, being careful to align text as it was conceived
# with the original tab space settings, which is defaulted to 4 spaces per tab.
#
# usage:
# ./tabs2spaces.py <file_to_convert>

import os
import sys

spaces_per_tab = 4

argc = len( sys.argv )

if argc < 2:
    print 'no file argument specified'

filename = sys.argv[ 1 ]
old_filename = 'old_' + filename

os.rename( filename, old_filename )

fn = open( filename, 'wb' )
fo = open( old_filename, 'r' )

for line in fo:
    fn.write( line.expandtabs( spaces_per_tab ) )

fn.close()
fo.close()
#/usr/bin/python
#
#转换带有空格的源代码或文本,注意按设想对齐文本
#使用原始选项卡空间设置,默认为每个选项卡4个空间。
#
#用法:
#./tabs2spaces.py
导入操作系统
导入系统
每个选项卡的空间=4
argc=len(sys.argv)
如果argc<2:
打印“未指定文件参数”
filename=sys.argv[1]
旧文件名='old_u'+文件名
重命名(文件名,旧文件名)
fn=打开(文件名为“wb”)
fo=打开(旧文件名'r')
对于fo中的行:
fn.write(行扩展选项卡(每个选项卡上的空格))
fn.close()
fo.close()

4个空格是标准的,因为它在IDE中显示相同的内容-我真的很惊讶GitHub不会遵循这个标准。许多IDE都有自动格式化功能,可以为您实现这一点。正则表达式是这样,但如果您使用像Netbeans这样的IDE,这些操作应该内置并自动将选项卡扩展到空格(如果设置为这样做)。请记住,制表符会根据作者偏好进行缩放,而空格则不会。@crush我认为这是一个蛋糕,而不是GitHub,源文件中有制表符而不是空格,这在2.3.0之前的verisons中是存在的(我认为)。@JamesDawson-这肯定是蛋糕,我的所有项目都在rep和在线代码浏览器中保留制表符缩进。@JamesDawson CakePHP一直使用制表符进行缩进,不仅仅是因为2.3我有Sublime Text 2,并且知道这个功能,但我必须为我处理的每个文件都使用制表符,我想快速浏览每一个现有的文件,并将其一次全部更改为空格,以避免我一遍又一遍地这样做。