Modular Neovim configuration tailored for developers seeking a streamlined and efficient coding environment. Built with Lua, it leverages the power of lazy.nvim for plugin management, offering a clean and extensible setup out of the box.

- 🔧 LSP & Autocompletion — powered by nvim-lspconfig, Mason, and nvim-cmp
- 🧪 Testing with vim-test (reusable terminal strategy)
- 🐞 Debugging with nvim-dap & nvim-dap-ui
- 🗂️ Picker & Fuzzy Finder with Snacks.nvim (files, grep, buffers, LSP, git, diagnostics)
- 🧰 Terminal management with ToggleTerm
- 🛠️ Project tasks via Overseer
- 🌲 Floating file explorer using Oil.nvim
- 🎨 Theme switching with Themery (OneDark, Tinta)
- 🔍 Search and Replace with grug-far
- 🚨 Diagnostics with Trouble
- 🌿 Git integration with vim-fugitive, gitsigns.nvim & LazyGit
- ✨ Auto-formatting with conform.nvim (format-on-save)
- � Tabline & Buffers with bufferline.nvim
- 🪵 Smart logging with Chainsaw
- ✏️ Editing enhancements with mini.nvim (surround, move, pairs, diff)
- 🧭 Breadcrumbs with nvim-navic
- 💬 Command UI with Noice
- 🪗 Code folding with nvim-ufo
- 💾 Session persistence with persistence.nvim
- ⏱️ Coding metrics with WakaTime
- 🖊️ Multi-cursor editing with vim-visual-multi
- 🌈 Rainbow delimiters with rainbow-delimiters.nvim
- 💡 Which-key popup for keybinding discovery
Ensure you have the following installed:
-
Backup Existing Neovim Configuration
If you have an existing Neovim configuration, back it up:
mv ~/.config/nvim ~/.config/nvim.backup mv ~/.local/share/nvim ~/.local/share/nvim.backup mv ~/.local/state/nvim ~/.local/state/nvim.backup mv ~/.cache/nvim ~/.cache/nvim.backup
-
Clone Repository
Clone the repository into your Neovim configuration directory:
git clone https://github.com/arxngr/pena.Vim ~/.config/nvim -
Launch Neovim
Open Neovim to initiate the plugin installation process:
nvim
Upon first launch,
lazy.nvimwill automatically install the necessary plugins. Wait for the process to complete. -
Install LuaRocks (If Not Already Installed)
LuaRocks is essential for managing Lua dependencies. Follow the instructions below based on your operating system.
-
Install Lua
Use your package manager to install Lua 5.1 or LuaJIT:
-
Ubuntu/Debian:
sudo apt update sudo apt install lua5.1 liblua5.1-0-dev
-
Fedora:
sudo dnf install lua compat-lua-devel-5.1.5
-
macOS (using Homebrew):
brew install lua@5.1
-
-
Download and Install LuaRocks
Download the latest LuaRocks version from the official site:
wget https://luarocks.org/releases/luarocks-3.11.1.tar.gz tar zxpf luarocks-3.11.1.tar.gz cd luarocks-3.11.1 ./configure && make && sudo make install
Verify the installation:
luarocks --version-
Install Lua
Download and install Lua for Windows from LuaBinaries or use a package manager like Chocolatey or Scoop:
-
Using Chocolatey:
choco install lua
-
Using Scoop:
scoop install lua
-
-
Install LuaRocks
Download the LuaRocks Windows installer from the official site:
-
Extract the contents and run the
install.batscript. For example:install.bat /P C:\LuaRocks /L
Ensure that the installation path (e.g.,
C:\LuaRocks) is added to your system'sPATHenvironment variable.Alternatively, using package managers:
-
Using Chocolatey:
choco install luarocks
-
Using Scoop:
scoop install luarocks
After installation, verify:
luarocks --version -
Once installed, pena.Vim provides a robust Neovim environment with sensible defaults and powerful plugins. Explore and customize the configuration to suit your workflow.
Leader key is set to <Space>. Local leader is ,.
| Mode | Key | Description |
|---|---|---|
n |
<C-q> |
Quit file |
n/x |
d |
Delete (black hole, no yank) |
x |
<leader>p |
Paste without overwriting register |
n/v |
<C-c> |
Copy to system clipboard |
n/v |
<C-v> |
Paste from system clipboard |
n |
<C-d> |
Search word under cursor |
v |
< / > |
Indent left/right (stays in visual) |
n |
<leader>bd |
Close current buffer |
n |
<leader>wv |
Vertical split |
n |
<leader>hv |
Horizontal split |
n |
<leader>? |
Show buffer local keymaps (which-key) |
n |
<leader>dd |
Open dashboard |
| Mode | Key | Description |
|---|---|---|
n |
<C-h/j/k/l> |
Move between windows |
t |
<C-h/j/k/l> |
Move between windows (terminal mode) |
t |
<C-x> |
Escape terminal mode |
| Key | Description |
|---|---|
<S-h> |
Previous buffer |
<S-l> |
Next buffer |
<leader>bp |
Toggle pin |
<leader>bP |
Delete non-pinned buffers |
<leader>br |
Delete buffers to the right |
<leader>bl |
Delete buffers to the left |
<leader>bd |
Close current buffer |
| Key | Description |
|---|---|
<leader><space> |
Smart find files |
<leader>, |
Buffers |
<leader>/ |
Grep |
<leader>: |
Command history |
<leader>n |
Notification history |
| Key | Description |
|---|---|
<leader>ff |
Find files |
<leader>fb |
Find buffers |
<leader>fc |
Find config file |
<leader>fg |
Find git files |
<leader>fp |
Projects |
<leader>fr |
Recent files |
| Key | Description |
|---|---|
<leader>sb |
Buffer lines |
<leader>sB |
Grep open buffers |
<leader>sg |
Grep |
<leader>sw |
Grep word (visual/normal) |
<leader>s" |
Registers |
<leader>s/ |
Search history |
<leader>sa |
Autocmds |
<leader>sc |
Command history |
<leader>sC |
Commands |
<leader>sd |
Diagnostics |
<leader>sD |
Buffer diagnostics |
<leader>sh |
Help pages |
<leader>sH |
Highlights |
<leader>si |
Icons |
<leader>sj |
Jumps |
<leader>sk |
Keymaps |
<leader>sl |
Location list |
<leader>sm |
Marks |
<leader>sM |
Man pages |
<leader>sp |
Plugin spec |
<leader>sq |
Quickfix list |
<leader>sR |
Resume last picker |
<leader>su |
Undo history |
<leader>ss |
LSP symbols |
<leader>sS |
LSP workspace symbols |
<leader>sr |
Search and replace (grug-far) |
| Key | Mode | Description |
|---|---|---|
<leader>sr |
n/v |
Open grug-far (search & replace, scoped to current file type) |
| Key | Description |
|---|---|
<leader>tn |
Run nearest test |
<leader>tf |
Run current file |
<leader>ts |
Run test suite |
<leader>tl |
Run last test |
<leader>tv |
Visit last test file |
| Key | Description |
|---|---|
<leader>da |
Start / Continue debugging |
<leader>dc |
Continue |
<leader>di |
Step into |
<leader>do |
Step over |
<leader>dO |
Step out |
<leader>db |
Toggle breakpoint |
<leader>dq |
Clear all breakpoints |
<leader>dw |
Hover variable |
<leader>de |
Evaluate expression (n/v) |
<leader>ds |
View stacks (float) |
<leader>dr |
Toggle REPL |
<leader>dlb |
View breakpoints (float) |
<leader>dh |
View watches (float) |
<leader>dv |
View scopes (float) |
<leader>dT |
Terminate debug session |
<leader>dR |
Toggle auto-reload on save |
| Key | Description |
|---|---|
gd |
Goto definition |
gD |
Goto declaration |
gr |
References |
gi |
Goto implementation |
gy |
Goto type definition |
<leader>rn |
LSP: Rename symbol |
<leader>ca |
LSP: Code action (n/x) |
<leader>cr |
Rename (core keymap) |
<leader>k |
Toggle signature help |
<leader>cd |
Open float diagnostic |
<leader>uh |
Toggle inlay hints (global) |
| Key | Description |
|---|---|
]d |
Next diagnostic |
[d |
Prev diagnostic |
]e |
Next error |
[e |
Prev error |
]w |
Next warning |
[w |
Prev warning |
| Key | Description |
|---|---|
<leader>xx |
Toggle diagnostics (Trouble) |
<leader>xX |
Buffer diagnostics (Trouble) |
<leader>cs |
LSP references (Trouble) |
<leader>xL |
Location list (Trouble) |
<leader>xQ |
Quickfix list (Trouble) |
[q / ]q |
Prev/Next Trouble or quickfix item |
| Key | Description |
|---|---|
<leader>ow |
Toggle task list |
<leader>oo |
Run task |
<leader>oq |
Quick action on recent task |
<leader>oi |
Overseer info |
<leader>ob |
Open task builder |
<leader>ot |
Task action menu |
<leader>oc |
Clear task cache |
| Key | Description |
|---|---|
<leader>gs |
Git status |
<leader>gc |
Git commit |
<leader>gp |
Git push |
<leader>gb |
Git blame |
<leader>gd |
Git diff split |
| Key | Description |
|---|---|
<leader>gl |
Git log |
<leader>gL |
Git log (line) |
<leader>gf |
Git log (file) |
| Key | Description |
|---|---|
<leader>go |
Toggle diff overlay |
| Key | Description |
|---|---|
<leader>ll |
Log variable |
<leader>lt |
Log type |
<leader>lm |
Log message |
<leader>lr |
Remove all logs |
| Key | Description |
|---|---|
gsa |
Add surrounding |
gsd |
Delete surrounding |
gsf |
Find surrounding right |
gsF |
Find surrounding left |
gsh |
Highlight surrounding |
gsr |
Replace surrounding |
gsn |
Update n_lines |
| Key | Description |
|---|---|
<M-h> |
Move selection left |
<M-l> |
Move selection right |
<M-j> |
Move selection down |
<M-k> |
Move selection up |
| Key | Description |
|---|---|
<leader>dt |
Toggle floating terminal |
<leader>e |
Toggle Oil file explorer |
<leader>ut |
Toggle transparency |
<leader>uc |
Toggle Themery (colorscheme) |
This project is licensed under the MIT License.