Neovim 自动命令使用 lua 在 Markdown 文件中添加当前日期

问题描述 投票:0回答:1

lua新手。我想在我的 config.lua 中创建一个仅适用于 .md 文件的

autocmd
。每次保存文件时,它都会查找以
Date: *
开头的行并将其更改为
Date: strftime("%Y/%M/%d")
。我一直在查看链接,更具体地说,在下面

:autocmd BufWritePre,FileWritePre *.html   ks|call LastMod()|'s
:fun LastMod()
:  if line("$") > 20
:    let l = 20
:  else
:    let l = line("$")
:  endif
:  exe "1," .. l .. "g/Last modified: /s/Last modified: .*/Last modified: " ..
:  \ strftime("%Y %b %d")
:endfun

但我想在 lua 中做到这一点。

这可能吗?

lua neovim
1个回答
0
投票

我们为

BufWritePre
事件创建一个命令。当此事件触发时,我们检索正在写入的缓冲区,然后循环遍历其行。一旦我们找到以
Date:
开头的行,我们会将其替换为当前日期,然后将其保存。

vim.api.nvim_create_autocmd(
  "BufWritePre", {
  pattern = "*.md",
  callback = function()
    local bufnr = vim.api.nvim_get_current_buf()

    for line_num = 0, vim.api.nvim_buf_line_count(bufnr) - 1 do
      local line = vim.api.nvim_buf_get_lines(bufnr, line_num, line_num + 1, false)[1]

      if line:match("^Date:") then
        local new_date = os.date("Date: %Y/%m/%d")

        vim.api.nvim_buf_set_lines(bufnr, line_num, line_num + 1, false, { new_date })
        break
      end
    end
  end
})
© www.soinside.com 2019 - 2024. All rights reserved.