Skip to content

earlsioson/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

238 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dotfiles

Overview

Personal configuration for Neovim, Vim, tmux, and assorted CLI tools.

Table of Contents

Quick Start

Base editor prerequisites

  1. Install current releases of Vim and Neovim.
  2. Install a Nerd Font (I usually grab one from nerdfonts.com).
  3. Copy .vim/ into $HOME/.vim, .config/nvim/ into $HOME/.config/nvim, and .vimrc into $HOME/.vimrc.

Tree-sitter + Node.js toolchain

  • Install Node.js so LSP servers and formatters can run under node.
  • Install the Tree-sitter CLI plus Neovim’s npm helper:
    npm install -g tree-sitter-cli neovim
    tree-sitter --version   # sanity check

Python support for Neovim/DAP

Use your preferred python package manager to create a virtualenv and install debugpy and pynvim. Update the Python path in .config/nvim/lua/es/globals.lua (vim.g.python_host_path) to point at your virtualenv's Python interpreter. This path is automatically used by init.lua and DAP, keeping the Python host and debugger in sync.

Plugin bootstrap (lazy.nvim)

When launching Neovim you'll see the Mason installer and Tree-sitter setup run automatically.

Optional tooling

  • Telescope pickers expect ripgrep and fd on $PATH.
  • Language-specific runtimes (Go, Python, etc.) should be installed before launching Mason or DAP adapters.
  • Git, tmux, and a POSIX shell are assumed.

tmux Configuration

Setup

  1. Install tpm.
  2. Copy .tmux.conf to $HOME/.tmux.conf.
  3. Start tmux and press <prefix>I (capital i) to install plugins via tpm.

tmux Keymaps

Shortcut Action
C-k (no prefix) Reset pane display and clear scrollback (send-keys -R, C-l, clear-history).
<prefix>a Toggle synchronize-panes for the current window.
M-9 / M-0 (no prefix) Swap to previous/next window and focus it.
S-Left / S-Right Resize pane 10 cells horizontally.
S-Up / S-Down Resize pane 10 cells vertically.

Neovim Configuration

Plugin stack

Category Plugins
Formatting stevearc/conform.nvim
LSP neovim/nvim-lspconfig, williamboman/mason.nvim, williamboman/mason-lspconfig.nvim, jay-babu/mason-nvim-dap.nvim
Treesitter nvim-treesitter/nvim-treesitter, nvim-treesitter/nvim-treesitter-context
Completion hrsh7th/nvim-cmp, hrsh7th/cmp-buffer, hrsh7th/cmp-path, hrsh7th/cmp-cmdline, hrsh7th/cmp-nvim-lua, hrsh7th/cmp-nvim-lsp, hrsh7th/cmp-nvim-lsp-signature-help
Debugging mfussenegger/nvim-dap, rcarriga/nvim-dap-ui, mfussenegger/nvim-dap-python, leoluz/nvim-dap-go, nvim-neotest/nvim-nio
Telescope nvim-telescope/telescope.nvim, nvim-telescope/telescope-file-browser.nvim, nvim-telescope/telescope-live-grep-args.nvim, nvim-telescope/telescope-fzf-native.nvim
UI nvim-tree/nvim-web-devicons, windwp/nvim-autopairs, folke/tokyonight.nvim, nvim-tree/nvim-tree.lua, stevearc/dressing.nvim, nvim-lualine/lualine.nvim, nvimdev/dashboard-nvim, ellisonleao/glow.nvim, stevearc/oil.nvim, karb94/neoscroll.nvim
Navigation folke/flash.nvim, ggandor/flit.nvim, ggandor/lightspeed.nvim
Productivity tpope/vim-surround, tpope/vim-unimpaired, tpope/vim-fugitive, lewis6991/gitsigns.nvim, wellle/targets.vim, kana/vim-textobj-user, echasnovski/mini.ai, LuanVSO/nvim-regexplacement, andymass/vim-matchup
Language Extras nordtheme/vim, dracula/vim, fatih/vim-go, terrastruct/d2-vim

