Skip to content

graemedavidson/nvim-tmux

Repository files navigation

Neovim + Tmux setup

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 :).

Bindings

Tmux command prefix: C-a

Review Key Bindings for a list of common and custom key bindings made available in this config.

Review bindings:

Tmux

  • <leader>: the bound leader key (ctrl-a)
Binding Description
ctrl <leader> $ Name a session
ctrl <leader> s Change session
`ctrl `
ctrl <leader> - Add horizontal split
ctrl <leader> z Focus on highlighted split
ctrl <leader> , Name tab
ctrl <leader> c Add new tab
shift left Switch to next left tab
shift right Switch to next right tab
ctrl shift left move tab to the left
ctrl shift right Move tab to the right
ctrl <leader> = Show buffers
ctrl <leader> f Select and open a file listed as a path on active screen
ctrl <leader> u Select and open a URL listed on the active screen
ctrl <leader> shift T Plugin: tmux-pane-focus: Show options menu

Nvim

Binding Description
ctrl v Highlight current line
shift v Enter visual mode and highlight area
g c Toggle comment
ctrl + Increment number
ctrl - Decrement number

Commands

Command Description
:Tabularize /<char> add tabs based on inputted character for alignment
:StripWhitespace Strips tailing whitespace
:Mason Show installed linters and LSP servers
:WhichKey Show keyboard shortcuts, shows when starting commands

Tmux

Plugins

Plugins installed via TPM as part of docker build process.

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 Copying to system clipboard
tmux-fzf-session-switch (Deactivated) Switch session using FZF popup
tmux-pane-focus Pane focus

Neovim

Neovim config built on top of LazyVim template utilising the modular framework for improved readability.

Plugins

Kickstart installs and configures a selection of standard plugins. Custom plugins added by adding a <plugin>.lua file to the ./config/nvim/lua/custom/plugins/.

Plugin Description
better-whitespace.lua Highlight and remove trailing whitespaces
colorizer.lua Colour highlighter
editorconfig.lua Editorconfig support
focus.lua Pane select focus resize
fzf.lua FZF support
go.lua GO support
ident-blankline.lua Indentation guides
jqx.lua JQ support
lastplace.lua Open files with cursor in place where file closed
null-ls.lua ARCHIVED: Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.
rainbow-delimiters.lua Rainbow parentheses
tabular.lua Reformat text by tabs
trouble.lua A pretty list for showing diagnostics, references, telescope results, quickfix and location lists to help you solve all the trouble your code is causing.
ts-autotag.lua Use treesitter to autoclose and autorename html tag
undotree.lua Undotree visualizes the undo history and makes it easy to browse and switch between different undo branches

Plugins to review:

Plugin Description
guihua.lua Guihua: A Lua Gui and util library for nvim plugins
dial.lua Increment/Decrement different types, still in dev
octo.lua GitHub support. Looking to show PR comments in vim

Custom Config

Custom configuration overriding default kickstart and custom plugins.

Change Local Path Original Src
Changes code complete to use enter ./config/nvim/lua/kickstart/plugins/cmp.lua Default

Colour Scheme

LSPs, Linters and More

Installed via Treesitter and Mason plugins installed as part of default kickstart config.

Docker Build

Testing setup based on running stack within Docker container for isolation and experimentation.

Build local container with default latest tag:

docker-compose build
# docker build -t test-nvim-tmux -f build/Dockerfile .
docker-compose run -it tmux-nvim
# docker run -it test-nvim-tmux:latest

Run tmux to start new tmux session.

tmux

Start vim:

vim

Base Image

Currently base image using latest Python image as tool chain requires it.

Installs

Software Description
Tmux wget: 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 wget: hyperextensible Vim-based text editor
Bison apt: dependency for nvim build
Git pre-installed on docker image: 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.
Python pre-installed on docker image: Python interpreter
FZF apt: A command-line fuzzy findeR
Ripgrep apt: ripgrep recursively searches directories for a regex pattern while respecting your gitignore
NodeJS apt: required for installing linters
Vale wget: A markup-aware linter for prose built with speed and extensibility in mind.