Skip to main content

Overview

Kanagawa provides two powerful editor options: Neovim with LazyVim for terminal-based editing and VSCodium for GUI development. Both integrate seamlessly with the theme system.

Neovim with LazyVim

LazyVim Setup

Kanagawa uses LazyVim, a Neovim configuration framework that provides a solid foundation with sensible defaults and easy plugin management.

Modern UI

Beautiful interface with transparency, custom themes, and smooth animations

LSP Integration

Built-in language server support with autocompletion and diagnostics

Git Integration

Powerful git workflow with fugitive and gitsigns

Plugin Ecosystem

Extensive plugin library managed with lazy.nvim

Theme System

Neovim dynamically loads themes based on the system theme:
-- lua/plugins/themes.lua
local status_ok, theme_bridge = pcall(require, "theme_bridge")
local current_theme = status_ok and theme_bridge or "kanagawa-wave"

return {
  {
    "LazyVim/LazyVim",
    opts = {
      colorscheme = current_theme,
    },
  },
}

Available Themes

{
  "rebelot/kanagawa.nvim",
  name = "kanagawa",
  priority = 1000,
  config = function()
    require("kanagawa").setup({
      transparent = true,
      terminalColors = true,
      theme = "wave",
      overrides = function(colors)
        return {
          NormalFloat = { bg = "none" },
          FloatBorder = { bg = "none" },
          TelescopeNormal = { bg = "none" },
        }
      end,
    })
  end,
}

Custom Plugins

Kanagawa includes several custom plugins to enhance the editing experience:

Smear Cursor

Smooth cursor animations for better visual tracking:
return {
  "sphamba/smear-cursor.nvim",
  opts = {
    stiffness = 0.8,
    trailing_stiffness = 0.6,
    stiffness_insert_mode = 0.7,
    trailing_stiffness_insert_mode = 0.7,
    damping = 0.95,
    damping_insert_mode = 0.95,
    distance_stop_animating = 0.5,
  },
}
Smear cursor creates a smooth animation trail when moving the cursor, making it easier to track during rapid navigation.

Sidekick AI Assistant

AI-powered coding assistant with Zellij/tmux integration:
return {
  "folke/sidekick.nvim",
  opts = {
    cli = {
      mux = {
        backend = "zellij",
        enabled = true,
      },
    },
  },
  keys = {
    {
      "<leader>aa",
      function()
        require("sidekick.cli").toggle()
      end,
      desc = "Sidekick Toggle CLI",
    },
    {
      "<leader>ap",
      function()
        require("sidekick.cli").prompt()
      end,
      desc = "Sidekick Prompt Picker",
    },
  },
}
Keybindings:
  • <leader>aa - Toggle Sidekick CLI
  • <leader>as - Select CLI
  • <leader>ap - Sidekick prompt picker
  • <Tab> - Go to/apply next edit suggestion

Markdown Rendering

Beautiful markdown preview with syntax highlighting:
return {
  "MeanderingProgrammer/render-markdown.nvim",
  dependencies = {
    "nvim-treesitter/nvim-treesitter",
    "nvim-mini/mini.nvim"
  },
  opts = {},
}

Live Preview

Real-time HTML/markdown preview in browser:
return {
  "brianhuster/live-preview.nvim",
  dependencies = {
    "nvim-telescope/telescope.nvim",
    "ibhagwan/fzf-lua",
    "nvim-mini/mini.pick",
    "folke/snacks.nvim",
  },
}

Copilot Integration

GitHub Copilot support with LSP integration:
{
  "neovim/nvim-lspconfig",
  opts = function(_, opts)
    opts.servers = opts.servers or {}
    opts.servers.copilot = {
      cmd = { "copilot-language-server", "--stdio" },
      filetypes = { "*" },
    }
  end,
}
Copilot is disabled by default for sensitive filetypes like YAML, gitcommit, and markdown.

Transparency Settings

All themes are configured with transparency to blend with the Ghostty terminal background:
config = function()
  require("kanagawa").setup({
    transparent = true,
    overrides = function(colors)
      return {
        LineNr = { bg = "none" },
        NormalFloat = { bg = "none" },
        FloatBorder = { bg = "none" },
        TelescopeNormal = { bg = "none" },
        TelescopeBorder = { bg = "none" },
      }
    end,
  })
end

VSCodium

Overview

VSCodium is a community-driven, freely-licensed binary distribution of Microsoft’s VS Code, without Microsoft branding, telemetry, and licensing.

Launch VSCodium

Press SUPER + C to launch VSCodium:
# keybindings.conf
bind = $mainMod, C, exec, vscodium

Theme Synchronization

VSCodium themes are synchronized with the system theme using the same theme selector:
  • Kanagawa - Custom VSCode extension
  • Catppuccin - Official Catppuccin theme
  • Gruvbox - Gruvbox Material theme
  • Everforest - Everforest theme
Install the corresponding VSCodium extensions for each theme to ensure proper synchronization.

Language Support

  • Rust Analyzer
  • Python
  • C/C++
  • TypeScript/JavaScript

Git Integration

  • GitLens
  • Git Graph
  • GitHub Pull Requests

Themes

  • Kanagawa Theme
  • Catppuccin
  • Gruvbox Material
  • Everforest

Productivity

  • GitHub Copilot
  • Error Lens
  • Path Intellisense
  • Auto Rename Tag

Launching Editors

Neovim

# Launch Neovim
nvim

# Edit specific file
nvim ~/notes.md

# Open with specific command
nvim +"Telescope find_files"

VSCodium

# Launch VSCodium
vscodium

# Open specific file
vscodium ~/project/

# Open with specific folder
vscodium .

Configuration Locations

~/.config/nvim/
├── init.lua
├── lua/
   ├── config/
   └── plugins/
       ├── themes.lua
       ├── smear.lua
       ├── sidekick.lua
       ├── render-markdown.lua
       └── live-preview.lua

Learn More

LazyVim Documentation

Official LazyVim documentation and plugin reference

Neovim Documentation

Neovim user manual and reference

VSCodium

VSCodium documentation and downloads

Theme System

Learn about theme synchronization

Build docs developers (and LLMs) love