在VS Code中粘贴时获得正确的缩进

时间:2019-01-28 10:59:44

标签: html visual-studio-code

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

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

复制<ul></ul>语句。 在</ul>之后插入新行。

<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 ,因为它会格式化整个文档,并且需要其他操作。

4 个答案:

答案 0 :(得分:2)

感谢@Galzor指出问题。滚动浏览Github问题,我得到了解决此问题的方法,而没有任何其他扩展。

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

希望它对某人有帮助,很快就会被解决!

答案 1 :(得分:1)

目前,尚无已知的稳定解决方案。我本人现在要从几周开始搜寻。有一些用于粘贴和缩进的插件,但是它们在许多其他方面引起了不同的问题,例如无响应的粘贴,缓慢的粘贴或不支持多光标。

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

答案 2 :(得分:0)

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

答案 3 :(得分:-2)

这就是我的方法,希望它也对您有用。

  1. 安装名为Indent on Paste的扩展
  2. 再次尝试粘贴。如果有效,那就很好。否则,下一步。
  3. 在粘贴上卸载缩进。现在应该可以使用了。