Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
File renamed without changes.
21 changes: 0 additions & 21 deletions LICENSE

This file was deleted.

1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -161,3 +161,4 @@ Plugins will be installed automatically via `lazy.nvim` on first launch.
---

Built by [CrtlUserKnown](https://github.com/CrtlUserKnown)

229 changes: 229 additions & 0 deletions about.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,229 @@
<!DOCTYPE html>
<html lang="en" data-theme="knew-pines">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>About | CharVim</title>
<meta name="description" content="Learn about CharVim: a hand-crafted Neovim configuration built for flow, speed, and a modern development experience." />
<meta name="author" content="CrtlUserKnown" />
<meta name="theme-color" content="#191724" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta property="og:title" content="About | CharVim" />
<meta property="og:description" content="Learn about CharVim, a hand-crafted Neovim configuration built for flow, speed, and a modern development experience." />
<meta property="og:type" content="website" />
<meta name="twitter:card" content="summary" />
<link rel="canonical" href="https://ctrluserknown.github.io/Charvim/about.html" />
<link rel="icon" href="img/favicon/charvim.svg" type="image/svg+xml" />
<link rel="alternate icon" href="img/favicon/charvim-atl.svg" type="image/svg+xml" />
<link rel="apple-touch-icon" href="img/favicon/charvim.svg" />
<link rel="manifest" href="site.webmanifest" />
<link rel="stylesheet" href="css/style.css" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "AboutPage",
"name": "About CharVim",
"description": "CharVim is a personal Neovim configuration designed for efficiency, speed, and a seamless development experience.",
"url": "https://ctrluserknown.github.io/Charvim/about.html",
"mainEntity": {
"@type": "SoftwareApplication",
"name": "CharVim",
"applicationCategory": "DeveloperApplication",
"operatingSystem": "macOS, Linux"
}
},
{
"@type": "BreadcrumbList",
"itemListElement": [
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://ctrluserknown.github.io/Charvim/" },
{ "@type": "ListItem", "position": 2, "name": "About", "item": "https://ctrluserknown.github.io/Charvim/about.html" }
]
}
]
}
</script>
</head>
<body>

<div class="cursor-gradient" aria-hidden="true"></div>

<!-- NAV -->
<nav>
<a class="nav-brand" href="index.html">
<svg class="nav-brand-logo" viewBox="0 0 317 319" xmlns="http://www.w3.org/2000/svg" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;" aria-hidden="true">
<g transform="matrix(1,0,0,1,-35.917861,-42.367234)">
<g>
<g transform="matrix(2.631266,0,0,2.600643,-317.140351,-356.595763)">
<path class="logo-primary" d="M140.378,275.999L143.656,174.845C143.774,172.66 143.833,171.302 143.833,170.77C143.833,165.751 140.615,163.241 134.178,163.241L137.19,153.409L188.298,153.409L185.287,163.241C179.913,163.241 176.4,164.039 174.746,165.633C173.093,167.227 172.148,171.184 171.912,177.502L169.609,243.935L213.277,181.222C216.348,176.735 217.883,173.191 217.883,170.593C217.883,168.645 216.894,166.932 214.916,165.456C212.937,163.98 210.265,163.241 206.899,163.241L204.685,163.241L207.697,153.409L254.465,153.409L251.542,163.241C246.286,163.359 241.71,164.865 237.813,167.759C233.915,170.652 228.63,176.794 221.957,186.183L158.714,275.999L140.378,275.999Z" style="fill-rule:nonzero;"/>
</g>
<g transform="matrix(1.740079,0,-0.240372,1.199533,-137.411133,-14.95078)">
<path class="logo-accent" d="M258.867,210.424C270.725,224.031 288.197,251.204 288.197,284.102C288.197,301.873 276.466,313.564 262.016,313.564C247.567,313.564 235.836,300.365 235.836,284.102C235.836,251.368 258.544,249.732 258.867,210.424Z"/>
</g>
</g>
</g>
</svg>
<span class="nav-brand-name">CharVim</span>
</a>

<ul class="nav-links">
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="docs.html">Docs</a></li>
<li><a href="roadmap.html">Roadmap</a></li>
<li><a href="changelog.html">Changelog</a></li>
<li><a href="https://github.com/CrtlUserKnown/Charvim" target="_blank" rel="noopener">GitHub ↗</a></li>
</ul>

<div class="theme-switcher" role="group" aria-label="Select color theme">
<button class="theme-btn" data-theme="knew-pines">knew-pines</button>
<button class="theme-btn" data-theme="noir-cat">noir-cat</button>
<button class="theme-btn" data-theme="dark">dark</button>
</div>

