【问题标题】:Shortcut for changing tabs->spaces->tabs in IntelliJ IDEA在 IntelliJ IDEA 中更改 tabs->spaces->tabs 的快捷方式
【发布时间】:2017-05-22 18:31:59
【问题描述】:

我知道我可以通过以下方式更改缩进:

File > Settings > Editor > Code Style > ANY_LANGUAGE > Tabs and Indents > Use tab character

但在我的旧项目中,不同文件中存在多种缩进。 IDE中是否有任何键盘快捷键可以将空格更改为制表符,反之亦然?或者如何为所有或指定的语言文件设置一个?

【问题讨论】:

标签: intellij-idea keyboard-shortcuts indentation shortcut


【解决方案1】:

在制表符和空格之间切换:

在主菜单上,选择Edit → Convert Indents,然后分别选择To SpacesTo Tabs。阅读有关Changing Indentation 的更多信息。

您可以通过按 Ctrl+Shift+ANavigating to Action 菜单快速执行相同操作在字段中输入convert indents

如果您想默认设置空格缩进,请转到设置→编辑器→代码样式→Java,确保未选中使用制表符复选框并设置缩进值:

【讨论】:

  • 好的,它是 converting 打开文档中所有当前缩进的快捷方式,但是当我创建新行时,它仍然是旧约定。 改变约定的每一个新行,每个新缩进的快捷方式是什么?
  • 我知道如何更改它。我正在寻找此操作的键盘快捷方式(或者如果没有默认快捷方式,我正在寻找如何为其设置自定义快捷方式的方法)。
  • 您是否正在寻找更改此全局 IDEA 设置的快捷方式?
  • 我不知道全局设置是什么意思。我正在寻找一种快捷方式,它可以改变我当前的缩进策略,例如 groovy,文件从空格到制表符,并且在我使用它时反过来。
  • 我明白了,不确定这是否可能,但这个问题很有趣,找到解决方案会很有用。
【解决方案2】:

选择一个文件夹,执行:

  • 在其中通过Cmd+Shift+R 在 MacOs 中搜索和替换,例如。
  • 检查正则表达式选项
  • 提供[\t]作为要替换的文本
  • 提供空格作为 替换文字

因为 Convert Indents 动作是按文件归档,这对于大项目来说不是很方便。

注意:在您仍然需要更改默认首选项以使用空格作为缩进之后,就像@DimaSan 解释的那样

【讨论】:

  • 荒谬的是,您可以在所有文件上运行“重新格式化代码”,而不是“替换标签”。
【解决方案3】:

在 IntelliJ IDEA 中,要将现有制表符转换为空格或反之亦然,请使用 FileEditConvert IndentsTo空格(或到标签)。 重新格式化代码 快捷键 Ctrl+ Alt+ L 也会执行此操作,同时应用其他更改。

要告诉 IDE 为标签插入空格继续,请转到 文件设置编辑器代码风格(任何语言)制表符和缩进 → 然后取消选中 使用制表符。

您可能还需要注意另一个控制文件缩进的设置:文件设置检测并使用现有文件缩进进行编辑。由于某种原因,此设置并不总是一致的。如果您取消选中它,那么 IntelliJ 可能会也可能不会使用制表符自动缩进文件中的新行。

例如,假设您的一个 java 文件中的每一行都以制表符开头。出于源代码控制的原因,您想保留这些,但您希望所有新代码都用空格代替制表符,包括缩进。因此,您已检测并使用现有文件缩进进行编辑 未选中,并且对于 Java,您已使用制表符 未选中。您显然是在告诉 IntelliJ 不要插入制表符,即使是缩进也是如此。

不过,当您在以制表符开头的新行的末尾按 Enter 时,IntelliJ 会继续并在您刚刚创建的下一行的开头添加一个制表符。再次点击选项卡,它会添加空格(根据您的设置预期)。

如果有人知道如何解决这种有点恼人的意外行为,请发表评论。当然,这很容易解决,首先执行 Ctrl+ Alt+ L 将文件中的所有选项卡更改为空格,然后继续你赢了没有看到这种奇怪。但同样,这会修改源历史记录。

【讨论】:

    【解决方案4】:

    编辑器 > 代码样式 > 检测并使用现有文件缩进进行编辑

    这将使“制表符”变成四个空格,如果文件用空格缩进并且 还可以让您在文件使用制表符缩进时显示通知,并为您将其更改为空格。

    注意:我在 Intellij 上使用专业版,如果这有影响的话。

    【讨论】:

    • 我已经检查过了,但正如我所说的in my legacy project there is a mix of indents in different files,所以我仍然使用比@DimaSan 建议的更快的方法。
    【解决方案5】:

    您可以在代码 > 重新格式化代码菜单中重新格式化每个文件以应用您的样式。 在 Windows 上,相关的快捷键是 Ctrl-Alt-L。

    选择一个包将为您提供重新格式化所有源文件(包括子目录)的选项,可选择按文件扩展名过滤。

    这是针对 Java 文件的 IntelliJ IDEA 2018.2.3 的版本。

    【讨论】:

    • 我在寻找什么。谢谢。
    • 正是我想要的。非常感谢。这让我很烦
    • 该命令 (Ctrl+Alt+L) 重新格式化所有内容。 OP 所要求的以及我想要的是将标签转换为空格的东西。而已。没有其他的。其余的格式可能仍然有问题,但至少在所有显示器上都会有同样的问题。
    • @BillEvans 正如 jonrshape 在 OP 问题中所评论的那样,可以将键盘快捷键分配给任何操作,请参阅 IdeaJ help
    • 是的,但是将所有制表符转换为空格的操作 - 不仅是前导制表符,还包括嵌入式制表符?不只是 1 个制表符 -> 4 个空格或其他什么,而是 1 个制表符 -> 1、2、3 或 4 个空格,视上下文而定。这就是我们要确定的。一旦我知道如何做到这一点,我就可以或多或少地方便访问它,这取决于我需要执行它的频率(很少)。
    猜你喜欢
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多