https://github.com/abeldekat/nvim_pde
My personal development environment for Neovim
https://github.com/abeldekat/nvim_pde
lazy-loading lua mini-deps mini-nvim neovim neovim-config nvim-config pde
Last synced: about 1 month ago
JSON representation
My personal development environment for Neovim
- Host: GitHub
- URL: https://github.com/abeldekat/nvim_pde
- Owner: abeldekat
- License: apache-2.0
- Created: 2024-01-12T19:56:00.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-16T12:48:03.000Z (about 2 months ago)
- Last Synced: 2025-04-23T02:47:19.206Z (about 1 month ago)
- Topics: lazy-loading, lua, mini-deps, mini-nvim, neovim, neovim-config, nvim-config, pde
- Language: Lua
- Homepage:
- Size: 1.21 MB
- Stars: 16
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Neovim pde


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
- `init`: Uses `:h vim.loader` and calls `ak.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## Install
> Requirements: Neovim latest version or nightly.
>
> Always review the code before trying a configuration.Clone the repository:
```sh
git clone https://github.com/abeldekat/nvim_pde ~/.config/ak
```Open Neovim with this config, installing the plugins:
```sh
NVIM_APPNAME=ak nvim
```Remove the config:
```sh
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- Leader: `space`
- Main plugins: [ak.mini.visits_harpooned], [mini.files], [mini.pick] and [leap]
- Menu: [mini.clue]### 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`, ``,``,``
- Toggle current label on visit: `a`
- Add visit to "uncategorised" label: `oa`
- Pick visits from all labels: `j` ("strongest finger")
- Pick visits having current label: `ol`
- Change current label: `oj`
- Maintain visits having active label: `om`
- Remove active label from visits: `or`
- Copy global visits to "uncategorised" label: `oc`Pickers can display hints using internal plugin [ak.mini.pick_hinted]
### Window navigation
- `hjkl` (stock `Neovim`)
- `mw`(next window)
- `me`(last accessed window)### Explorer
- `mk`("rolling fingers"), opening mini.files
### 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 schemesChange 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:```sh
git update-index --assume-unchanged lua/ak/colors.lua
```## Key conflicts
### operators
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".
As a consequence, use `gS` instead of suggested key `gs`("go sort") for sort.
### surround
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.### leap
- `s`: Bidirectional
- `g/`: Leap from window("leap search")Operator pending mode:
- s: Leap forward
- gs: Leap backwardExtras:
- Remote operations: `gl`("go leap remote") and `r`("remote", in operator pending mode)
- Incremental treesitter node selection: `S`(like flash.nvim)## Mini
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 `grapple` or `harpoon`](https://github.com/echasnovski/mini.nvim/discussions/1158).
See internal plugin [ak.mini.visits_harpooned]
- [Augment pickers with labels and hotkeys](https://github.com/echasnovski/mini.nvim/discussions/1109).
See internal plugin [ak.mini.pick_hinted]
- [Pick bufferlines with treesitter highlighting](https://github.com/echasnovski/mini.nvim/discussions/988).
- [Apply tokyonight dev environment](https://github.com/echasnovski/mini.nvim/discussions/1012).
- [Optimized jumping with jump2d](https://github.com/echasnovski/mini.nvim/discussions/1033).
- [Beta testing mini.deps](https://github.com/echasnovski/mini.nvim/issues/689#issuecomment-1962327624).
- [MiniNotify replacing fidget](https://github.com/echasnovski/mini.nvim/discussions/1602)## Environment
[tmux](https://github.com/abeldekat/tmux)
[alacritty](https://github.com/abeldekat/alacritty)
[zsh](https://github.com/abeldekat/zsh)
[scripts](https://github.com/abeldekat/scripts)
[awesome](https://github.com/abeldekat/awesome)
[arch linux](https://archlinux.org/)## Acknowledgements
This repo uses code and ideas from the following repositories:
- [nvim](https://github.com/echasnovski/nvim) `@echasnovski`
- [mini.deps](https://github.com/echasnovski/mini.deps)
- [LazyVim](https://github.com/LazyVim/LazyVim)
- [lazy.nvim](https://github.com/folke/lazy.nvim)
- [dotfiles](https://github.com/folke/dot/tree/master/nvim) `@folke`
- [dotfiles](https://github.com/dpetka2001/dotfiles/tree/main/dot_config/nvim) `@dpetka2001`
- [dotfiles](https://github.com/lewis6991/dotfiles/tree/main/config/nvim) `@lewis6991`
- [dotfiles](https://github.com/savq/dotfiles/tree/master/nvim) `@savq`
- [dotfiles](https://github.com/MariaSolOs/dotfiles/tree/main/.config/nvim) `@mariasolos`
- [pckr.nvim](https://github.com/lewis6991/pckr.nvim)[tmuxp]: https://github.com/tmux-python/tmuxp
[scripts]: https://github.com/abeldekat/scripts
[tmux-sessionizer]: https://github.com/abeldekat/scripts/blob/main/tmux-sessionizer
[ak.init]: lua/ak/init.lua
[ak.start_using_mini_deps]: lua/ak/start_using_mini_deps.lua
[ak.deps]: lua/ak/deps
[ak.config]: lua/ak/config
[ak.mini]: lua/ak/mini
[ak.util]: lua/ak/util
[leader h]: lua/ak/util/color.lua
[mini.nvim]: https://github.com/echasnovski/mini.nvim
[mini.files]: https://github.com/echasnovski/mini.files
[mini.operators]: https://github.com/echasnovski/mini.operators
[mini.surround]: https://github.com/echasnovski/mini.surround
[mini.pick]: https://github.com/echasnovski/mini.pick
[mini.visits]: https://github.com/echasnovski/mini.visits
[mini.clue]: https://github.com/echasnovski/mini.clue
[ak.mini.visits_harpooned]: lua/ak/mini/visits_harpooned.lua
[ak.mini.visits_harpooned_line]: lua/ak/mini/visits_harpooned_line.lua
[ak.mini.pick_hinted]: lua/ak/mini/pick_hinted.lua
[leap]: https://github.com/ggandor/leap.nvim
[peek.nvim]: https://github.com/toppair/peek.nvim
[deno]: https://deno.land
[with_submodules]: https://github.com/abeldekat/nvim_pde/tree/with_submodules
[with_lazynvim]: https://github.com/abeldekat/nvim_pde/tree/with_lazynvim