VSCode:在空行上保持缩进

时间:2017-12-25 12:09:54

标签: visual-studio-code

是否可以让VSCode在空行上保留缩进?

无法在本地或在"美化"中找不到这样的设置。扩展

所需行为的示例:

enter image description here

更新:最终我刚刚切换到Prettier - 并且再也没有考虑过代码风格,因为它只是为我自动格式化。

6 个答案:

答案 0 :(得分:12)

转到文件>偏好>设置。在右侧,添加以下行:

,"editor.trimAutoWhitespace": false

它非常适合我。

答案 1 :(得分:5)

一个老问题,但是我发现这些设置是组合的:

"editor.trimAutoWhitespace": false,
"editor.renderWhitespace": "all"

...为我工作。

答案 2 :(得分:0)

这可能是eslint(和/或美化)这样做。看看

params["b"]

我在我的eslintrc.json文件中有这个,所以我在空白行上出现错误,上面有空格或标签。将“skipBlankLines”设置为true可能对您有用。

答案 3 :(得分:0)

命令unsigned int换行,并将光标移到此处,保留缩进。 要将命令绑定到Enter键,请转至键盘快捷键(按ctrl + k ctrl + s),然后按最右上角的两个花括号按钮。

enter image description here

添加以下命令

editor.action.insertLineAfter

确保它在Json列表的末尾之前。

答案 4 :(得分:0)

我有同样的问题,但是删除后:

"editor.autoIndent": "none"

我很好走。

答案 5 :(得分:-1)

时间戳
2021,使用 VS Code v1.56.2

用例:

您使用 editor.action.trimTrailingWhitespace。稍后您希望在函数中编写新代码。您导航到函数中的一个空行,但发现该行没有缩进并且完全是空的。在这种情况下,您有四种选择:

  1. 多次点击 Tab 直到光标位于正确的缩进处。
  2. 导航到具有适当缩进的行,按 End,然后按 Enter
  3. 在适当缩进的行的右侧单击鼠标,然后按 Enter
  4. 重复按 Ctrl + ] 以缩进空行。[见脚注 1]

此答案通过为您插入缩进来自动执行此工作流程(当您导航到由缩进线包围的空行时)。

背景: 花了 3 个小时尝试此页面上的所有解决方案(以及许多不同的扩展)。找不到其他有用的东西。

通过扩展解决

implicit-indent 扩展程序 jemc
https://marketplace.visualstudio.com/items?itemName=jemc.vscode-implicit-indent

导航到空行时自动缩进(如果其周围的行缩进)。

功能

根据实验,implicit-indent 似乎是这样工作的:

  • 自动检查和匹配制表符或空格缩进。

  • 根据周围文本的缩进确定 spacestabs,而不考虑编辑器设置。[参见脚注 2]< /p>

  • 点击空行会自动缩进以匹配周围环境。

  • 如果按向上 或向下 箭头键将插入符号 (又名文本光标) 导航到空行, implicit-indent 将自动缩进该行并将光标置于缩进的右侧(使其感觉就像该行已经缩进一样)

    -> 在按下 之前,插入符号位于哪一列无关紧要,无论此扩展名都会触发。

  • 导航到空行匹配嵌套缩进。
    假设您有以下内容:

    Where |n| represents a line
    and c represents the caret / text cursor
    and only line |2| is empty.
    
    |1|    indented line
    |2|                         (empty line)
    |3|  c    indented line
    
         ^ assume caret is on line |3|
           (caret can be at any column)
    

    按向上 箭头键结果如下:

    |1|   indented line
    |2|      c 
    |3|      indented line
    
             ^ Line |2| (previously empty)
               is automatically indented to 
               match nested indentation 
               of line |3| 
    
               and the caret is automatically moved
               to the end of the inserted whitespace
    
               (as if the line were already indented).
    

VS 代码

截至 2021 年 5 月,以下 GitHub 问题仍未解决:

https://github.com/microsoft/vscode/issues/49661
https://github.com/microsoft/vscode/issues/54210
https://github.com/OmniSharp/omnisharp-vscode/issues/1980
https://github.com/OmniSharp/omnisharp-vscode/issues/1680

使用 implicit-indent 是我目前发现的唯一解决方法。

当自动缩进添加到 VS Code 的本机设置时,我会修改这个答案。




[脚注 1]

作为此扩展的替代方案,您可以使用 Tab 或以下内置于 VS Code 的缩进/取消缩进功能来手动缩进空行。有点超出范围,但这是一个很好的热键。

默认的内置热键是:

  • 热键CTRL + ]
    命令editor.action.indentLines
    它的作用
    缩进当前行(如果没有选择)
    或缩进所有选定或部分选定的行。
  • 热键CTRL + [
    命令editor.action.outdentLines
    它的作用
    “Outdent”(又名“unindent”,又名 dedent)
    当前行(如果没有选择)
    或缩小所有选定或部分选定的行。

[脚注 2]

注意:无论您是否使用此扩展程序,您都可以使用以下 VS Code 命令快速替换当前文档的缩进(到前导制表符或前导空格):

  • editor.action.indentationToTabs
  • editor.action.indentationToSpaces