My personal development environment for Neovim
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
init: Uses:h vim.loaderand callsak.init- ak.init: Invoke ak.start_using_mini_deps
- ak.deps: Load plugins
- ak.config: All setup for plugins, options, keys, auto commands, and colors
- ak.mini: Internal plugins ak.mini.visits_harpooned and ak.mini.pick_hinted
- ak.util: Shared code
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/akOpen Neovim with this config, installing the plugins:
NVIM_APPNAME=ak nvimRemove the config:
rm -rf ~/.local/share/ak ~/.local/state/ak ~/.cache/ak
rm -rf ~/.config/akNote: For peek.nvim, deno needs to be installed.
I touch type using the right hand in combination with the forefinger of the left hand
- Leader:
space - Main plugins: ak.mini.visits_harpooned, mini.files, mini.pick and leap
- Menu: mini.clue
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
<c-w>hjkl(stockNeovim)mw(next window)me(last accessed window)
mk("rolling fingers"), opening mini.files
- 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
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.luaIn 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".
As a consequence, use gS instead of suggested key gs("go sort") for sort.
Using mini.surround. Suggested keys: sa sd sr sf sF sh sn
The "s" is already used by leap.
Solution: Use the m key in combination with asdf,
adjacent keys on a qwerty keyboard.
Key ms is a mnemonic for surround substitute, performing a surround replace.
s: Bidirectionalg/: Leap from window("leap search")
Operator pending mode:
- s: Leap forward
- gs: Leap backward
Extras:
- Remote operations:
gl("go leap remote") andr("remote", in operator pending mode) - Incremental treesitter node selection:
S(like flash.nvim)
Many of the excellent modules included in mini.nvim are used in this config:
ai, align, animate, base16, basics, bracketed,
clue, completion, cursorword, deps, diff, extra,
git, files, hipatterns, hue, icons, indentscope,
misc, move, notify, operators, pairs, pick,
snippets, splitjoin, starter, statusline, surround, visits
Relevant discussions:
- Visits tweaked to operate like
grappleorharpoon. See internal plugin ak.mini.visits_harpooned - Augment pickers with labels and hotkeys. See internal plugin ak.mini.pick_hinted
- Pick bufferlines with treesitter highlighting.
- Apply tokyonight dev environment.
- Optimized jumping with jump2d.
- Beta testing mini.deps.
- MiniNotify replacing fidget
tmux alacritty zsh scripts awesome arch linux
This repo uses code and ideas from the following repositories:

