███╗ ██╗██╗ ██╗██╗███╗ ███╗ ██╗██████╗ ███████╗
████╗ ██║██║ ██║██║████╗ ████║ ██║██╔══██╗██╔════╝
██╔██╗ ██║██║ ██║██║██╔████╔██║█████╗██║██║ ██║█████╗
██║╚██╗██║╚██╗ ██╔╝██║██║╚██╔╝██║╚════╝██║██║ ██║██╔══╝
██║ ╚████║ ╚████╔╝ ██║██║ ╚═╝ ██║ ██║██████╔╝███████╗
╚═╝ ╚═══╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚═════╝ ╚══════╝
nvim-ide
is a complete IDE layer for Neovim, heavily inspired by vscode
.
It provides a default set of components, an extensible API for defining your own, IDE-like panels and terminal/utility windows, and the ability to swap between user defined panels.
This plugin is for individuals who are looking for a cohesive IDE experience from Neovim and are less concerned with mixing and matching from the awesome ecosystem of Neovim plugins.
The current set of default components include:
- Bookmarks - Per-workspace collections of bookmarks with sticky support.
- Branches - Checkout and administer the workspaces's git branches
- Buffers - Display and administer the currently opened buffers.
- CallHierarchy - Display an LSP's CallHierarchy request in an intuitive tree.
- Changes - Display the current git status and stage/restore/commit/amend the diff.
- Commits - Display the list of commits from HEAD, view a read only diff or checkout a commit and view a modifiable diff.
- Explorer - A file explorer which supports file selection and recursive operations.
- Outline - A real-time LSP powered source code outline supporting jumping and tracking.
- TerminalBrowser - A terminal manager for creating, renaming, jumping-to, and deleting terminal instances.
- Timeline - Displays the git history of a file, showing you how the file was manipulated over several commits.
We put a lot of efforts into writing docs/nvim-ide.txt
, so please refer to this
file for introduction, usage, and development information.
Ensure you have Neovim v0.8.0 or greater.
- Get the plugin via your favorite plugin manager.
Plug:
Plug 'ldelossa/nvim-ide'
use {
'ldelossa/nvim-ide'
}
- Call the setup function (optionally with the default config):
-- default components
local bufferlist = require('ide.components.bufferlist')
local explorer = require('ide.components.explorer')
local outline = require('ide.components.outline')
local callhierarchy = require('ide.components.callhierarchy')
local timeline = require('ide.components.timeline')
local terminal = require('ide.components.terminal')
local terminalbrowser = require('ide.components.terminal.terminalbrowser')
local changes = require('ide.components.changes')
local commits = require('ide.components.commits')
local branches = require('ide.components.branches')
local bookmarks = require('ide.components.bookmarks')
require('ide').setup({
-- The global icon set to use.
-- values: "nerd", "codicon", "default"
icon_set = "default",
-- Component specific configurations and default config overrides.
components = {
-- The global keymap is applied to all Components before construction.
-- It allows common keymaps such as "hide" to be overriden, without having
-- to make an override entry for all Components.
--
-- If a more specific keymap override is defined for a specific Component
-- this takes precedence.
global_keymaps = {
-- example, change all Component's hide keymap to "h"
-- hide = h
},
-- example, prefer "x" for hide only for Explorer component.
-- Explorer = {
-- keymaps = {
-- hide = "x",
-- }
-- }
},
-- default panel groups to display on left and right.
panels = {
left = "explorer",
right = "git"
},
-- panels defined by groups of components, user is free to redefine the defaults
-- and/or add additional.
panel_groups = {
explorer = { outline.Name, bufferlist.Name, explorer.Name, bookmarks.Name, callhierarchy.Name, terminalbrowser.Name },
terminal = { terminal.Name },
git = { changes.Name, commits.Name, timeline.Name, branches.Name }
},
-- workspaces config
workspaces = {
-- which panels to open by default, one of: 'left', 'right', 'both', 'none'
auto_open = 'left',
},
-- default panel sizes for the different positions
panel_sizes = {
left = 30,
right = 30,
bottom = 15
}
})
-
Issue the "Workspace" command to begin discovering what's available.
-
Begin reading ":h nvim-ide"
nvim-ide
is bested used with:
fuzzy-searching:
pretty notifications:
vscode-like "peek":
deeper git integration:
debugging: