Vim 中的自动格式选项 (=) 不能正确缩进 HTML+JS?
Posted
技术标签:
【中文标题】Vim 中的自动格式选项 (=) 不能正确缩进 HTML+JS?【英文标题】:Auto format option (=) in Vim doesn't indent HTML+JS correctly? 【发布时间】:2012-03-14 09:59:33 【问题描述】:自动格式化 (gg=G
) 非常适合这样的代码(来自here 的示例):
fun()
for(...)
for(...)
if(...)
变成
fun()
for(...)
for(...)
if(...)
但是对于像这样的更复杂的代码它会失败(从here复制)
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function()
$("p").click(function()
$(this).hide();
);
);
</script>
</head>
<body>
<p>If you click on me, I will disappear.</p>
</body>
</html>
变成:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function()
$("p").click(function()
$(this).hide();
);
);
</script>
</head>
<body>
<p>If you click on me, I will disappear.</p>
</body>
</html>
为什么 <p>
标签在正文中没有缩进?这是vim格式化程序的缺点还是我使用不正确?
编辑:感谢所有提到我应该将filetype plugin indent on
放入我的.vimrc
文件的人。这使得缩进好多了。但是,有时它仍然会失败。观察(复制自here)
<!DOCTYPE html>
<html>
<body>
<div style="text-align:center">
<button onclick="playPause()">Play/Pause</button>
<button onclick="makeBig()">Big</button>
<button onclick="makeSmall()">Small</button>
<button onclick="makeNormal()">Normal</button>
<br />
<video id="video1">
<source src="mov_bbb.mp4" type="video/mp4" />
<source src="mov_bbb.ogg" type="video/ogg" />
Your browser does not support HTML5 video.
</video>
</div>
<script type="text/javascript">
var myVideo=document.getElementById("video1");
function playPause()
if (myVideo.paused)
myVideo.play();
else
myVideo.pause();
function makeBig()
myVideo.height=(myVideo.videoHeight*2);
function makeSmall()
myVideo.height=(myVideo.videoHeight/2);
function makeNormal()
myVideo.height=(myVideo.videoHeight);
</script>
<p>Video courtesy of <a href="http://www.bigbuckbunny.org/" target="_blank">Big Buck Bunny</a>.</p>
</body>
</html>
完全没有变化。它没有意识到这些函数嵌套在 <script>
标记内。将文件类型设置为js.html
或html.js
也无济于事
【问题讨论】:
它是否像 any HTML 的预期那样缩进? (例如,根本没有 JavaScript) 这里似乎已经回答了:***.com/questions/3276392/… @Chriseyre2000 我正在对其进行测试,看看该解决方案是否使其更可靠 @Chriseyre2000 它确实使它更可靠,但在某些情况下继续失败。 【参考方案1】:所以 vim 对不同的文件类型有不同的格式/语法高亮选项。你可以阅读它here。因此,对于您的常规 c++ 文件,缩进是非常标准的,因此它通常会正确,但对于您的 html 文件,您可能有不同的偏好,然后是制作格式文件的人。您可以在~/.vim/ftplugin
下编辑并查看您在linux 中的格式化配置,html 文件将被称为html.vim
。
就像比尔说的那样,您可能需要打开文件类型插件,方法是在您的 ~/.vimrc
中设置它或通过输入 :filetype plugin indent on
来启用它
【讨论】:
如果我没有设置:filetype plugin indent on
,那么格式化就不起作用。如果我确实设置了它,Vim 会抱怨它不能调用 JSLint (Syntastic)。我该如何调和呢?以上是关于Vim 中的自动格式选项 (=) 不能正确缩进 HTML+JS?的主要内容,如果未能解决你的问题,请参考以下文章