【问题标题】:Is it possible to auto-indent only the current line on Visual Studio Code?是否有可能自动缩进只在当前行上Visual Studio代码?
【发布时间】:2018-03-25 08:22:26
【问题描述】:

在 Atom(和许多其他编辑器)上,有一个自动缩进命令,它允许我们自动缩进光标所在的行。 Visual Studio Code 中是否有等价物?

我知道 Visual Studio Code 上有格式化程序操作,但据我所见,它只能用于:

  • 格式化选择(ctrl-K ctrl-F)
  • 格式化孔文档(ctrl + shift + I)

我希望能够格式化光标所在的行,而无需重新格式化整个文档,也无需进行选择。

基本上,我想配置 [TAB] 键,这样当我按下 [TAB] 时,它只会自动缩进光标所在的行:

  • 如果该行没有写任何内容,它只是将光标放在正确的位置,这样当我开始写时,代码就会正确缩进。
  • 如果该行已经写了一些东西,它会自动缩进该行

有可能吗?

【问题讨论】:

  • 我想看看是否可以创建一个宏来执行 select-line-format-selection-deselect-line,但似乎根本没有可用的宏。类似的解决方案将受到欢迎。
  • @GreenAsJade,它对我有用吗? i.stack.imgur.com/8gLMP.gif
  • @TarunLalwani 感谢您的浏览。如果我将光标放在您的第 3 行并点击“TAB”,它会错误地缩进额外的 4 个空格(调用 Indent-Line)而不是保持正确缩进,这将是 select-line-format-selection-deselect 的行为-line 从您的第 3 行开始。无论光标在哪里,IE TAB 都应该具有相同的行为:将行设置为正确的缩进(这是 Atom、emacs 和朋友所做的)。
  • @GreenAsJade 我在 Atom 和 VSCode 中看到 Tab 的相同行为。看到这个原子 Gif i.stack.imgur.com/3D3Cx.gif
  • 现在知道了,我去看看有没有类似的东西

标签: visual-studio-code auto-indent


【解决方案1】:

所以我浏览了源代码,似乎目前没有可用的设置来实现这一点。缩进管道中有很多工作正在进行

https://github.com/Microsoft/vscode/issues/17868

VSCode 在后台使用 Monaco 编辑器

https://github.com/Microsoft/monaco-editor/issues/612

当前的 python 配置位于

https://github.com/Microsoft/vscode/tree/master/extensions/python

我试过了,但要理解所有这些如何集成和协同工作以解决一个缩进问题,这简直是压倒性的。所以我会暂时用 VScode 打开一个增强请求,让专家接听电话并完成工作

【讨论】:

  • 感谢您为寻找解决方案所做的努力!
  • 嗨@Tarun,我想知道您是否可以分享指向您创建的增强请求的链接(如果您这样做了),看看是否有新的内容?如果没有,我会在有时间的时候创建一个请求。谢谢:)
【解决方案2】:

请允许我谦虚地建议您在错误的地方寻找解决方案。

我建议以下设置:

  "editor.formatOnType": true,

您专注于“制表符”进行正确的缩进。但是使用此设置,您根本不需要按 Tab 键。只需在末尾键入正常返回的行。然后,Visual Studio Code 将正确缩进(和格式化)该行。

【讨论】:

  • 但是这样做会在您尝试缩进的那一行之后添加另一行...... TAB 是在不更改任何其他内容的情况下正确缩进一行。
  • 您可以使用键盘快捷键格式化现有行:Ctrl+I Ctrl+K Ctrl+F
  • 如果我们谈论 JavaScript,我建议使用 Prettier 和自动保存。然后你的文件会经常自动缩进,而你根本不需要做任何事情。
  • 不幸的是,墨尔本会格式化整个文档,对吧?文档的某些部分通常(很遗憾)不应该被格式化。
【解决方案3】:

This 扩展对我有用,并允许在光标中线键入 Tab 以获得与我在 Emacs 上习惯类似的正确缩进。

请注意,它与this 答案中推荐的扩展基本相同,但在撰写本文时,该扩展似乎未维护并且存在一些未解决的问题。

【讨论】:

  • 感谢您提及这一点。我还没有测试它,但看起来很有希望谢谢
【解决方案4】:

如果你安装了扩展emacs-tab,你可以这样做:

{
    "key": "tab",
    "command": "emacs-tab.reindentCurrentLine",
    "when": "editorTextFocus"
}

据我了解,这完全符合您的要求(并且不会以其他方式格式化该行,例如如果它太长则将其中断,等等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-02
    • 2018-01-19
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2017-11-09
    相关资源
    最近更新 更多