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 中做到这一点。
这可能吗?
我们为
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
})