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

now*_*wox 7 html visual-studio-code

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

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

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

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
        | <-- cursor    
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

...然后粘贴。

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
        <ul>
                <li>Foo</li>
                <li>Bar</li>
            </ul>        
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

压痕完全弄乱了。大量相关问题用以下方式回答了这个问题:

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

事实是我已经禁用了此功能。否则我会变得更糟:

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
<ul>
    <li>Foo</li>
    <li>Bar</li>
</ul>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以粘贴我复制的AS-IS内容或获得正确的格式,例如:

<body>
    <div>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
        <ul>
            <li>Foo</li>
            <li>Bar</li>
        </ul>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

Shift+ Alt+ F不是答案,因为它将格式化整个文档,并且需要其他操作。

Shi*_*r G 6

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

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

希望它能帮助到某人并尽快解决!


Gal*_*zor 5

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

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