PyCharm 2026.3 Help

语言注入设置对话框:通用 Python

使用此对话框配置一条注入规则,用于将一种语言注入到 Python 字符串文字中。

当您在 语言注入 设置页面上点击 添加按钮添加 并选择 通用 Python ,或在列表中选择一个 Python 注入并点击 Edit 按钮编辑 时,该对话框会打开。

项目

描述

名称

注入名称。

语言

要注入的语言。

  • ID :选择要注入的语言的 ID 或名称。

  • 前缀 :指定在相应字符串值之前添加的字符序列。

  • 后缀 :指定在相应字符串值之后添加的字符序列。

前缀和后缀为可选。

位置模式

在此字段中,输入规则,以定义要在何处让 PyCharm 将字面量识别为注入。

除了 psiElement() 和 string() 等平台模式外,还可以使用以下 Python 特定模式:

  • pyLiteralExpression() :匹配文字表达式,例如字符串文字。

  • pyStringLiteralMatches("regexp") :匹配其值包含指定正则表达式匹配项的字符串文字。 匹配不区分大小写,并且 . 也会匹配换行符。 文档字符串和长度为 10,000 个字符或以上的字符串文字不会被匹配。

  • pyArgument("function_name", index) :匹配对具有指定名称的函数或方法的调用中的实参。 index 是该实参从零开始的位置。 PyCharm 会将函数名称与调用中的名称进行比较,而不会解析该函数。

  • pyModuleFunctionArgument("function_name", index, "module_name") :匹配对指定模块顶层定义的函数进行调用时的实参。 module_name 是不带扩展名的模块文件名称,而不是模块的限定名称。 例如,对于 mypkg/db_utils.py ,请指定 db_utils。

  • pyMethodArgument("method_name", index, "class_qualified_name") :匹配对在具有指定限定名称的类中定义的方法进行调用时的实参。 对于继承的方法,请指定定义该方法的类。 PyCharm 会根据对象的推断类型解析调用,因此不会匹配未知类型对象上的调用。

pyArgument()、 pyModuleFunctionArgument() 和 pyMethodArgument() 模式不匹配关键字实参,例如 execute(sql="...")。

要组合条件,请使用 .and()。

示例:

将一种语言注入到以 SELECT 开头的字符串文字中:

pyStringLiteralMatches("^\\s*SELECT\\s")

将一种语言注入到对名为 execute 的函数或方法进行的任意调用的第一个实参中:

pyLiteralExpression().and(pyArgument("execute", 0))

将一种语言注入 run_query() 函数的第一个实参中,该函数定义于 db_utils.py :

pyModuleFunctionArgument("run_query", 0, "db_utils")

将一种语言注入 仓库 类的 query() 方法的第一个实参中,该类定义于 myapp/db.py :

pyMethodArgument("query", 0, "myapp.db.Repository")

多种模式

可以为单个注入规则定义多种位置模式。 只要有任一模式匹配,注入就会激活(以 OR 逻辑组合)。 每种模式单独占一行。

高级

在此区域,可选地指定其他设置以收窄注入规则适用的上下文,从而实现对注入过程更细粒度的控制。

  • 值模式 :输入一个正则表达式,用于确定注入语言的上下文。 通过使用模式的第一个捕获组作为注入目标,您可以将过程配置为仅将语言注入到匹配特定模式的值中,或注入到匹配该模式的多个部分中。

  • 单个文件 - 如果此选项关闭,与值模式匹配的片段将被单独处理,视为不同的“文件”——例如,从片段编辑器的视角来看。

    如果该选项开启,相应片段将合并为一个整体或"文件"。

    给定的值模式

    xxx (.+) yyy (.+) zzz

    以及片段

    xxx select * yyy from family zzz,

    select * 和 from family 在选项关闭时将被视为两个独立的片段(或"文件")。 如果该选项开启, select * from family 将被视为一个整体或"文件"。

2026年 11月 3日