Vim autosave
To automatically save your changes in NeoVim you can use the auto-save plugin.
It has some nice features
- Automatically save your changes so the world doesn't collapse
- Highly customizable:
- Conditionals to assert whether to save or not
- Execution message (it can be dimmed and personalized)
- Events that trigger auto-save
- Debounce the save with a delay
- Hook into the lifecycle with autocommands
- Automatically clean the message area
Installation ⚑
{
  "okuuva/auto-save.nvim",
  cmd = "ASToggle", -- optional for lazy loading on command
  event = { "InsertLeave", "TextChanged" }, -- optional for lazy loading on trigger events
  opts = {
    -- your config goes here
    -- https://github.com/okuuva/auto-save.nvim?tab=readme-ov-file#%EF%B8%8F-configuration
    execution_message = {
      enabled = false,
    },
  },
},
Disable for specific filetypes⚑
The condition field of the configuration allows the user to exclude auto-save from saving specific buffers. This can be useful for example if you have a broken LSP that is making editing the markdown files an absolute hell.
Here is an example that disables auto-save for specified file types:
{
  condition = function(buf)
    local filetype = vim.fn.getbufvar(buf, "&filetype")
    -- don't save for `sql` file types
    if vim.list_contains({ "markdown" }, filetype) then
      return false
    end
    return true
  end
}
You may also exclude special-buffers see (:h buftype and :h special-buffers):
{
  condition = function(buf)
    -- don't save for special-buffers
    if vim.fn.getbufvar(buf, "&buftype") ~= '' then
      return false
    end
    return true
  end
}
Buffers that are nomodifiable are not saved by default.
Usage⚑
Besides running auto-save at startup (if you have enabled = true in your config), you may as well:
- ASToggle: toggle auto-save