我怎样才能轻松地根据一些合理的默认值重新标记 html 文件?

我怎样才能轻松地根据一些合理的默认值重新标记 html 文件?

我有一些想要重新制作的 html 文件,如下所示:

<header>
    <div class="wrapper">
                    <img src="images/logo.png">
                    <div class="userbox">
                            <div class="welcome">Welcome Andy!</div>
                            <div class="blackbox">
                                    <ul>
                                            <li><a href="#">Invite Friends</a></li>
                                            <li><a href="#">My Account</a></li>
                                            <li><a href="#">Cart</a></li>
                                            <li><a href="#">Sign Out</a></li>
                                    </ul>
                            </div>
                    </div>
            </div>
</header>

我希望它们看起来像这样:

<header>
  <div class="wrapper">
    <img src="images/logo.png">
    <div class="userbox">
      <div class="welcome">Welcome Andy!</div>
        <div class="blackbox">
          <ul>
            <li><a href="#">Invite Friends</a></li>
            <li><a href="#">My Account</a></li>
            <li><a href="#">Cart</a></li>
            <li><a href="#">Sign Out</a></li>
          </ul>
        </div>
    </div>
  </div>
</header>

或者一些合理的默认值。对于当前目录中的所有 html 文件,从 ubuntu 终端执行此操作的最简单方法是什么?

答案1

vim

:set softtabstop=0
:set expandtab
:set smarttab
:set shiftwidth=2
gg=G
:retab

编辑:解释:

  • 1-3 行:合理的默认值
  • 第 4 行:缩进 2 个空格
  • 第 5 行:
    • gg:顶线
    • =:缩进直到...
    • G: ...结尾
  • 第 6 行:确保所有制表符都转换为空格

答案2

sudo apt-get install tidy
cd whatever_dir_you_want
find . -name '*.html' -exec tidy -m {} \;

注意:这可能无法与 inline-php 很好地配合使用。尝试一下tidy(不带-m参数)以查看其效果。

答案3

我使用了 Stéphane Chazelas 的解决方案使用 sed 重新缩进文件以及 dogbane 的解决方案如何重复一个字符串‘n’次编写此调用,将改变使用空格缩进的文件的缩进:

# Repeat a string "n" times e.g. repeatstr abc 3
#
# Solution from: https://stackoverflow.com/a/5349842/
repeatstr() {
  printf "%.0s$1" $(seq 1 $2)
}

# Reindent file that uses spaces
#   e.g. reindent 2 4 index.html
#   e.g. cat index.html | reindent 2 4
#
# Solution from: https://unix.stackexchange.com/a/47210/
reindent() {
  if [[ $# -gt 2 ]]; then
    f=$(mktemp)
    cat $3 | reindent $1 $2 > $f && mv $f $3
  else
    sed "h;s/[^ ].*//;s/$(repeatstr ' ' $1)/$(repeatstr ' ' $2)/g;G;s/\n *//"
  fi
}

将这些函数添加到您的.bashrc.zshrc,然后运行:

reindent 4 2 index.html

如果缩进一开始就不完美,我会先用“漂亮的打印”格式化实用程序运行文件,例如整齐的对于 HTML 或杰奇对于 JSON。

答案4

第一个示例中的制表符是制表符,下一个示例中的制表符是空格吗?这里有一个可以将制表符更改为两个空格的 shell 脚本。将工作目录更改为 HTML 文件的位置。

#!/bin/sh
for i in *.html
do
    sed 's/\t/  /g' "${i}" > filename.notabs && mv filename.notabs "${i}"
done

更新

我只是需要做类似的事情。我直接去了科莫多龙 编辑的文件中替换功能。如果您有 GUI 访问文件,那么这个功能就非常好了。

替代文本

相关内容