M.changeheader = function()
-- We only can run this function if the file is modifiable
local bufnr = vim.api.nvim_get_current_buf()
if not vim.api.nvim_buf_get_option(bufnr, "modifiable") then
require("notify")("Current file not modifiable!")
return
end
-- if not vim.api.nvim_buf_get_option(bufnr, "modified") then
-- require("notify")("Current file has not changed!")
-- return
-- end
if vim.fn.line("$") >= 7 then
os.setlocale("en_US.UTF-8") -- show Sun instead of dom (portuguese)
local time = os.date("%a, %d %b %Y %H:%M:%S")
local l = 1
while l <= 7 do
vim.fn.setline(l, vim.fn.substitute(vim.fn.getline(l), 'last (change|modified): \\zs.*', time , 'gc'))
l = l + 1
end
require("notify")("Changed file header!")
end
end
2条答案
按热度按时间yfwxisqw1#
您可以使用
<C-O>
或变更标记````,以互动方式移回原始位置,如vim replace all without cursor moving所示。在Vimscript中,特别是在每次缓冲区写入时运行此脚本时,我将 Package 代码:
以前的移动命令可能仍然会影响 * 窗口视图 *(即视口中显示的确切行和列),而此解决方案会将所有内容恢复为原来的样子。
额外奖励
另外,请注意,在
:substitute
中使用的{pattern}
会添加到搜索历史记录中。(The当您在
:function
中使用此功能时,搜索模式本身不会受到影响。)或者使用Vim8:
相关插件
我已经在我的AutoAdapt plugin中实现了类似的功能,你也会看到所有这些技巧。
vs3odd8k2#
我认为使用函数
substitute()
可以保存你的changelist和jumplist.在neovim中我使用了一个函数来改变文件修改的日期,方法是: