• Stars
    star
    813
  • Rank 55,552 (Top 2 %)
  • Language
    Lua
  • License
    MIT License
  • Created about 2 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A full featured IDE layer for Neovim. Heavily inspired by VSCode.
โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ•—   โ–ˆโ–ˆโ–ˆโ•—      โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
โ–ˆโ–ˆโ–ˆโ–ˆโ•—  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ–ˆโ–ˆโ•‘      โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•”โ•โ•โ•โ•โ•
โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘   โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ–ˆโ–ˆโ–ˆโ–ˆโ•”โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—  
โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•—โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•— โ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘โ•šโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ•‘โ•šโ•โ•โ•โ•โ•โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘  โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•”โ•โ•โ•  
โ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•‘ โ•šโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ• โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ•‘ โ•šโ•โ• โ–ˆโ–ˆโ•‘      โ–ˆโ–ˆโ•‘โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•”โ•โ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ–ˆโ•—
โ•šโ•โ•  โ•šโ•โ•โ•โ•  โ•šโ•โ•โ•โ•  โ•šโ•โ•โ•šโ•โ•     โ•šโ•โ•      โ•šโ•โ•โ•šโ•โ•โ•โ•โ•โ• โ•šโ•โ•โ•โ•โ•โ•โ•

nvim-ide

Workflow Video

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.

Getting started

Ensure you have Neovim v0.8.0 or greater.

  1. Get the plugin via your favorite plugin manager.

Plug:

Plug 'ldelossa/nvim-ide'

Packer.nvim:

use {
    'ldelossa/nvim-ide'
}
  1. 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",
    -- Set the log level for nvim-ide's log. Log can be accessed with 
    -- 'Workspace OpenLog'. Values are 'debug', 'warn', 'info', 'error'
    log_level = "info",
    -- 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 overridden, 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
    }
})
  1. Issue the "Workspace" command to begin discovering what's available.

  2. Begin reading ":h nvim-ide"

Best used with

nvim-ide is best used with:

fuzzy-searching:

pretty notifications:

vscode-like "peek":

deeper git integration:

debugging:

More Repositories

1

gh.nvim

A fully featured GitHub integration for performing code reviews in Neovim.
Lua
517
star
2

litee.nvim

A framework for building Neovim plugins
Lua
402
star
3

way-shell

A Gnome-like shell for wayland compositors
C
129
star
4

litee-calltree.nvim

Neovim's missing call hierarchy UI
Lua
126
star
5

sway-fzfify

A set of script to incorporate fzf into your sway desktop
Shell
81
star
6

vimdark

A dark theme for vim based on vim-monotonic and chrome's dark reader
Vim Script
69
star
7

dotfiles

Lua
58
star
8

buffertag

Lua
47
star
9

litee-symboltree.nvim

A document outline tool implemented with the litee.nvim library
Lua
45
star
10

nvim-dap-projects

Lua
45
star
11

litee-bookmarks.nvim

A litee.nvim backed plugin for saving important places in your code.
Lua
28
star
12

litee-filetree.nvim

A file explorer implemented with the litee.nvim library.
Lua
27
star
13

sway-rofi-scripts

A set of scripts which instrument Rofi for Sway usage.
Shell
11
star
14

diskmonitor

Python
6
star
15

SystemsAndPerformance

4
star
16

cluster-tooling

Tooling to help create Cilium clusters in various environments
Makefile
4
star
17

distlock

postgres backed distributed lock
Go
3
star
18

vim-grpc.vim

Go
2
star
19

bg_deploy

Script for handling blue green deployments in AWS
Python
2
star
20

ebpf-net

ebpf-net
C
2
star
21

HtAccessConverter

Converts .htaccess files to nginx server blocks.
Python
1
star
22

pubsub

Tools to abstract google's pubsub usage in Golang.
Go
1
star
23

goframework

various Go packages used between projects
Go
1
star
24

cmds

CLI wrapper for all my shell scripts
Shell
1
star
25

KVM_Helper_Scripts

A set of scripts which slipstreams KVM tasks
Shell
1
star
26

importfinder

A simple go command line tool to recursively find imported go packages
Go
1
star
27

FFproxy

Go
1
star
28

salt-grains-tutorial

Shell
1
star
29

dns

Library for parsing DNS wire format
Go
1
star
30

haproxy_rest

Python
1
star
31

ldelossa-blog

svelte driven blog
Svelte
1
star
32

NitroRestClient

A python rest wrapper for the Netscaler Nitro API
Python
1
star
33

APIclient

Golang scaffolding code for an API client
Go
1
star
34

responserecorder

A ResponseRecorder for production
Go
1
star