【问题标题】:Get correct indentation when pasting in VS Code在 VS Code 中粘贴时获得正确的缩进
【发布时间】:2019-01-28 10:59:43
【问题描述】:

在 Visual Studio Code 中创建一个新的 HTML 文档,然后粘贴:

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
    </div>
</body>

复制&lt;ul&gt;&lt;/ul&gt; 语句。 在&lt;/ul&gt; 之后插入新行。

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
        | <-- cursor    
    </div>
</body>

...然后粘贴。

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
        <ul>
                <li>Foo</li>
                <li>Bar</li>
            </ul>        
    </div>
</body>

缩进完全搞砸了。大量相关问题正在回答这个问题:

从您的设置中禁用"editor.formatOnPaste": true

事实上我已经禁用了这个功能。否则我会变得更糟:

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
<ul>
    <li>Foo</li>
    <li>Bar</li>
</ul>
    </div>
</body>

有没有办法直接粘贴我复制的内容,或者获得正确的格式,例如:

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
    </div>
</body>

Shift+Alt+F 不是答案,因为它会格式化整个文档并且需要额外的操作。

【问题讨论】:

  • 你试过 CTRL + Shift + V 来自动格式化粘贴的代码吗?
  • 是的,它与editor.formatOnPaste 设置为true 时的作用相同
  • 刚刚尝试过,如果我将 formatOnPaste 设置为 false,它对我来说效果很好。我怀疑某些插件优先。
  • 我正在寻找相同的答案,vscode 很好。但它的缩进粘贴非常混乱。离开 php,它甚至无法正常处理纯 html 文件。

标签: html visual-studio-code


【解决方案1】:

感谢@Galzor 指出问题。滚动浏览 Github 问题,我得到了解决此问题的方法,无需任何额外的扩展。

  1. 复制粘贴后按 CTRL+Z。它会给你正确的缩进。 (它适用于禁用 PasteOnFormat 选项。)
  2. 或将编辑文件的语言模式更改为PLAIN TEXT 然后粘贴。 (你可以在 VS Code 的右下角找到语言模式)它不会弄乱缩进。然后再次将语言模式改回原来的模式。

希望它对某人有所帮助并尽快修复!

【讨论】:

  • 很遗憾,ctrl+z 在粘贴多行时不起作用,因为它只修复了第一行。
  • @sdlins 这似乎不是真的 - 或者它最近已修复,因为它现在对我来说所有行都很好用
【解决方案2】:

目前没有已知的稳定解决方案。我自己从现在开始搜索。有一些用于粘贴和缩进的插件,但它们在许多其他方面引发了不同的问题,例如无响应粘贴、缓慢粘贴或不支持多光标。

VSCode 论坛多年来一直有这个问题,但他们对此并不十分活跃。 请访问官方问题页面并尝试在那里发表评论,每一个都很重要,我们可能会得到官方解决方案。 https://github.com/Microsoft/vscode/issues/32320

另外你可以试试下面的插件,可能对你有用。

https://marketplace.visualstudio.com/items?itemName=Rubymaniac.vscode-paste-and-indent https://marketplace.visualstudio.com/items?itemName=gazugafan.vscode-indent-on-paste

【讨论】:

    【解决方案3】:

    就我自己而言,我只是禁用了 PasteOnFormat,然后使用常规 Cmd+V 粘贴我的多行代码。我的头痛消失了。

    【讨论】:

    • 注意:非常简短的答案和/或回帖者的问题可能应该是 cmets。你只需要 50 个代表点就可以在一个问题下发表评论 - 你能把它移到那里吗?
    • @Tyler2P “您只需要 50 个代表点即可发表评论” - 是的,但 1 比 50 少很多。
    猜你喜欢
    • 1970-01-01
    • 2021-08-29
    • 2017-06-07
    • 1970-01-01
    • 2018-10-06
    • 1970-01-01
    • 2020-02-06
    • 2014-08-27
    • 2021-10-27
    相关资源
    最近更新 更多