before.nvim icon indicating copy to clipboard operation
before.nvim copied to clipboard

Jump to the last edit in Neovim

before.nvim

Purpose

Track edit locations and jump back to them, like changelist, but across buffers.

peeked

Installation

lazy.nvim

{
  'bloznelis/before.nvim',
  config = function()
    local before = require('before')
    before.setup()

    -- Jump to previous entry in the edit history
    vim.keymap.set('n', '<C-h>', before.jump_to_last_edit, {})

    -- Jump to next entry in the edit history
    vim.keymap.set('n', '<C-l>', before.jump_to_next_edit, {})

    -- Look for previous edits in quickfix list
    vim.keymap.set('n', '<leader>oq', before.show_edits_in_quickfix, {})

    -- Look for previous edits in telescope (needs telescope, obviously)
    vim.keymap.set('n', '<leader>oe', before.show_edits_in_telescope, {})
  end
}

Configuration

Settings

require('before').setup({
  -- How many edit locations to store in memory (default: 10)
  history_size = 42
  -- Wrap around the ends of the edit history (default: false)
  history_wrap_enabled = true
})

Telescope picker

-- You can provide telescope opts to the picker as show_edits_in_telescope argument:
vim.keymap.set('n', '<leader>oe', function()
  before.show_edits_in_telescope(require('telescope.themes').get_dropdown())
end, {})

Register Telescope extension

You may also register the extension via telescope:

require 'telescope'.setup({ '$YOUR_TELESCOPE_OPTS' })
require 'telescope'.load_extension('before')

Then call via vimscript:

:Telescope before

or lua:

require 'telescope'.extensions.before.before