【发布时间】:2016-03-14 10:54:24
【问题描述】:
对于每个打字稿文件,Visual Studio 代码使用 8 个空格的自动缩进。这对我的口味来说有点太多了,但我找不到在哪里改变它。
也许它可以作为设置使用,但名称不同,因为我找不到与缩进相关的任何内容。
更新
我目前正在使用Prettier code formatter,它通过保存时自动格式化解决了所有格式化问题(如果没有语法错误)
【问题讨论】:
标签: formatting visual-studio-code
对于每个打字稿文件,Visual Studio 代码使用 8 个空格的自动缩进。这对我的口味来说有点太多了,但我找不到在哪里改变它。
也许它可以作为设置使用,但名称不同,因为我找不到与缩进相关的任何内容。
更新
我目前正在使用Prettier code formatter,它通过保存时自动格式化解决了所有格式化问题(如果没有语法错误)
【问题讨论】:
标签: formatting visual-studio-code
以下搜索和替换正则表达式将现有文件中每个缩进级别的空格数从 4 个更改为 2 个。它相对容易理解、可靠,并且不需要安装任何东西。
^(?:( ) )?(?:( ) )?(?:( ) )?(?:( ) )?(?:( ) )?(?:( ) )?(?:( ) )?(?:( ) )?(?:( ) )?
$1$2$3$4$5$6$7$8$9
您也可以在左侧的“搜索”窗格中使用它来对项目中的所有文件执行此操作。但是,请注意,每个文件只能运行一次。它会弄乱已经使用 2 个空格的文件的缩进。
正则表达式的工作方式是在每行的开头^ ... 一次匹配四个空格的组(?: ... ),只捕获前两个空格( ... )。每个缩进级别都是可选的... ?,因此它适用于与模式重复并且每行中有多少缩进级别一样多的缩进级别。然后它只用捕获的空格$1、$2、...替换整个模式,有效地将每个四空格缩进级别替换为两个空格。
这种模式最多只能使用 9 个缩进级别(我不确定$10 是否可以使用,但如果可以,可以无限扩展)。
您可以调整该模式以将文件中每个缩进级别的空格数从任何原始数字减少到另一个较低的目标数字。
将 target 个空格放在内括号内。然后,将剩余的original个空格放在外括号中,这样模式中的空格总数就是original。
例如,如果您想将缩进级别从 6 更改为 4,请重复此搜索模式多次:
^(?:( ) )? 或 ^(?:( {4}) {2})?
并在替换模式中使用相同数量的$1、$2。
【讨论】:
【讨论】:
第一步:在 vscode 中打开settings.json
第 2 步:为编程语言添加如下行(示例如下)
对于打字稿和javascript
"editor.detectIndentation": false,
"[typescript]": {
"editor.defaultFormatter": "vscode.typescript-language-features",
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation":false
},
"[javascript]": {
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation":false
}
【讨论】:
Open settings.json in vscode 这样做的方法是 ctrl+shit+p 并在 Mac 上键入设置或 cmd+shift+p。有一个全局 settings.json 和一个工作区 settings.json。我更喜欢使用 prettier.js 作为我的格式化程序,因为它有更多的样式设置。
基于编程语言更改缩进:
打开命令面板(CtrlShiftP | macOS:⇧⌘P)
键入并选择:首选项:配置语言特定设置...(命令 ID:workbench.action.configureLanguageBasedSettings)
选择一种编程语言(例如 TypeScript)
添加此代码:
"[typescript]": {
"editor.tabSize": 2
}
【讨论】:
对我来说是docs-markdown 和Docs Authoring Pack。微软的许多模块再次相互混淆!禁用了扩展,现在可以再次使用?
【讨论】:
在首选项中设置缩进并不总是解决方案。大多数情况下,缩进是正确的,除非您碰巧从其他来源复制了一些代码代码,或者您的同事为您制作了一些东西并具有不同的设置。然后,您只想快速将缩进从 2 转换为 4 或反之。
【讨论】:
如何将VS Code中所有文件的4个空格缩进变成2个空格
( {2})(?: {2})(\b|(?!=[,'";\.:\*\\\/\{\}\[\]\(\)]))
$1
如何将 VS Code 中所有文件的 2 个空格缩进变成 4 个空格
( {2})(\b|(?!=[,'";\.:\\*\\\/{\}\[\]\(\)]))
$1$1
注意:您必须先打开 PERL Regex。方法如下:
"search.usePCRE2": true
希望有人看到这个。
【讨论】:
在右下角的工具栏中,您将看到如下所示的项目: 单击它后,您将获得使用空格或制表符缩进的选项。选择缩进类型后,您将可以选择更改缩进的大小。在上面的示例中,缩进设置为每个缩进 4 个空格字符。如果选择制表符作为缩进字符,那么您将看到 制表符大小 而不是 空格
如果您想将此应用于所有文件而不是单个文件,请覆盖 用户设置 或 工作区设置中的 Editor: Tab Size 和 Editor: Insert Spaces 设置强>取决于你的需要
要访问您的用户或工作区设置,请转到首选项 -> 设置。根据您的需要,确认您在 User 或 Workspace 标签上,并使用搜索栏找到设置。您可能还想禁用Editor: Detect Indentation,因为此设置将覆盖您在启用时为Editor: Insert Spaces 和Editor: Tab Size 设置的内容
【讨论】:
editor.tabSpaces 不会不会更改所有文件中的间距。它只会为将来创建的文件更改它。仍然没有解决方案可以一次性修复所有文件。
要将所有现有文件和新文件的空间标识设置为 2,只需将其放入您的 settingns.json(在 json 的根目录中):
"[typescript]": {
"editor.defaultFormatter": "vscode.typescript-language-features",
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation":false
}
您可以添加配置的语言类型:
"[javascript]": {
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation":false
}
【讨论】:
代码格式化快捷键:
Windows 上的 VSCode - Shift + Alt + F
MacOS 上的 VSCode - Shift + Option + F
Ubuntu 上的 VSCode - Ctrl + Shift + I
如果需要,您还可以使用首选项设置自定义此快捷方式。
用键盘选择列 Ctrl + Shift + Alt + 箭头
【讨论】:
Shift + Alt + F 将文件中的所有缩进从 8 个空格更改为默认的 4 个空格。正是我想要的:)
问题:接受的答案实际上并没有修复当前文档中的缩进。
解决方案:运行Format Document 以根据当前(新)设置重新处理文档。
问题:我项目中的 HTML 文档是“Django HTML”而不是“HTML”类型,并且没有可用的格式化程序。
解决方案:将它们切换为语法“HTML”,格式化它们,然后切换回“Django HTML”。
问题:HTML 格式化程序不知道如何处理 Django 模板标签,并且撤消了我仔细应用的大部分嵌套。
解决方案:安装Indent 4-2 扩展,它严格执行缩进,而不考虑当前的语言语法(这是我在这种情况下想要的)。
【讨论】:
补充:是的,您可以使用右下角的 UI 来配置空间设置。但是,如果您有未格式化为新间距的现有代码,则可以右键单击文件中的任意位置,然后单击Format Document。我花了一段时间才弄清楚这一点,直到我偶然发现了this issue。
【讨论】:
我想将我的 现有 HTML 文件的缩进从 4 个空格更改为 2 个空格。
我单击状态栏中的“空格:4”按钮,并在下一个对话框中将它们更改为两个。
我使用“vim”扩展名。没有vim我不会重新缩进
为了重新缩进我当前的文件,我使用了这个:
gg
=
G
【讨论】:
在我的例子中,“EditorConfig for VS Code”扩展覆盖了 VSCode 设置。 如果已安装,请检查项目根文件夹中的 .editorconfig 文件。
这是一个示例配置。 "indent_size" 设置制表符的空格数。
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false
【讨论】:
除了 Elliot-J 的回答之外,您可能还希望将 editor.detectIndentation 设置为 false。
如果 VSCode 检测到文件具有不同的制表符或空格缩进模式,它将覆盖每个文件的 editor.tabSize 和 editor.insertSpaces 设置。如果将现有文件添加到项目中,或者使用 Angular Cli 等代码生成器添加文件,则可能会遇到此问题。上面的设置阻止了 VSCode 这样做。
【讨论】: