1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# NVIM Buffer Browse
`:b#` on steroids. Browse your buffers like you browse history in a browser.
## Motivation
While `:bnext` and `:bprev` allows you to browse between buffers, it is not
very intuitive. Oftentimes I jump to definitions and `:bprev` would then end up
in a completely different file, because buffers are ordered by when they are
opened, not by history. `:b#`, <Ctrl-6> and <Ctrl-O> works only
assuming you didn't navigate further.
I wanted to be able to browse buffers in a way that is similar to how you
browse tabs in a browser.
## Usage
This plugin implements two functions: `require('buffer-browser').next()` and
`require('buffer-browser').prev()`.
You can easily map these to whatever you want. Here is an example `init.lua`:
```lua
vim.api.nvim_set_keymap('n', '<leader>b[', require("buffer_browser").next(), {desc = "Next [B]uffer [[]"})
vim.api.nvim_set_keymap('n', '<leader>b]', require("buffer_browser").prev(), {desc = "Previous [B]uffer []]"})
```
Use these to navigate your buffer history in the order that you opened them.
### Splits
If a split has been performed, the new split will not preserve any of the previous history.
## Insallation
Install through any of your favorite plugin managers.
### [lazy](https://www.lazyvim.org).
Make sure to run the setup function. For example with lazy:
```lua
{
'https://git.sr.ht/~marcc/BufferBrowser',
}
```
Then run
```lua
require('buffer_browser').setup()
```
### Configuration
You can configure the `filetype_filters` by passing a table to the `setup`
function. This is the default config:
```lua
require('buffer-browser').setup({
-- '' + 'netrw' is used to filter out netrw.
filetype_filters = ['', 'netrw', 'gitcommit', 'TelescopePrompt']
})
```
This can be used to filter out buffers you do not want in the history.
#### Limitation
To filter out netrw, we need to also filter out `''`, as the filetype
occassionally gets set to that by netrw (not sure why...). This means files
without filetype are filtered out.
## Credits
The plugin is mostly a copy of
[ton/vim-bufsurf](https://github.com/ton/vim-bufsurf), but rewritten in Lua and
adds the ability to filter unwanted filetypes to get rid of netrw buffers.
|