You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vim中Twig文件HTML缩进异常,求可行解决方案

解决Twig文件中HTML内容的缩进问题

以下是几个针对性的解决方案,你可以逐一尝试:

  • 自定义Vim缩进规则
    在你的.vimrc或者~/.vim/ftplugin/twig.vim文件中添加自定义缩进函数,同时处理Twig块和HTML标签的缩进逻辑:

    autocmd FileType twig setlocal indentexpr=TwigIndent(v:lnum)
    function! TwigIndent(lnum)
        let line = getline(a:lnum)
        let prev_line = getline(a:lnum - 1)
        let indent = indent(a:lnum - 1)
        
        " 处理HTML开启标签的缩进
        if prev_line =~# '<\w\+[^>]*>$' && prev_line !~# '<\/\w\+>' && prev_line !~# '<\w\+[^>]*\/>'
            let indent += &shiftwidth
        " 处理HTML闭合标签的缩进
        elseif line =~# '^\s*<\/\w\+>'
            let indent -= &shiftwidth
        endif
        
        " 处理Twig block的缩进
        if prev_line =~# '{%\s*block\s.*%}'
            let indent += &shiftwidth
        elseif line =~# '{%\s*endblock\s*%}'
            let indent -= &shiftwidth
        endif
        
        return indent
    endfunction
    

    保存后重启Vim,或者执行:source %加载配置,之后自动缩进和手动缩进(==命令)都会生效。

  • 使用Neoformat + twig-beautify

    1. 全局安装twig-beautify:npm install -g twig-beautify
    2. 在Vim中安装Neoformat插件(比如通过Vundle/Plug)
    3. 在.vimrc中添加配置:
      autocmd FileType twig setlocal formatprg=twig-beautify
      let g:neoformat_enabled_twig = ['twigbeautify']
      

    之后执行:Neoformat命令就能一键格式化Twig文件,它能识别Twig语法并正确缩进内部的HTML标签。

  • 修正Prettier插件配置
    如果你坚持用Prettier,确保本地项目依赖安装正确,并配置.prettierrc文件:

    1. 项目内安装依赖:npm install prettier @supersoniks/prettier-plugin-twig-melody --save-dev
    2. 根目录创建.prettierrc:
      {
        "plugins": ["@supersoniks/prettier-plugin-twig-melody"],
        "tabWidth": 4,
        "useTabs": false,
        "twigMelody": {
          "indentWith": "    ",
          "preserveComments": true
        }
      }
      
    3. 配置ALE插件(如果用的话):
      let g:ale_fixers = {
          \ 'twig': ['prettier'],
          \ }
      let g:ale_prettier_options = '--plugin=@supersoniks/prettier-plugin-twig-melody'
      

    这样ALE调用Prettier时会正确加载Twig插件,处理缩进问题。

  • 临时用VS Code辅助格式化
    如果以上Vim方案都不生效,可以临时用VS Code过渡:

    1. 安装Twig Language 2和Prettier插件
    2. 在settings.json中添加:
      "[twig]": {
        "editor.defaultFormatter": "esbenp.prettier-vscode",
        "prettier.documentSelectors": ["**/*.twig"]
      }
      

    打开Twig文件按Ctrl+Shift+I格式化后,再回到Vim使用即可。

内容的提问来源于stack exchange,提问作者kevgiraultdev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 18:07:40