Python Pycharm转换空格和赢得';不能转换回

Python Pycharm转换空格和赢得';不能转换回,python,whitespace,pycharm,Python,Whitespace,Pycharm,我在Pycharm上遇到了一个问题,当我除了访问文件之外什么都没做时,git跟踪的某些文件会显示为已被修改。通常修改是将制表符更改为空格,反之亦然,或者将制表符添加到空行或从空行中删除。一旦进行了这种修改,无论我做什么,我似乎都无法回滚更改。我在“设置”中可以设置的任何地方都设置了“保留空行缩进”,但Pycharm仍会删除某些空行上的缩进,即使我重新添加缩进或恢复文档的本地更改,只要我离开文件,它将再次显示为已修改,标签又一次被删除了……我想这是我在不知不觉中做的事情,或者是我设置的设置,而不是

我在Pycharm上遇到了一个问题,当我除了访问文件之外什么都没做时,git跟踪的某些文件会显示为已被修改。通常修改是将制表符更改为空格,反之亦然,或者将制表符添加到空行或从空行中删除。一旦进行了这种修改,无论我做什么,我似乎都无法回滚更改。我在“设置”中可以设置的任何地方都设置了“保留空行缩进”,但Pycharm仍会删除某些空行上的缩进,即使我重新添加缩进或恢复文档的本地更改,只要我离开文件,它将再次显示为已修改,标签又一次被删除了……我想这是我在不知不觉中做的事情,或者是我设置的设置,而不是Pycharm中的bug,但它让我发疯了!有没有办法解决这个问题?

您可能还需要检查另外两个设置:

  • 首选项>编辑器>常规>其他>保存时去除尾随空格

  • 首选项>编辑器>代码样式>Python>制表符和空格>使用制表符


  • 要防止PyCharm删除空白,请执行以下操作:

    将editor.xml中的“粘贴”中的“缩进”更改为“插入符号”false(如果存在),这对我很有用

    <application>
      <component name="CodeInsightSettings">
        <option name="REFORMAT_ON_PASTE" value="1" />
        <option name="INDENT_TO_CARET_ON_PASTE" value="false" />
      </component>
      <component name="EditorSettings">
        <option name="IS_VIRTUAL_SPACE" value="true" />
        <option name="STRIP_TRAILING_SPACES" value="None" />
      </component>
    </application>
    

    或者重命名文件并重新启动。更改设置时,将仅使用所做的新更改重新创建设置。(请注意,我的设置文件可能来自很久以前的版本,现在已升级。)


    gui中的复选框在哪里?文件>设置。。。在粘贴时缩进到插入符号只是个人建议:让PyCharm将制表符转换为空格并坚持使用。这是我对所有IDE的首选设置。在源代码的上下文中,我看不到制表符的优势。无论如何,大多数IDE都有一个相当智能的代码缩进。在大多数情况下,我同意,但我使用的是一个现有的代码库,它主要是用制表符缩进的,而不是空格缩进的。您是否尝试过“首选项”>“编辑器”>“常规”>“其他”>“保存时去掉尾随空格”选项?您是否尝试过为Python代码样式设置“制表符和空格”(首选项>编辑器>代码样式>Python>制表符和空格>“使用制表符”)?我的制表符设置与Python下的设置相同,但“保存时删除尾随空格”选项起到了作用。我将其设置为“修改行”,并将其更改为“无”,似乎解决了问题!我认为这个设置只适用于文件末尾的空白,所以我忽略了它。如果您将此作为答案发布,我将接受它为正确的,以便其他具有相同问题的人可以从中受益。缩进的设置在逻辑上不是空白删除的控制,因此显然是他们应该修复的错误