This repo contains an opinionated implementation of Tmux and Neovim. The intention of this repo was for testing new plugins and setups in isolation. Setup not intended for use or reference of a good approach :). The current configuration is a mix up of many other developers setups and requires refining as some config unused or commented out. Work to make the changes described using GitHub Issues.
Build local container with default latest
tag:
docker build -t test-nvim-tmux -f build/Dockerfile .
docker run -it test-nvim-tmux:latest
Run tmux
to start new tmux session.
tmux
Neovim Plugins installed in standard directory:
docker run -it test:nv ls ~/.local/share/nvim/site/pack/paqs/start
Review Key Bindings.
Currently base image using latest Python image as tool chain requires it.
Underlying OS: Debian GNU/Linux 11 (bullseye)
.
Software | Description |
---|---|
Tmux | Terminal multiplexer. It lets you switch easily between several programs in one terminal, detach them (they keep running in the background) and reattach them to a different terminal. |
Neovim | hyperextensible Vim-based text editor |
Git | Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency. |
FZF | A command-line fuzzy finder |
Ripgrep | ripgrep recursively searches directories for a regex pattern while respecting your gitignore |
Plugin | Description |
---|---|
tpm | Tmux Plugin Manager |
tmux-sensible | basic tmux settings everyone can agree on |
tmux-resurrect | Persists tmux environment across system restarts. |
tmux-continuum | Continuous saving of tmux environment. Automatic restore when tmux is started. Automatic tmux start when computer is turned on. |
tmux-open | Tmux key bindings for quick opening of a highlighted file or url |
tmux-fpp | Quickly open any path on your terminal |
tmux-yank | Tmux plugin for copying to system clipboard |
tmux-fzf-session-switch (Deactivated) | Switch session using fzf popup |
tmux-keyboard-layout | Tmux plugin to show current keyboard layout |
Plugin | Category | Description |
---|---|---|
Packer | - | plugin/package management for Neovim used to install all other plugins listed |
nvim-lspconfig | LSP | Configs for the Nvim LSP client (:help lsp). |
nvim-lspinstall | LSP | Recently, neovim removed the :LspInstall function. It made it really easy to install language servers for its built in lsp |
nvim-lspfuzzy | LSP | This plugin makes the Neovim LSP client use FZF to display results and navigate the code. It works by redefining your LSP handlers so that they call FZF. |
lspkind-nvim | UI | This tiny plugin adds vscode-like pictograms to neovim built-in lsp: |
lsp-status.nvim | UI | This is a Neovim plugin/library for generating statusline components from the built-in LSP client. |
telescope.nvim | UI | highly extendable fuzzy finder over lists |
nvim-web-devicons | UI | provides the same icons as well as colors for each icon. |
lualine.nvim | UI | A blazing fast and easy to configure Neovim statusline written in Lua. |
indent-blankline.nvim | UI | This plugin adds indentation guides to all lines (including empty lines). |
trouble.nvim | UI | A pretty list for showing diagnostics, references, telescope results, quick fix and location lists to help you solve all the trouble your code is causing. |
gitsigns.nvim | UI | Super fast git decorations implemented purely in lua/teal. |
nvim-colorizer.lua | UI | A high-performance color highlighter |
vim-lastplace | UI | Intelligently reopen files at your last edit position. |
vim-visual-multi | UI | Multiple cursors |
nvim-bqf | UI | The goal of nvim-bqf is to make Neovim's quick fix window better. |
nvim-peekup | UI | Finally vim registers made easy and fun |
symbols-outline.nvim | UI | A tree like view for symbols in Neovim using the Language Server Protocol. Supports all your favourite languages. |
focus.nvim | UI | Auto-Resizing Focused Splits/Windows for Neovim |
cmp-buffer | CMP Autocomplete | nvim-cmp source for buffer words. |
cmp-cmdline | CMP Autocomplete | nvim-cmp source for vim's cmdline. |
cmp-nvim-lsp | CMP Autocomplete | nvim-cmp source for neovim's built-in language server client. |
cmp-nvim-lua | CMP Autocomplete | nvim-cmp source for neovim Lua API. |
cmp-path | CMP Autocomplete | nvim-cmp source for filesystem paths. |
nvim-cmp | CMP Autocomplete | A completion engine plugin for neovim written in Lua. |
cmp-vsnip | CMP Autocomplete | nvim-cmp source for vim-vsnip |
vim-vsnip | CMP Autocomplete | VSCode(LSP)'s snippet feature in vim. |
plenary.nvim | Utility | All the lua functions I don't want to write twice. |
editorconfig-vim | Language | EditorConfig plugin for Vim |
nvim-jqx | Language | browser and preview json files |
null-ls.nvim | Language | Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua. |
undotree | Utility | The undo history visualizer for VIM |
nvim-autopairs | Utility | auto pairs for neovim written by lua |
vim-better-whitespace | Utility | Better whitespace highlighting for Vim |
surround.nvim | Utility | A surround text object plugin for neovim written in lua |
nvim-comment | Utility | A comment toggler for Neovim, written in Lua |
dial.nvim | Utility | enhanced increment/decrement plugin for Neovim |
tabular | Utility | Vim script for text filtering and alignment |
fzf-lua | Utility | Improved fzf.vim written in lua |
The following binaries are also installed within the docker image to support neovim:
Plugin | Category | Description |
---|---|---|
material.nvim | UI: themes | A port of Material color scheme |
colorbuddy.nvim | UI: themes | A color scheme helper for Neovim. |
nvim-ts-rainbow | UI: themes | Rainbow parentheses for neovim using tree-sitter. This is a module for nvim-treesitter, not a standalone plugin. It requires and is configured via nvim-treesitter |
lsp-colors.nvim | UI: themes | Automatically creates missing LSP diagnostics highlight groups for color schemes that don't yet support the Neovim 0.5 builtin lsp client. |
nvim-treesitter | Treesitter | The goal of nvim-treesitter is both to provide a simple and easy way to use the interface for tree-sitter in Neovim |
List of plugins identified for testing
Plugin | Category | Description |
---|---|---|
Harpoon | Utility | Add bookmarks to high traffic files with ability to switch between |
playground | Utility | Treesitter playground integrated into Neovim |
Plugin | Category | Description |
---|---|---|
vim-polyglot | Language | A collection of language packs for Vim. |
vim-ripgrep | Utility | Use Ripgrep in Vim and display results in a quick fix list |
vim-rooter | Utility | Changes Vim working directory to project root. |
nerdtree | Utility | A tree explorer plugin for vim |
Monitor vulnerabilities in dependencies used in your project and keep your dependencies up-to-date with Dependabot.