88 lines
3 KiB
Markdown
88 lines
3 KiB
Markdown
# CLAUDE.md
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
## Overview
|
|
|
|
Dotfiles repo managing configs for WezTerm, Neovim, and Zsh (oh-my-zsh + p10k) with symlinks. Cross-platform: EndeavourOS (primary desktop) and Windows.
|
|
|
|
## Structure
|
|
|
|
```
|
|
dotfiles/
|
|
├── zsh/
|
|
│ ├── .zshrc # Zsh config (oh-my-zsh, p10k, aliases, plugins)
|
|
│ ├── .p10k.zsh # Powerlevel10k prompt config
|
|
│ └── custom/themes/ # Custom bira-nerd themes
|
|
├── wezterm/
|
|
│ └── wezterm.lua # WezTerm config (CovenantUI color scheme, JetBrainsMono Nerd Font)
|
|
├── nvim/ # Neovim config (lazy.nvim, IDE-like setup)
|
|
│ ├── init.lua
|
|
│ └── lua/
|
|
│ ├── options.lua
|
|
│ ├── keymaps.lua
|
|
│ └── plugins/
|
|
│ ├── colorscheme.lua # catppuccin mocha
|
|
│ ├── ui.lua # lualine, bufferline, indent-blankline
|
|
│ ├── explorer.lua # neo-tree (<leader>e)
|
|
│ ├── telescope.lua # fuzzy finder (<leader>ff/fg/fb/fr)
|
|
│ ├── treesitter.lua # syntax highlighting
|
|
│ ├── lsp.lua # mason + lspconfig + nvim-cmp (bash, python, C#)
|
|
│ └── editor.lua # autopairs, which-key, gitsigns
|
|
├── bootstrap.sh # Linux setup script
|
|
└── bootstrap.ps1 # Windows setup script (requires admin)
|
|
```
|
|
|
|
## Bootstrap / Setup
|
|
|
|
```bash
|
|
# Linux — installs oh-my-zsh, powerlevel10k, zsh plugins, then symlinks everything
|
|
bash bootstrap.sh
|
|
|
|
# Windows (PowerShell, run as Administrator)
|
|
.\bootstrap.ps1
|
|
```
|
|
|
|
On Linux, symlinks are created:
|
|
- `~/.zshrc` → `zsh/.zshrc`
|
|
- `~/.p10k.zsh` → `zsh/.p10k.zsh`
|
|
- `~/.oh-my-zsh/custom/themes/*.zsh-theme` → `zsh/custom/themes/`
|
|
- `~/.wezterm.lua` → `wezterm/wezterm.lua`
|
|
- `~/.config/nvim` → `nvim/`
|
|
|
|
Neovim plugins install automatically on first `nvim` launch (lazy.nvim bootstraps itself).
|
|
|
|
## Key Conventions
|
|
|
|
- **No dotfile managers** — symlinks only, managed by bootstrap scripts.
|
|
- **OS detection in configs**, not in bootstrap:
|
|
- WezTerm: `wezterm.target_triple`
|
|
- Neovim: `vim.loop.os_uname()`
|
|
- **System clipboard by default** — `y`/`p` in Neovim use the OS clipboard (`unnamedplus`).
|
|
- **Space as leader key** in Neovim.
|
|
|
|
## Neovim Key Mappings
|
|
|
|
| Key | Action |
|
|
|-----|--------|
|
|
| `<leader>e` | Toggle file tree |
|
|
| `<leader>o` | Reveal current file in tree |
|
|
| `<leader>ff` | Find files |
|
|
| `<leader>fg` | Search text in project |
|
|
| `<leader>fb` | Switch open buffers |
|
|
| `<leader>fr` | Recent files |
|
|
| `<S-l>` / `<S-h>` | Next / prev buffer |
|
|
| `<leader>x` | Close buffer |
|
|
| `K` | Hover LSP docs |
|
|
| `gd` | Go to definition |
|
|
| `<leader>rn` | Rename symbol |
|
|
| `<leader>ca` | Code actions |
|
|
| `<leader>d` | Line diagnostics |
|
|
| `jk` | Exit insert mode |
|
|
|
|
## Zsh Plugins (installed by bootstrap.sh)
|
|
|
|
- `zsh-autosuggestions`
|
|
- `zsh-syntax-highlighting`
|
|
- `zsh-completions`
|
|
- `fast-syntax-highlighting`
|