在 VScode 中格式化 .vue 文件时如何保留空行?

Posted

技术标签:

【中文标题】在 VScode 中格式化 .vue 文件时如何保留空行?【英文标题】:How to preserve empty lines when formatting .vue files in VScode? 【发布时间】:2020-07-10 19:23:50 【问题描述】:

我开始讨厌 .vue 作为一个框架,因为我尝试过的所有 VScode 格式化程序都在删除空行。

一切都很酷,一切都很好,除了空行被删除。

每次我使用 Shift+Alt+F 自动格式化时,我所有用空行划分代码块的辛勤工作都会被删除。

每次遇到这个问题时,我都在这个问题上花费了太多天。但是这次对于 .vue 文件,我没有找到修复方法。

当我写作时:

    <div class="ui attached segment">





      <div class="ui grid">

        <div class="row">

          <div class="column eight wide computer sixteen wide tablet">

            <div>
              <div class="badge-wrapper">


                <discount-tag v-bind:item="item">
                </discount-tag>

                <div v-for="badge in item.badges" class="ui labels">

                  <a
                    class="ui label"
                    :style=" backgroundColor: '#'+badge.color, color: '#fff'"
                  >badge.label
                  </a>


                </div>
              </div>




            </div>

            <g-zoom :item="item"></g-zoom>

          </div>





          <div class="column eight wide computer sixteen wide tablet">

            <h1> item.goods_name </h1>

            <p> item.description </p>

我希望保留换行符和换行符,但它却被塞进了这个机器代码

    <div class="ui attached segment">
      <div class="ui grid">
        <div class="row">
          <div class="column eight wide computer sixteen wide tablet">
            <div>
              <div class="badge-wrapper">
                <discount-tag v-bind:item="item"></discount-tag>
                <div v-for="badge in item.badges" class="ui labels">
                  <a
                    class="ui label"
                    :style=" backgroundColor: '#'+badge.color, color: '#fff'"
                  >badge.label</a>
                </div>
              </div>
            </div>
            <g-zoom :item="item"></g-zoom>
          </div>
          <div class="column eight wide computer sixteen wide tablet">
            <h1> item.goods_name </h1>
            <p> item.description </p>

对于 .jsx、.js、.html、.php、.env 等文件,一切都很好。 .vue 除外

基本上我正在寻找的是让这行设置起作用: "vetur.format.defaultFormatter.html": "vscode.html-language-features"

在 VScode 用户设置中


    "window.zoomLevel": -3,
    "terminal.integrated.shell.windows": "C:\\Program Files\\Git\\bin\\bash.exe",
    "vetur.format.defaultFormatter.js": "vscode-typescript",
    "vetur.format.defaultFormatter.html": "vscode.html-language-features",
    "[javascript]": 
        "editor.defaultFormatter": "vscode.typescript-language-features"
    ,
    "[css]": 
        "editor.defaultFormatter": "aeschli.vscode-css-formatter"
    ,
    "[html]": 
        "editor.defaultFormatter": "vscode.html-language-features"
    ,
    "[vue]": 
        "editor.defaultFormatter": "octref.vetur"
    ,

Vetur 扩展基本上就是这些东西,它知道 html 的结束位置和 js/css 的开始位置。你可以在那里选择你的格式化程序。但是您不能选择内置格式化程序的 VScode。它只是忽略了该设置。

请有人帮忙解决或规避此问题,以便我可以自动格式化并保留空的换行符和换行符?

【问题讨论】:

那种意大利面条式机器代码的恐怖看起来非常地道和不错的 IMO,而大多数人会认为你过多的空格是罪犯。我认为你的方向错了,为什么不适应你可能随处可见的代码风格呢?这不是 Vue 的错。 没有没有。这不是任何人的错。我知道,这是故意这样做的。只是让我花更多的时间来理解我在看什么。我喜欢将我的代码按功能划分为整齐的代码块。 (无论如何,webpack 和 babel 都将其全部编译在一条线上以用于生产。这仅用于开发部分)。非常感谢任何帮助。 尝试将 VS 代码的设置 formatOnSave 设置为 false。它会告诉你更改是由 VS 代码还是由 vue-cli/eslint 进行的。 我刚刚意识到同样的事情。谢谢!我意识到我正在寻找的是让它工作:“vetur.format.defaultFormatter.html”:“vscode.html-language-features”但是Vetur,只是忽略了这个设置。你有没有成功地让它发挥作用? Vetur 基本上是一个扩展,它知道 vue 文件中 html 的结束位置和 js/css 的开始位置。对于每个部分,您都可以选择一个格式化程序。但它不允许选择默认的 vs 代码格式化程序。是否有另一种 html 格式化程序,其工作方式与内置的 vs 代码完全一样,您可以在这些 Vetur 设置中选择? 【参考方案1】:

我只需要简单地告诉 VScode(在右下角)一个 .vue 文件应该被格式化为 HTML,就可以完美地处理 HTML、JS 和 CSS 部分的格式,但现在我失去了 Vue 语法突出显示.

不知道如何找回。

这是它自己的问题。 How to tell VScode to format file-type A as file-type B, while preserving syntax highlighting?

【讨论】:

以上是关于在 VScode 中格式化 .vue 文件时如何保留空行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在vscode中用standard style 风格去验证 vue文件

在VSCode中配置代码自动 eslint 格式化(修改eslint规则eslint忽略文件)

vscode格式化Vue出现的问题

团队协作统一vue代码风格,vscode做vue项目时的一些配置

vscode的格式化问题

VScode设置vue文件中保存自动格式化代码以及settings.json文件的配置。