Skip to content

tayheau/nux.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

nux.nvim - a neovim mutliplexer

Multiplexer inside nvim giving you control on your workspaces.

⚠️ Work in Progress – Contributions and stars are welcome!

Check out the TODO section for upcoming features.


nux_demo.mp4

Table of Contents


Features

  • Project Picker: Quickly switch between projects.
  • Custom Project Layouts: Define project roots and specify which files open in a new tab. Tabs open files in a spiral layout.
  • Smart Tab Naming: Tabs automatically adapt names to match the current project.
  • Terminal Integration: Open terminal sessions from your project configuration using term.
  • Flexible File Selection (WIP): Advanced filtering with a domain-specific language (DSL) for selecting files by folder, type, or last modified time.

Installation

vim.pack

vim.pack.add(
	{ src = "https://github.com/tayheau/nux.nvim" }
)

lazy.nvim

{
  "tayheau/nux.nvim"
}

Usage

  1. Create a projects file (currently in .config/nvim) specifying the root and the files you want to open:
~/Foo/bar far.c term

term opens a terminal in that tab.

  1. Open the project picker: select the project using :Nux pickprojects and let nux.nvim arrange your workspace automatically.
  2. Tabs: Tabs will be named smartly based on your project, keeping your workspace organized.

Configuration

Currently, the plugin is purely lazy loaded so there is no need to call setup() but it also mean no configuration at the moment. This is the very first commit so this is more of a personnal project but once again you are more than welcome to contribute to it and help nux.nvim to become a complete and robust nvim multiplexer !

One personnal recommandation would be to bind some key to the :Nux pickprojects command :

vim.keymap.set('n', '<leader>p', ':Nux pickprojects<CR>')

TODO

  • select if you want the built-in header setup()
  • close all buffers of the tab when closing the tab (except potentially running term process and non saved files) setup()
  • save current layout on quit
  • launch terminal process in background or front
  • dont allow duplicates (show it in the picker too)
  • allow custom name (inplace or not) rename(tabId, newName, inplace:bool) renameInplace() = partial rename(tabId, newName, true)
  • Floating window selector - shows files in different hl
    • make parser and domain specific language to allow more control on files :
    • e.g: {LAST_MODIFIED:folder}/*.py
    • 1st LEXING : split into tokens
    • 2nd PARSING: understanding thoses tokens
    • 3rd BUILDING : return a comprehensive list of instructions (dict root, files)

About

A neovim multiplexer

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages