【问题标题】:vscode python avoid indent of multiline stringvscode python 避免缩进多行字符串
【发布时间】:2023-01-14 08:40:45
【问题描述】:

所以这里有一个 vscode/python 中多行字符串的例子:

光标在 p 之后,然后你按下回车,结果是这样的:

即字符串最终缩进,这似乎是您几乎不想要的 - 为什么在此字符串的下一行有任意数量的空格?

有什么办法可以在 vscode 中改变这个,即对于多行字符串,它应该以这样的结尾:

【问题讨论】:

  • 对于变量值,您应该使用普通字符串,而不是文档字符串。
  • @101 当然有正当理由字符串,就像我在帖子中开始的 2-3 段字符串的开头。字符串太长了,你不应该合理地将它们放在一行中,但仍然是一个不是文档字符串的字符串这就是 python 多行字符串的用途,它们不仅适用于文档字符串。

标签: python visual-studio-code


【解决方案1】:

我认为这个问题与不同人的不同编码风格有关。

例如,

def example(x):
    if x:
        a = '''
This is help
'''

def example(x):
    if x:
        a = '''This is help
'''

vscode 换行符的自动缩进是基于代码块的。如果你想让Vscode可以识别多行字符串,我觉得以后在github上提交请求会更好。我已经为你提交了这个issue

【讨论】:

  • 好的。我不确定这是否与编码风格有关,它更多的是关于多行字符串,并且在您的两个示例中的任何一个中,您都希望在下一行的开头开始编写 - 抛出大量空格只是因为那是在这两种情况下,声明变量的块缩进都是错误的。 (当然,对于像这样的短字符串,多行字符串没有意义——但它是一个较长的 3 段字符串的开始)
【解决方案2】:

我不是 100% 确定 OP 的意思是指编辑器(即 VSC)中的缩进,还是通过这个:

即字符串结束缩进,这似乎是您几乎不想要的 - 为什么要任意数量的空白在这个字符串的下一行?

...他们还意味着指的是实际输出多行字符串, (或者,以防万一其他人发现这篇文章正在寻找一种方法来避免这种情况影响多行字符串的实际输出),我想添加一个补充答案(还不能发表评论)这已经是漂亮地回答here

如果是这种情况,并且您出于这个原因正在阅读本文,简而言之,您想要的只是导入标准库“inspect”并使用 cleandoc 方法使用它对字符串进行后处理。

在不破坏 IDE 中的缩进的情况下,此方法确保为您提供您实际期望的字符串输出:

从第一行中删除所有前导空格。任何可以从第二行开始统一删除的前导空格都将被删除。开头和结尾的空行随后被删除。此外,所有选项卡都扩展为空格。(来自上面的文档链接)

希望对任何人都有帮助。

【讨论】:

    猜你喜欢
    • 2021-01-01
    • 2020-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 2016-02-05
    • 2011-03-22
    • 2011-01-31
    相关资源
    最近更新 更多