<button class="hamburger" aria-label="Toggle navigation">
<span></span><span></span><span></span>
</button>
</nav>

<main>

<!-- PAGE HERO -->
<section class="page-hero" aria-label="About CharVim">
<p class="section-label">About the project</p>
<h1 class="section-title">What is CharVim?</h1>
<p class="section-subtitle">A hand-crafted Neovim configuration built for developers who want a fast, modern editor without having to stitch plugins together themselves.</p>
</section>

<div class="gradient-divider"></div>

<!-- ABOUT CONTENT -->
<div class="content-section">

<h2>The idea</h2>
<p>
CharVim started as a personal Neovim config and grew into a shareable, opinionated distribution. The goal is simple: give you a Neovim that feels like a real IDE, with LSP, completion, debugging, AI, fuzzy-finding, and multi-cursor support, while staying lean, fast, and true to Vim's modal nature.
</p>
<p>
Every plugin in CharVim earns its place. Nothing is included just because it's popular. The configuration is built around a daily-driver workflow: writing code, navigating large projects, debugging, and staying in flow.
</p>

<h2>Philosophy</h2>
<ul>
<li><strong>Speed first.</strong> Plugins are lazy-loaded by filetype. Cold-start time stays minimal regardless of how many servers are installed.</li>
<li><strong>Keyboard-centric.</strong> Everything has a keymap. The mouse is optional. Custom implementations like multi-cursor and Find and Replace are built with Vim motions in mind.</li>
<li><strong>Personalize without forking.</strong> Two git-ignored files, <code>user.lua</code> and <code>user-plugins.lua</code>, let you add keymaps, options, and plugins that survive <code>git pull</code> updates without ever touching core files.</li>
<li><strong>Batteries included.</strong> The install script handles system dependencies automatically on macOS, Fedora, Debian/Ubuntu, and Arch Linux.</li>
</ul>

<h2>Language support</h2>
<p>CharVim ships with ten pre-configured LSP servers, covering the most common languages for backend, frontend, systems, and document authoring:</p>
<ul>
<li><strong>Lua</strong> via lua_ls, with full Neovim API awareness</li>
<li><strong>Python</strong> via Pyright</li>
<li><strong>TypeScript and JavaScript</strong> via ts_ls</li>
<li><strong>Java</strong> via JDTLS (Maven, Gradle, and Ant are auto-detected)</li>
<li><strong>Kotlin</strong> via kotlin_language_server (JVM target 17, inlay hints)</li>
<li><strong>Go</strong> via gopls (gofumpt, full inlay hints, shadow analysis)</li>
<li><strong>C, C++, and Obj-C</strong> via clangd</li>
<li><strong>Swift and Obj-C</strong> via SourceKit-LSP</li>
<li><strong>Typst</strong> via Tinymist (exports PDF on save)</li>
<li><strong>XML</strong> via lemminx</li>
</ul>
<p>Inlay hints are enabled by default on all servers that support them and can be toggled with <kbd>leader</kbd><kbd>ih</kbd>.</p>

<h2>The themes</h2>
<p>CharVim ships with three themes, all switchable at runtime via <code>:ThemeSelect</code> or <code>:Theme &lt;name&gt;</code>. Your selection persists across restarts.</p>
<ul>
<li><strong>Knew-pines</strong>: A warm variant of Rose Pine with dusty purples, muted pinks, gold accents, and pine greens. This is the default.</li>
<li><strong>Noir-cat</strong>: A custom dark theme with a Catppuccin-Mocha palette. Deep blacks, blue and purple highlights, and soft pastels. Defined in <code>nvim/colors/noir-cat.lua</code>.</li>
<li><strong>Dark</strong>: A clean, minimal dark mode with cool blue accents. Low saturation, high legibility.</li>
</ul>
<p>Additional themes available inside Neovim include Tokyo Night, Catppuccin, Gruvbox, and Habamax.</p>

<h2>AI integration</h2>
<p>
avante.nvim connects CharVim to Anthropic Claude (<code>claude-haiku-4-5</code>) for AI-assisted code chat and editing. Use <code>:AvanteAsk</code> to discuss code in context, or <code>:AvanteEdit</code> to apply AI suggestions directly. Add your <code>ANTHROPIC_API_KEY</code> to a <code>.env</code> file at the repo root and it gets loaded on startup automatically.
</p>

