-
Notifications
You must be signed in to change notification settings - Fork 5
/
cybu.nvim.txt
233 lines (196 loc) · 8.4 KB
/
cybu.nvim.txt
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
*cybu.nvim.txt* cybu.nvim for neovim 0.7.0+ Author: Gero Hillebrandt
================================================================================
TABLE OF CONTENTS *cybu.nvim.toc*
1. Introduction (|cybu.nvim|)
2. Quickstart (|cybu-quickstart|)
3. Configuration (|cybu-config|)
4. Commands (|cybu-commands|)
5. Mappings (|cybu-mappings|)
6. Lua functions (|cybu-lua|)
7. Auto commands (|cybu-autocmds|)
================================================================================
INTRODUCTION *cybu.nvim*
This plugin offers two modes. The first is essentially a wrapper around |:bnext|
& |:bprevious|, which adds a customizable window, that shows the buffer in focus
and its neighbors, when cycling the buffer list with the cybu commands.
The second mode adds the same customizable window providing context,
but the list of buffers is ordered by last used. It is more akin to the
[Alt] + [Tab] functionality a web browser might provide.
================================================================================
QUICKSTART *cybu-quickstart*
If you just want to use Cybu.nvim with the default settings (|cybu-config|)
put this into the your packer startup function:
>
use({
"ghillb/cybu.nvim",
branch = "main", -- branch with timely updates
-- branch = "v1.x", -- won't receive breaking changes
requires = { "kyazdani42/nvim-web-devicons" },
config = function()
require("cybu").setup()
vim.keymap.set("n", "K", "<Plug>(CybuPrev)")
vim.keymap.set("n", "J", "<Plug>(CybuNext)")
vim.keymap.set("n", "<c-s-tab>", "<plug>(CybuLastusedPrev)")
vim.keymap.set("n", "<c-tab>", "<plug>(CybuLastusedNext)")
end,
})
<
If you use another plugin manager, just install `"ghillb/cybu.nvim"` with
it, like you would with any other plugin and put
>
require("cybu").setup()
vim.keymap.set("n", "[b", "<Plug>(CybuPrev)")
vim.keymap.set("n", "]b", "<Plug>(CybuNext)")
vim.keymap.set({ "n", "v" }, "<a-s-tab>", "<plug>(CybuLastusedPrev)")
vim.keymap.set({ "n", "v" }, "<a-tab>", "<plug>(CybuLastusedNext)")
<
somewhere into your |init.lua|.
If you want to customize the cybu settings see the |cybu-config| section.
================================================================================
CONFIG *cybu-config*
The table below contains all config keys with some exemplary values.
>
local config = {
position = {
relative_to = "win", -- win, editor, cursor
anchor = "topcenter", -- topleft, topcenter, topright,
-- centerleft, center, centerright,
-- bottomleft, bottomcenter, bottomright
vertical_offset = -1, -- vertical offset from anchor in lines
horizontal_offset = -1, -- vertical offset from anchor in columns
max_win_height = 5, -- height of cybu window in lines
max_win_width = 0.5, -- integer for absolute in columns
-- float for relative width to win/editor
},
style = {
path = "relative", -- absolute, relative, tail (filename)
path_abbreviation = "none", -- none, shortened
border = "single", -- single, double, rounded, none
separator = " ", -- string used as separator
prefix = "…", -- string prefix for truncated paths
padding = 1, -- left & right padding in nr, of spaces
hide_buffer_id = false, -- hide buffer IDs in window
devicons = {
enabled = true, -- enable or disable web dev icons
colored = true, -- enable color for web dev icons
truncate = true, -- truncate dev icons to one char width
},
highlights = { -- see highlights via :highlight
current_buffer = "CybuFocus", -- current / selected buffer
adjacent_buffers = "CybuAdjacent", -- buffers not in focus
background = "CybuBackground", -- the window background
border = "CybuBorder", -- border of the window
},
},
behavior = { -- set behavior for different modes
mode = {
default = {
switch = "immediate", -- immediate, on_close
view = "rolling", -- paging, rolling
},
last_used = {
switch = "on_close", -- immediate, on_close
view = "paging", -- paging, rolling
},
auto = {
view = "rolling",
},
},
show_on_autocmd = false, -- event to trigger cybu (eg. "BufEnter")
},
display_time = 750, -- time in ms the cybu win is displayed
exclude = { -- filetypes, cybu will not be active
"neo-tree",
"fugitive",
"qf",
},
filter = {
unlisted = true, -- filter & fallback for unlisted buffers
},
fallback = function() end, -- arbitrary fallback function
-- used in excluded filetypes
}
After customizing the config table, call the |cybu.setup| function somewhere
in your |init.lua|, like so:
>
require("cybu").setup(config)
<
================================================================================
COMMANDS *cybu-commands*
The commands *CybuNext* & *CybuPrev* cycle to the next or previous buffer and
show the context window of Cybu.nvim.
Example usage:
>
:CybuNext
<
or
>
:CybuPrev
<
The commands *CybuLastusedNext* & *CybuLastusedPrev* cycle to the next or previous
buffer in the last used after the context window of Cybu.nvim is dismissed.
Example usage:
>
:CybuLastusedNext
<
or
>
:CybuLastusedPrev
<
================================================================================
MAPPINGS *cybu-mappings*
If you prefer <Plug> mappings, Cybu.nvim provides the mappings
*<Plug>(CybuPrev)* and *<Plug>(CybuNext)* which yield the same behavior as
|CybuNext| and |CybuPrev| respectively.
Example usage:
>
vim.keymap.set("n", "K", "<Plug>(CybuPrev)")
vim.keymap.set("n", "J", "<Plug>(CybuNext)")
<
Similar mappings exist for |CybuLastusedNext| and |CybuLastusedPrev|.
Example usage:
>
vim.keymap.set("n", "<a-s-tab>", "<plug>(CybuLastusedPrev)")
vim.keymap.set("n", "<a-tab>", "<plug>(CybuLastusedNext)")
<
Beware the <a-tab> and <a-s-tab> mappings do not work out of the box for
all terminals.
================================================================================
LUA_FUNCTIONS *cybu-lua*
cybu.setup({config}) *cybu.setup*
The |cybu.setup| function takes an {config} table as parameter containing
the configuration (|cybu-config|) for |cybu.nvim|. This function must be
called in your |init.lua|. The options table can be empty.
Example usage:
>
require("cybu").setup(config)
<
cybu.cycle({direction}, [{mode}]) *cybu.cycle*
Cybu.nvim provides the |cybu.cycle| lua function, which takes the {direction}
parameter to load the respective buffer and show the context window.
Example usage:
>
require("cybu").cycle("next")
<
or
>
require("cybu").cycle("prev", "last_used")
<
================================================================================
AUTOCOMMANDS *cybu-autocmds*
Cybu.nvim defines two events:
- `CybuOpen`, fired when the cybu window is opened
- `CybuClose`, fired when the cybu window is closed
You can define auto commands for these events like so:
>
local cybu = vim.api.nvim_create_augroup("Cybu", { clear = true })
vim.api.nvim_create_autocmd("User", {
pattern = "CybuOpen",
callback = function()
-- execute arbitrary lua code here
end,
group = cybu,
})
<
================================================================================
vim:tw=78:ts=8:ft=help:norl: