-
Notifications
You must be signed in to change notification settings - Fork 0
Home
Charvim is a highly customized Neovim configuration designed to enhance productivity and provide a modern development experience. This wiki will help you get started with the basics of Vim and understand the custom features built into Charvim.
Vim (and Neovim) is a modal editor. This means that the keys on your keyboard do different things depending on which "mode" you are in.
-
Normal Mode: The default mode. Used for navigation and running commands. Press
Escto return here from any other mode. -
Insert Mode: Used for typing text. Enter this mode by pressing
i,a, oro. -
Visual Mode: Used for selecting blocks of text. Enter this mode by pressing
v(character-wise),V(line-wise), orCtrl-v(block-wise). -
Command-line Mode: Used for saving, quitting, and searching. Enter this mode by typing
:or/(for searching) from Normal mode.
Efficiency in Vim comes from staying in Normal Mode and using motions.
Instead of arrow keys, use these to keep your hands centered:
-
h: Move left -
j: Move down -
k: Move up -
l: Move right
-
w: Jump forward to the start of the next word. -
b: Jump backward to the start of the previous word. -
e: Jump forward to the end of the word. -
0: Jump to the absolute beginning of the line. -
$: Jump to the end of the line. -
^: Jump to the first non-blank character.
Charvim Customizations:
-
H: Jump to the beginning of the line (replaces0). -
L: Jump to the end of the line (replaces$).
Tip
More custom navigation and line manipulation shortcuts can be found in the charVim-Wiki.md file.
-
gg: Go to the first line of the file. -
G: Go to the last line of the file. -
{number}G: Go to a specific line number (e.g.,10G). -
Ctrl + d: Scroll down half a page. -
Ctrl + u: Scroll up half a page.
-
i: Insert before the cursor. -
a: Append after the cursor. -
o: Open a new line below. -
x: Delete the character under the cursor. -
u: Undo the last change. -
Ctrl + r: Redo.
You can combine operators with motions to perform actions:
-
d: Delete (e.g.,dwdeletes a word,dddeletes a line). -
y: Yank/Copy (e.g.,ywyanks a word,yyyanks a line). -
p: Paste after the cursor.
-
:w: Save (write) the file. -
:q: Quit. -
:wq: Save and quit. -
:q!: Quit without saving.
Please note that I have made extensive customizations to the Neovim base to fit my personal workflow and preferences. These include:
- LSP (Language Server Protocol) for IDE-like features (autocompletion, go-to-definition). Servers: Lua, Python, TypeScript/JavaScript, Java (JDTLS), Kotlin, Go, C/C++, Swift, Typst, XML.
- Treesitter for advanced syntax highlighting and incremental selection.
- Harpoon for fast file navigation.
-
Custom Keymaps for common tasks (check
lua/keymaps.luain the config). - Statusline & UI enhancements for a cleaner look.
-
Multi-cursor support via a custom native implementation (
lua/multicursor.lua). -
Find & Replace / Rename panel with live preview, backed by
rgwith optional LSP rename (lua/rename-config.lua). -
AI assistance via avante.nvim using Anthropic Claude (
claude-haiku-4-5). - Debugging with DAP for Python, Java, C/C++, Swift, and Kotlin.
For a detailed breakdown of all the specific customizations and how to use them, please visit the: 👉 Charvim Wiki - Detailed Customizations