<h2>Installation</h2>
<p>Run the one-line install script. It detects your OS, installs missing system dependencies, and symlinks the config into <code>~/.config/nvim</code>.</p>
<div class="code-block" style="display:flex;margin:1rem 0;">
<code>bash &lt;(curl -s https://raw.githubusercontent.com/CrtlUserKnown/Charvim/main/setup.sh)</code>
<button class="copy-btn" aria-label="Copy" title="Copy" style="margin-left:auto;">⧉</button>
</div>
<p>Or clone the repository manually and launch Neovim. Plugins install automatically via lazy.nvim on first start.</p>

<h2>Requirements</h2>
<ul>
<li>Neovim 0.12+</li>
<li>Git</li>
<li>A <a href="https://www.nerdfonts.com/" target="_blank" rel="noopener" style="color:var(--accent);">Nerd Font</a> for icons</li>
<li><code>ripgrep</code> for Telescope live grep and Find and Replace</li>
<li><code>fd</code> for Telescope file finding</li>
<li><code>python3</code> for DAP Python support</li>
<li><code>make</code> for building avante.nvim</li>
<li><code>node</code> for Mason-managed LSP servers like TypeScript</li>
<li><code>ANTHROPIC_API_KEY</code> (optional) for AI features via avante.nvim</li>
</ul>

<h2>User customization</h2>
<p>Two git-ignored files let you personalize CharVim without touching core config. They are auto-created with template comments on first startup and never overwritten by updates.</p>

<h3><code>nvim/lua/user.lua</code></h3>
<p>Loaded last, after all CharVim modules. Add keymaps, options, autocommands, or override any default:</p>
<pre><code>-- nvim/lua/user.lua
vim.opt.wrap = true
vim.keymap.set('n', '&lt;leader&gt;x', ':!echo hello&lt;CR&gt;', { desc = 'My command' })</code></pre>

<h3><code>nvim/lua/user-plugins.lua</code></h3>
<p>Return a lazy.nvim spec list to add your own plugins:</p>
<pre><code>-- nvim/lua/user-plugins.lua
return {
{ 'folke/zen-mode.nvim', opts = {} },
}</code></pre>

<div style="margin-top:3rem;text-align:center;">
<a class="btn btn-primary" href="docs.html">Read the full docs</a>
&nbsp;
<a class="btn btn-secondary" href="roadmap.html">See the roadmap</a>
</div>

</div>

</main>

<!-- FOOTER -->
<footer>
<div class="footer-inner">
<div class="footer-brand">
<svg class="footer-logo" viewBox="0 0 317 319" xmlns="http://www.w3.org/2000/svg" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;" aria-hidden="true">
<g transform="matrix(1,0,0,1,-35.917861,-42.367234)">
<g>
<g transform="matrix(2.631266,0,0,2.600643,-317.140351,-356.595763)">
<path class="logo-primary" d="M140.378,275.999L143.656,174.845C143.774,172.66 143.833,171.302 143.833,170.77C143.833,165.751 140.615,163.241 134.178,163.241L137.19,153.409L188.298,153.409L185.287,163.241C179.913,163.241 176.4,164.039 174.746,165.633C173.093,167.227 172.148,171.184 171.912,177.502L169.609,243.935L213.277,181.222C216.348,176.735 217.883,173.191 217.883,170.593C217.883,168.645 216.894,166.932 214.916,165.456C212.937,163.98 210.265,163.241 206.899,163.241L204.685,163.241L207.697,153.409L254.465,153.409L251.542,163.241C246.286,163.359 241.71,164.865 237.813,167.759C233.915,170.652 228.63,176.794 221.957,186.183L158.714,275.999L140.378,275.999Z" style="fill-rule:nonzero;"/>
</g>
<g transform="matrix(1.740079,0,-0.240372,1.199533,-137.411133,-14.95078)">
<path class="logo-accent" d="M258.867,210.424C270.725,224.031 288.197,251.204 288.197,284.102C288.197,301.873 276.466,313.564 262.016,313.564C247.567,313.564 235.836,300.365 235.836,284.102C235.836,251.368 258.544,249.732 258.867,210.424Z"/>
</g>
</g>
</g>
</svg>
<span class="footer-name">CharVim</span>
</div>
<ul class="footer-links">
<li><a href="index.html">Home</a></li>
<li><a href="about.html">About</a></li>
<li><a href="docs.html">Docs</a></li>
<li><a href="roadmap.html">Roadmap</a></li>
<li><a href="changelog.html">Changelog</a></li>
<li><a href="https://github.com/CrtlUserKnown/Charvim" target="_blank" rel="noopener">GitHub</a></li>
</ul>
<p class="footer-copy">Built by <a href="https://github.com/CrtlUserKnown" style="color:var(--accent);text-decoration:none;">CrtlUserKnown</a>. Open source and always free.</p>
</div>
</footer>

<script src="js/main.js"></script>
</body>
</html>
Loading
Loading