Vim中Python格式化字符串花括号及内容语法高亮配置求助
Vim Python格式化字符串(f-string)花括号高亮问题解决方案
方案1:使用成熟语法增强插件
直接安装vim-python/python-syntax插件即可,该插件是社区维护的Python语法增强包,原生支持f-string内部花括号及内容的完整高亮,兼容Vim 8.1、8.2所有版本,安装后无需额外配置即可生效。
如果使用插件管理器安装,以Vim-Plug为例,只需在配置文件中添加对应插件声明后执行安装命令即可。
方案2:手动添加语法规则(无需插件)
如果不想额外安装插件,可以直接修改Vim的Python语法配置文件实现效果。
注意:优先推荐修改用户本地配置目录下的
~/.vim/syntax/python.vim(如果目录不存在手动创建即可),不会被系统Vim更新覆盖;需要全局生效的话再修改/usr/share/vim/vim81/syntax/python.vim。
将以下规则添加到对应的python.vim文件末尾即可:
" f-string内部花括号内容匹配规则 syn match pythonFStringContent /{\s*\zs.\{-}\ze\s*}/ contained containedin=pythonString,pythonMultiLineString syn region pythonFString matchgroup=pythonString start=/\([fF]\)"\@=/ skip=/\\$/ end=/"/ contains=pythonEscape,pythonFStringContent syn region pythonFString matchgroup=pythonString start=/\([fF]\)'\@=/ skip=/\\$/ end=/'/ contains=pythonEscape,pythonFStringContent syn region pythonFString matchgroup=pythonString start=/\([fF]\)"""\@=/ skip=/\\$/ end=/"""/ contains=pythonEscape,pythonFStringContent syn region pythonFString matchgroup=pythonString start=/\([fF]\)'''\@=/ skip=/\\$/ end=/'''/ contains=pythonEscape,pythonFStringContent " 高亮组关联,可根据个人配色偏好调整关联的高亮组 hi def link pythonFStringContent Constant
如果需要支持带组合前缀的f-string(如rf、fr等),只需要在规则的前缀匹配部分补充对应字符即可,规则逻辑通用。
内容的提问来源于stack exchange,提问作者nst0022
相关产品推荐
相关产品推荐