Both Vim and Neovim use github/copilot.vim. In Neovim, it is lazy-loaded and can be manually triggered via :Copilot if needed. Plugins auto-load from .config/nvim/lua/es/plugins/*.lua via lazy.nvim. Tree-sitter uses prefer_git = true to download pre-built parsers. Mason auto-installs DAP adapters (debugpy, delve, codelldb, js-debug-adapter) on first launch.

The configuration follows modern Neovim 0.11+ idioms with proper lazy loading, uses vim.uv for async operations, and centralizes settings for maintainability.

Keymaps

Most Neovim keymaps are centralized in .config/nvim/lua/es/keymaps.lua. Buffer-local keymaps (like gitsigns) are defined in keymaps.lua as exported functions and called from plugin on_attach callbacks. Shared vim/neovim keymaps live in .vim/common.vim. Leader key is <Space>.

The keymap system follows a consistent namespace that mirrors the Neovim API:

  • <Leader>l* = LSP operations (mirrors vim.lsp.buf.* API)
  • <Leader>d* = Diagnostic operations (mirrors vim.diagnostic.* API, navigation uses ]d/[d defaults)
  • <Leader>b* = Debug/breakpoint operations (DAP)
  • <Leader>f* = Find operations (Telescope with ripgrep/fd)
  • <Leader>h* = Hunk operations (gitsigns, buffer-local in git files)
  • <Leader>t* = Toggle operations (gitsigns)
  • <Leader>g* = Git operations (Fugitive)
  • <Leader>e* = NvimTree operations (explorer/file tree navigation)

Neovim 0.11 defaults (no leader)

Shortcut Action
]d / [d Next/previous diagnostic
]D / [D First/last diagnostic

LSP operations (<Leader>l*)

Keymaps mirror vim.lsp.buf.* API methods for easy memorization.

Shortcut Action
<Leader>la Code action
<Leader>lc Incoming calls
<Leader>lC Outgoing calls
<Leader>ld Definition
<Leader>lD Declaration
<Leader>lf Format (conform)
<Leader>lh Hover
<Leader>li Implementation
<Leader>lo Document outline (symbols)
<Leader>lr References
<Leader>ln Rename
<Leader>ls Signature help
<Leader>lt Type definition
<Leader>lw Workspace symbols

Diagnostic operations (<Leader>d*)

Keymaps mirror vim.diagnostic.* API methods. Navigation uses ]d/[d defaults above.

Shortcut Action
<Leader>df Diagnostic float
<Leader>dl Diagnostic loclist
<Leader>dq Diagnostic quickfix

Debug operations (<Leader>b*)

DAP debugger controls and inspection.

Shortcut Action
<Leader>bc Continue
<Leader>bb Breakpoint (toggle)
<Leader>bB Breakpoint (conditional)
<Leader>bs Step over
<Leader>bi Step into
<Leader>bo Step out
<Leader>bt Terminate
<Leader>br REPL
<Leader>bu UI (toggle)
<Leader>bv Load vscode config
<Leader>bl Run last
<Leader>bk Kill all breakpoints
<Leader>bh Hover variables
<Leader>bw Watches
<Leader>bf Frames
<Leader>bp Preview scopes

Find operations (<Leader>f*)

Telescope pickers using ripgrep for text search and fd for file finding. Hidden file search (<Leader>fh) and the directory picker that feeds Oil (<Leader>fD) share the same fd exclude list in .config/nvim/lua/es/keymaps.lua, so you can tweak which build artifacts or vendor dirs stay hidden in one place.

Shortcut Action
<Leader>ff Find files
<Leader>fr Find with ripgrep (live grep)
<Leader>fb Find buffers
<Leader>fg Find git files
<Leader>fo Find oldfiles (recent)
<Leader>fh Find hidden files
<Leader>fD Browse directories (Oil)
<Leader>fw Find workspace symbols
<Leader>fd Find document symbols
<Leader>fk Find keymaps
<Leader>fe Find explorer (file browser)
<Leader>fE Find explorer all (no gitignore)

Git operations (<Leader>g*)

Fugitive operations.

Shortcut Action
<Leader>gg Git status

Hunk operations (<Leader>h* and <Leader>t*)

Gitsigns operations (buffer-local, only in git files).

Shortcut Action
]c / [c Next/previous hunk
<Leader>hs Stage hunk
<Leader>hr Reset hunk
<Leader>hS Stage buffer
<Leader>hR Reset buffer
<Leader>hu Undo stage
<Leader>hp Preview hunk
<Leader>hi Preview hunk inline
<Leader>hb Blame line
<Leader>hd Diff
<Leader>hD Diff against ~
<Leader>hq / <Leader>hQ Hunks to quickfix (current/all)
<Leader>tb Toggle blame
<Leader>tw Toggle word diff
ih (text object) Hunk text object

NvimTree (<Leader>e*)

File tree navigation.

Shortcut Action
<Leader>et NvimTree toggle
<Leader>ef NvimTree find file
<Leader>ec NvimTree close
<Leader>ep NvimTree open parent directory
<Leader>eo NvimTree open Oil directory

Flash navigation

Quick jump navigation (preserves vim defaults for s/S).

Shortcut Action
<Leader>s Flash jump
<Leader>S Flash treesitter
r (operator pending) Flash remote
R (operator/visual) Flash treesitter search
<C-s> (command mode) Flash toggle search

Other mappings

Shortcut Action
- Oil parent directory
<Leader>mp Markdown preview

Shared keymaps (.vim/common.vim)

These work in both Vim and Neovim.

Shortcut Action
<Leader>y Yank to system clipboard (normal/visual)
<Leader>n New split
<Leader>a Alternate buffer
<Leader>r (visual) Search selection for quick replace
<Leader>k Clear last search highlight
<M-.>, <M-,>, <M-'>, <M-;> Resize windows
z0 Set foldlevel to 99 (show all folds)
z1 - z6 Set foldlevel 1-6 (useful for Markdown heading hierarchy)
<Leader><Leader>t Open bottom terminal helper
<Leader><Esc> Exit terminal-mode

nvim-cmp completion

Shortcut Action
<CR> Accepts the LSP (Popup Menu) selection.
<C-n> / <C-p> Navigates up and down the LSP menu.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published