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

如何将Django模板标签补全从Vim配置迁移到Lua?

把Vim Surround的Django模板配置转换为Neovim Lua代码

核心转换逻辑

Vim中缓冲区局部的b:surround_{char2nr("x")}变量,在Lua里需要通过字符串拼接+vim.b接口来设置:用vim.fn.char2nr()代替原Vim的char2nr()函数,再把结果拼接到surround_字符串后,作为vim.b的键名。

完整Lua配置

下面是对应你原有Vim配置的Lua版本,并且添加了自动命令,确保只在Django模板文件(文件类型通常为htmldjango或djangohtml)中生效:

-- 为Django模板文件配置surround规则
vim.api.nvim_create_autocmd('FileType', {
  pattern = {'htmldjango', 'djangohtml'},
  callback = function()
    -- 对应原配置: let b:surround_{char2nr("v")} = "{{ \r }}"
    vim.b['surround_' .. vim.fn.char2nr('v')] = '{{ \r }}'
    -- 对应原配置: let b:surround_{char2nr("{")} = "{{ \r }}"
    vim.b['surround_' .. vim.fn.char2nr('{')] = '{{ \r }}'
    -- 对应原配置: let b:surround_{char2nr("%")} = "{% \r %}"
    vim.b['surround_' .. vim.fn.char2nr('%')] = '{% \r %}'
    -- 对应原配置: let b:surround_{char2nr("b")} = "{% block \1block name: \1 %}\r{% endblock \1\1 %}"
    vim.b['surround_' .. vim.fn.char2nr('b')] = '{% block \1block name: \1 %}\r{% endblock \1\1 %}'
    -- 对应原配置: let b:surround_{char2nr("i")} = "{% if \1condition: \1 %}\r{% endif %}"
    vim.b['surround_' .. vim.fn.char2nr('i')] = '{% if \1condition: \1 %}\r{% endif %}'
    -- 对应原配置: let b:surround_{char2nr("w")} = "{% with \1with: \1 %}\r{% endwith %}"
    vim.b['surround_' .. vim.fn.char2nr('w')] = '{% with \1with: \1 %}\r{% endwith %}'
    -- 对应原配置: let b:surround_{char2nr("f")} = "{% for \1for loop: \1 %}\r{% endfor %}"
    vim.b['surround_' .. vim.fn.char2nr('f')] = '{% for \1for loop: \1 %}\r{% endfor %}'
    -- 对应原配置: let b:surround_{char2nr("c")} = "{% comment %}\r{% endcomment %}"
    vim.b['surround_' .. vim.fn.char2nr('c')] = '{% comment %}\r{% endcomment %}'
  end
})

说明

  • 自动命令的pattern参数可以根据你实际的Django模板文件类型调整,如果不确定可以用:set filetype?命令查看当前模板文件的类型。
  • 原配置中的\r和\1在Lua字符串中可以直接保留,因为surround插件的语法逻辑和Vim一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:15:27