我有一些想要重新制作的 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
答案4
第一个示例中的制表符是制表符,下一个示例中的制表符是空格吗?这里有一个可以将制表符更改为两个空格的 shell 脚本。将工作目录更改为 HTML 文件的位置。
#!/bin/sh
for i in *.html
do
sed 's/\t/ /g' "${i}" > filename.notabs && mv filename.notabs "${i}"
done
更新
我只是需要做类似的事情。我直接去了科莫多龙 编辑的文件中替换功能。如果您有 GUI 访问文件,那么这个功能就非常好了。