/nvim_pde

My personal development environment for Neovim

Primary LanguageLuaApache License 2.0Apache-2.0

Neovim pde

1724703495

1724703946

My personal development environment for Neovim

Older versions

Note

Tag with_submodules references the version containing git submodules, lazy.nvim and mini.deps

Tag with_lazynvim references the version containing lazy.nvim and mini.deps

Structure

Install

Requirements: Neovim latest version or nightly.

Always review the code before trying a configuration.

Clone the repository:

git clone https://github.com/abeldekat/nvim_pde ~/.config/ak

Open Neovim with this config, installing the plugins:

NVIM_APPNAME=ak nvim

Remove the config:

rm -rf ~/.local/share/ak ~/.local/state/ak ~/.cache/ak
rm -rf ~/.config/ak

Note: For peek.nvim, deno needs to be installed.

Workflow

I touch type using the right hand in combination with the forefinger of the left hand

VisitsHarpooned

Internal plugin ak.mini.visits_harpooned is a customized mini.visits configuration, operating in almost the same way as harpoon

  • Info in statusline: ak.mini.visits_harpooned_line
  • The shortcuts normally used for window navigation correspond to visit 1-4 in current label: c-j, <c-k>,<c-l>,<c-h>
  • Toggle current label on visit: <leader>a
  • Add visit to "uncategorised" label: <leader>oa
  • Pick visits from all labels: <leader>j ("strongest finger")
  • Pick visits having current label: <leader>ol
  • Change current label: <leader>oj
  • Maintain visits having active label: <leader>om
  • Remove active label from visits: <leader>or
  • Copy global visits to "uncategorised" label: <leader>oc

Pickers can display hints using internal plugin ak.mini.pick_hinted

Window navigation

  • <c-w>hjkl (stock Neovim)
  • mw(next window)
  • me(last accessed window)

Oil

  • mk("rolling fingers"), opening oil
  • h up one level
  • l down one level, open file

Tmux

  • tmux-sessionizer inspired by @ThePrimeagen
  • workspaces at the top of the screen, using tmuxp
  • leader: ctrl space
  • navigation:
    • tmux-sessionizer: leader h
    • previous session: leader j
    • previous window: leader l
    • existing sessions: leader k
    • switch pane: leader o

UI

  • mini.statusline, no colors, except on:
    • mode change
    • diagnostics
    • current buffer has current label (mini.visits)
    • macro recording
  • many color-schemes

Change color-schemes:

  • on each startup, see scripts, vim_menu_owns
  • mini.pick, leader f o c, loads all colors, does not show builtin color-schemes
  • change the palette of the current color-scheme using leader h

Script vim_menu_owns writes to lua.ak.colors. Ignoring changes to that file:

git update-index --assume-unchanged lua/ak/colors.lua

Key conflicts

Replace replace with substitute mnemonic:

In my config, the suggested key gr("go replace") in mini.operators is already used for the lsp("go references").

I prefer "two character hotkeys" as I use some lsp keys quite often(gd, gr).

Solution: Change operator gr into gs, mnemonic for "go substitute".

Consequences:

Mini

Many of the excellent modules included in mini.nvim are used in this config:

ai, align, animate, base16, clue, cursorword, deps, diff, git, hipatterns, hue, icons, indentscope, jump2d, move, notify, operators, pairs, pick, splitjoin, starter, statusline, surround, visits

Relevant discussions:

Environment

tmux alacritty zsh scripts awesome arch linux

Acknowledgements

This repo uses code and ideas from the following repositories: