Atom中的自动检测标签宽度?

时间:2018-04-23 21:24:10

标签: format settings atom-editor

我知道我可以为所有文件指定标签宽度,我可以让Atom自动检测标签字符与空格的使用情况,但有没有办法自动检测< / em> tab- width

我正在使用同时使用2空间宽度和4空间宽度的文件。结合Atom如何与制表符进行交互(当我创建一个新行并将四个连续空格视为单个字符时自动添加四个倍数),这会让您感到非常沮丧。

是否有任何简单的方法可以自动在4和2宽度标签之间切换Atom?

1 个答案:

答案 0 :(得分:0)

我整理了一个脚本,用于将文件从一个标签宽度转换为另一个标签宽度。 (假设&#34;标签&#34;是空格。)

我认为前几行描述了它的用法,但以防万一;第一个参数必须指定文件的当前标签宽度。 (您必须自己检查一下。)第二个参数指定所需的制表符宽度。第三个参数是文件名,最后一个参数是修改文件的目标。

E.g。从2宽度变为4。 chtabwidth 2 4 "./file.py" "./moddedFile.py"

注意:将文件保存到自身。它附加到正在读取的文件的末尾,并将永久运行。 (这是我做的第一件事,在我意识到它悬挂之前我做了一个20MB的文件。)实际上,你知道什么,我会添加一个条件来确保它永远不会发生。在那里,完成了。

#!/bin/bash

old_width="$1"
new_width="$2"
file="$3"
newfile="$4"

if [[ "$file" == "$newfile" ]]; then
  echo "Don't save to the same file!!"
  exit
fi

IFS=

while read -r p || [[ -n $p ]]; do
  indent_len=$(echo "$p" | egrep -o "^ *" | tr -d '\012\015' | wc -m)
  tab_num=$(( indent_len / old_width ))
  new_indent_len=$(( tab_num * new_width ))
  new_indent=$(printf '%*s' $new_indent_len '')
  revised=$(echo ${new_indent}$(echo "$p" | egrep -o "[^ ].*$"))
  echo "$revised" >> "$newfile"
done <"$file"

PS。我讨厌bash编程。

PPS。零保修;如果您从互联网上下载的随机代码将您的午餐点燃,那么请不要责怪我。