Revolutionize Your Neovim Tab Workflow: Introducing Enhanced Tab Scoping!
Elevate your Neovim tab game with our cutting-edge plugin. Bye-bye cluttered tabs, hello streamlined efficiency!
This plugin revolutionizes tab management by introducing scoped buffers.
Seamlessly navigate through buffers within each tab using commands like
:bnext
and :bprev
. No more buffer chaos!
Experience the power of scoped buffers, boost productivity, and reclaim your editing flow.
Upgrade your Neovim tabs now with your favorite package manager!
{ "tiagovla/scope.nvim", config = true }
-- init.lua
require("scope").setup({})
You can customize the behavior of Scope.nvim using the provided hooks in your configuration. Here's an example of how to set up the pre_tab_enter
hook:
-- init.lua
require("scope").setup({
hooks = {
pre_tab_enter = function()
-- Your custom logic to run before entering a tab
end,
},
})
The pre_tab_enter hook allows you to define custom actions to run before entering a tab. This function is just one of several hooks you can use to further customize your experience with Scope.nvim.
Here's an overview of the available hooks:
pre_tab_enter
: Run custom logic before entering a tab.post_tab_enter
: Run custom logic after entering a tab.pre_tab_leave
: Run custom logic before leaving a tab.post_tab_leave
: Run custom logic after leaving a tab.pre_tab_close
: Run custom logic before closing a tab.post_tab_close
: Run custom logic after closing a tab.
Command |
Description |
---|---|
:ScopeMoveBuf <tab_nr> |
Move current buffer to the specified tab. If tab_nr is omitted/invalid, scope.nvim will prompt for a tab number. If current buf is the only buf in current tab, it will be "copied" to target to retain the layout, otherwise, it will be "moved" |
Extension to show all buffers from all tabs.
-- init.lua
require("telescope").load_extension("scope")
:Telescope scope buffers
Extension to allow the usage of the plugin with session managers.
-- init.lua
vim.opt.sessionoptions = { -- required
"buffers",
"tabpages",
"globals",
}
require("scope").setup({})
📌 Nvim-Possession
{
"gennaro-tedesco/nvim-possession",
lazy = false,
dependencies = {
{
"tiagovla/scope.nvim",
lazy = false,
config = true,
},
},
config = function()
require("nvim-possession").setup({
autoload = true,
autoswitch = {
enable = true,
},
save_hook = function()
vim.cmd([[ScopeSaveState]]) -- Scope.nvim saving
end,
post_hook = function()
vim.cmd([[ScopeLoadState]]) -- Scope.nvim loading
end,
})
end,
},
Commands | Description |
---|---|
:ScopeLoadState |
load the plugin's state as a global variable from a session file |
:ScopeSaveState |
save the plugin's state as a global variable in a session file |
Additionally, the API endpoints
require("scope.session").serialize_state()
and
require("scope.session").deserialize_state(state)
are available in case
the user prefers to handle the state manually.
Extension allows the usage of any supported plugin which wants to store/restore its data.
Resession.nvim
{
"stevearc/resession.nvim",
lazy = false,
dependencies = {
{
"tiagovla/scope.nvim",
lazy = false,
config = true,
},
},
opts = {
-- override default filter
buf_filter = function(bufnr)
local buftype = vim.bo[bufnr].buftype
if buftype == 'help' then
return true
end
if buftype ~= "" and buftype ~= "acwrite" then
return false
end
if vim.api.nvim_buf_get_name(bufnr) == "" then
return false
end
-- this is required, since the default filter skips nobuflisted buffers
return true
end,
extensions = { scope = {} }, -- add scope.nvim extension
}
},
Pull requests from contributors are warmly welcome. To ensure the highest
quality, please remember to carefully review the formatting using stylua
.