Table Of Contents
- Welcome Back, LazyVim Warriors!
- Your Complete Plugin Arsenal
- Step-by-Step: Build Your Dream Setup
- Custom Power Tools (The Secret Sauce!)
- Pro Developer Workflows
- Keep It Fast: Performance Tips
- When Things Break: Troubleshooting Guide
- Your Next Level Journey
Welcome Back, LazyVim Warriors! π€
If you've followed Part 1 (LazyVim installation) and Part 2 (basic customization), you're ready for the REAL power!
What you'll get in this final part:
- Production-ready plugin configurations (copy-paste friendly!)
- Custom utilities that solve real developer problems
- Workflows used by professional full-stack developers
- A setup that's fast, reliable, and actually fun to use
Let's turn your LazyVim into a development beast! π₯
Your Complete Plugin Arsenal π‘οΈ
Coding Superpowers
- Blink.cmp: Lightning-fast autocompletion with AI assistance (Codeium)
- Inc-rename: Rename variables with live preview across your entire project
- Mini.bracketed: Navigate through code like a pro (functions, errors, etc.)
- 
Dial.nvim: Smart increment/decrement (numbers, dates, booleans, even const/let!)
- Symbols Outline: Bird's eye view of your code structure
- Marks.nvim: Never lose your place in large files
LSP Magic for Web Development
- TypeScript/JavaScript: Full intellisense with inlay hints
- CSS/Tailwind: Smart styling assistance
- HTML: Complete tag and attribute completion
- Mason: Automatic language server management
- Perfect Diagnostics: Error handling that doesn't annoy you
UI That Actually Helps
- Snacks Dashboard: Beautiful startup screen with your recent projects
- Incline.nvim: Smart filename display with file icons
- Bufferline: Clean tab management
- Lualine: Information-rich status line
- Zen Mode: Distraction-free coding sessions
- Color Highlights: See your CSS colors in real-time
Editor Ninja Tools
- Telescope: Find anything, anywhere (files, text, commands)
- Neo-tree: Project navigation made simple
- Git Integration: Version control without leaving your editor
- Close Buffers: Smart buffer cleanup
- Conform + Biome: Lightning-fast code formatting
Step by Step: Build Your Dream Setup
Perfect Your Solarized Osaka Theme
First, let's get your theme setup perfected from Part 2!
Create: lua/plugins/colorscheme.lua
return {
  {
    "craftzdog/solarized-osaka.nvim",
    lazy = true,
    priority = 1000,
    opts = function()
      return {
        transparent = true, -- Makes your terminal background show through
      }
    end,
  },
}
It's will look like this
Yeahh, I'm a big fan of the solarized-osaka theme, so thanks so much Takuya Matsuyama!
π¨ Advanced Theme Customization:
Want to customize colors for specific plugins? Add this to your theme config:
return {
  {
    "craftzdog/solarized-osaka.nvim",
    lazy = true,
    priority = 1000,
    opts = function()
      return {
        transparent = true,
        on_colors = function(colors)
          -- Customize specific colors
          colors.hint = colors.orange -- Make hints more visible
          colors.error = colors.red    -- Error color
        end,
        on_highlights = function(highlights, colors)
          -- Customize specific highlight groups
          highlights.Comment = { fg = colors.base01, italic = true }
          highlights["@keyword"] = { fg = colors.violet, bold = true }
        end,
      }
    end,
  },
}
π Theme Integration with Your UI Plugins:
Notice how your UI plugins use the theme colors:
-- In your incline.nvim config (from ui.lua)
local colors = require("solarized-osaka.colors").setup()
-- This ensures your filename bar matches your theme perfectly!
Why This Setup Rocks:
- Transparent background: Your terminal's background shows through
- Consistent colors: All plugins use the same color palette
- Customizable: Override any color you don't like
- Performance: Lazy-loaded with high priority for instant theming
Supercharge Your Coding with Smart Plugins
Create: lua/plugins/coding.lua
return {
  -- Lightning-fast completion with AI
  {
    "saghen/blink.cmp",
    dependencies = {
      "codeium.nvim",
      "saghen/blink.compat",
      "rafamadriz/friendly-snippets",
    },
    opts = {
      -- AI-powered completions
      sources = {
        compat = { "codeium" },
        default = { "lsp", "path", "snippets", "buffer" },
        providers = {
          codeium = {
            kind = "Codeium",
            score_offset = 100, -- Prioritize AI suggestions
            async = true,
          },
        },
      },
      keymap = {
        preset = "enter",
        ["<C-y>"] = { "select_and_accept" }, -- Accept with Ctrl+y
      },
      appearance = {
        nerd_font_variant = "mono",
      },
    },
  },
  -- Rename with live preview
  {
    "smjonas/inc-rename.nvim",
    cmd = "IncRename",
    config = true,
  },
  -- Navigate like a pro
  {
    "echasnovski/mini.bracketed",
    event = "BufReadPost",
    config = function()
      require("mini.bracketed").setup({
        file = { suffix = "" },
        window = { suffix = "" },
        quickfix = { suffix = "" },
        yank = { suffix = "" },
        treesitter = { suffix = "n" },
      })
    end,
  },
  -- Smart increment/decrement
  {
    "monaqa/dial.nvim",
    keys = {
      { "<C-a>", function() return require("dial.map").inc_normal() end, expr = true },
      { "<C-x>", function() return require("dial.map").dec_normal() end, expr = true },
    },
    config = function()
      local augend = require("dial.augend")
      require("dial.config").augends:register_group({
        default = {
          augend.integer.alias.decimal,
          augend.integer.alias.hex,
          augend.date.alias["%Y/%m/%d"],
          augend.constant.alias.bool,
          augend.semver.alias.semver,
          augend.constant.new({ elements = { "let", "const" } }), -- Toggle let/const
        },
      })
    end,
  },
  -- Code structure overview
  {
    "simrat39/symbols-outline.nvim",
    keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
    cmd = "SymbolsOutline",
    opts = {
      position = "right",
    },
  },
  -- Never lose your place
  {
    "chentoast/marks.nvim",
    event = "VeryLazy",
    opts = {},
  },
}
π― Why These Plugins Rock:
- Blink.cmp: Faster than nvim-cmp with AI suggestions
- Inc-rename: See all changes before committing
- 
Dial: Turn trueβfalse,MondayβTuesday,letβconst
- 
Mini.bracketed: Use ]fto jump to next function,]dfor next diagnostic
Master Web Development with Perfect LSP
Create: lua/plugins/lsp.lua
return {
  -- Auto-install LSP servers
  {
    "williamboman/mason.nvim",
    opts = function(_, opts)
      vim.list_extend(opts.ensure_installed, {
        "typescript-language-server",
        "css-lsp",
        "tailwindcss-language-server",
        "biome", -- Fast formatter/linter
      })
    end,
  },
  -- LSP configuration
  {
    "neovim/nvim-lspconfig",
    opts = {
      inlay_hints = { enabled = false }, -- Toggle when needed
      servers = {
        -- TypeScript/JavaScript powerhouse
        tsserver = {
          root_dir = function(...)
            return require("lspconfig.util").root_pattern(".git")(...)
          end,
          settings = {
            typescript = {
              inlayHints = {
                includeInlayParameterNameHints = "literal",
                includeInlayParameterNameHintsWhenArgumentMatchesName = false,
                includeInlayFunctionParameterTypeHints = true,
                includeInlayVariableTypeHints = false,
                includeInlayPropertyDeclarationTypeHints = true,
              },
            },
            javascript = {
              inlayHints = {
                includeInlayParameterNameHints = "all",
                includeInlayParameterNameHintsWhenArgumentMatchesName = false,
                includeInlayFunctionParameterTypeHints = true,
              },
            },
          },
        },
        -- CSS intellisense
        cssls = {},
        -- Tailwind CSS support
        tailwindcss = {
          root_dir = function(...)
            return require("lspconfig.util").root_pattern(".git")(...)
          end,
        },
        -- HTML support
        html = {},
      },
    },
  },
}
π₯ Pro Tips:
- Mason auto-installs everything you need
- Inlay hints show parameter types (toggle with custom keymap later!)
- Root detection ensures proper project context
Create a Beautiful, Functional Interface
Create: lua/plugins/ui.lua
return {
  -- Beautiful dashboard
  {
    "folke/snacks.nvim",
    opts = {
      dashboard = {
        preset = {
          header = [[
Your custom ASCII art here (keep it simple!)
Welcome back, developer! π
          ]],
        },
      },
    },
  },
  -- Smart filename display
  {
    "b0o/incline.nvim",
    dependencies = { "craftzdog/solarized-osaka.nvim" },
    event = "BufReadPre",
    config = function()
      local colors = require("solarized-osaka.colors").setup()
      require("incline").setup({
        highlight = {
          groups = {
            InclineNormal = { guibg = colors.magenta500, guifg = colors.base04 },
            InclineNormalNC = { guifg = colors.violet500, guibg = colors.base03 },
          },
        },
        window = { margin = { vertical = 0, horizontal = 1 } },
        render = function(props)
          local filename = vim.fn.fnamemodify(vim.api.nvim_buf_get_name(props.buf), ":t")
          if vim.bo[props.buf].modified then
            filename = "[+] " .. filename
          end
          local icon, color = require("nvim-web-devicons").get_icon_color(filename)
          return { { icon, guifg = color }, { " " }, { filename } }
        end,
      })
    end,
  },
  -- Distraction-free coding
  {
    "folke/zen-mode.nvim",
    cmd = "ZenMode",
    keys = { { "<leader>z", "<cmd>ZenMode<cr>", desc = "Zen Mode" } },
    opts = {
      plugins = {
        gitsigns = true,
        tmux = true,
      },
    },
  },
  -- Clean buffer tabs
  {
    "akinsho/bufferline.nvim",
    opts = {
      options = {
        mode = "tabs",
        show_buffer_close_icons = false,
        show_close_icon = false,
      },
    },
  },
}
Essential Editor Tools for Daily Work
Create: lua/plugins/editor.lua
return {
  -- See colors in your CSS files
  {
    "brenoprata10/nvim-highlight-colors",
    event = "BufReadPre",
    opts = {
      render = "background",
      enable_hex = true,
      enable_short_hex = true,
      enable_rgb = true,
      enable_hsl = true,
      enable_tailwind = true,
    },
  },
  -- Git integration
  {
    "dinhhuy258/git.nvim",
    event = "BufReadPre",
    opts = {
      keymaps = {
        blame = "<Leader>gb", -- See who wrote this code
        browse = "<Leader>go", -- Open on GitHub
      },
    },
  },
  -- Enhanced Telescope
  {
    "nvim-telescope/telescope.nvim",
    dependencies = {
      "nvim-telescope/telescope-fzf-native.nvim",
      "nvim-telescope/telescope-file-browser.nvim",
    },
    keys = {
      -- Your actual keymaps from config
      { ";f", function() require("telescope.builtin").find_files({ hidden = true }) end, desc = "Find Files" },
      { ";r", function() require("telescope.builtin").live_grep({ additional_args = { "--hidden" } }) end, desc = "Live Grep" },
      { "\\\\", function() require("telescope.builtin").buffers() end, desc = "Buffers" },
      { ";;", function() require("telescope.builtin").resume() end, desc = "Resume" },
    },
  },
  -- Smart buffer management
  {
    "kazhala/close-buffers.nvim",
    event = "VeryLazy",
    keys = {
      { "<leader>th", function() require("close_buffers").delete({ type = "hidden" }) end, desc = "Close Hidden Buffers" },
      { "<leader>tu", function() require("close_buffers").delete({ type = "nameless" }) end, desc = "Close Nameless Buffers" },
    },
  },
}
Custom Power Tools (The Secret Sauce!) π₯·
The Cowboy Discipline System
Create: lua/insideee-dev/discipline.lua
local M = {}
function M.cowboy()
  -- Prevent excessive use of hjkl and arrow keys
  for _, key in ipairs({ "h", "j", "k", "l", "+", "-" }) do
    local count = 0
    local timer = assert(vim.uv.new_timer())
    local map = key
    vim.keymap.set("n", key, function()
      if vim.v.count > 0 then
        count = 0
      end
      if count >= 10 and vim.bo.buftype ~= "nofile" then
        vim.notify("Hold it Cowboy! π€ ", vim.log.levels.WARN, {
          icon = "π€ ",
          id = "cowboy",
        })
      else
        count = count + 1
        timer:start(2000, 0, function()
          count = 0
        end)
        return map
      end
    end, { expr = true, silent = true })
  end
end
return M
π€ What This Does:
- Prevents you from spamming hjkl keys (builds better habits!)
- Encourages using proper Vim motions like w,b,f,t
- Shows a fun cowboy notification when you need to slow down
Smart File & Path Utilities
Create: lua/insideee-dev/utils.lua
local M = {}
-- Copy relative path of current file to clipboard
function M.copy_to_clipboard(has_current_line)
  local current_file_name = vim.fn.expand("%")
  local relative_path = vim.fn.fnamemodify(current_file_name, ":.")
  if has_current_line then
    relative_path = relative_path .. ":" .. vim.fn.line(".")
  end
  vim.fn.setreg("+", relative_path)
  local message = has_current_line and "Copied with line: " or "Copied path: "
  vim.notify(message .. relative_path, vim.log.levels.INFO)
end
-- Helper functions for table manipulation
function M.shallow_copy(t)
  local copy = {}
  for k, v in pairs(t) do
    copy[k] = v
  end
  return copy
end
function M.shallow_merge(table_1st, table_2nd)
  local result = M.shallow_copy(table_1st)
  for k, v in pairs(table_2nd) do
    result[k] = v
  end
  return result
end
return M
Color Conversion Magic
Add to your utils.lua:
-- Convert hex colors to HSL (great for CSS work!)
function M.hex_to_HSL(hex)
  -- Your existing color conversion functions here
  local rgb = M.hex_to_rgb(hex)
  local h, s, l = M.rgb_to_hsl(rgb[1], rgb[2], rgb[3])
  return string.format("hsl(%d, %d%%, %d%%)", math.floor(h + 0.5), math.floor(s + 0.5), math.floor(l + 0.5))
end
function M.replace_hex_with_HSL()
  local line_number = vim.api.nvim_win_get_cursor(0)[1]
  local line_content = vim.api.nvim_buf_get_lines(0, line_number - 1, line_number, false)[1]
  -- Find and replace hex codes
  for hex in line_content:gmatch("#[0-9a-fA-F]+") do
    local hsl = M.hex_to_HSL(hex)
    line_content = line_content:gsub(hex, hsl)
  end
  vim.api.nvim_buf_set_lines(0, line_number - 1, line_number, false, { line_content })
end
π¨ Real-world use: Convert #3b82f6 to hsl(217, 91%, 60%) instantly!
LSP Enhancement Helpers
Create: lua/insideee-dev/lsp.lua
local M = {}
function M.toggleInlayHints()
  vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
end
return M
Wire Everything Up in Keymaps {#wire-up-keymaps}
Add to your lua/config/keymaps.lua:
local discipline = require("insideee-dev.discipline")
local utils = require("insideee-dev.utils")
-- Enable cowboy discipline
discipline.cowboy()
-- File path utilities
keymap.set("n", "<Leader>yr", function()
  utils.copy_to_clipboard()
end, { desc = "Copy relative path" })
keymap.set("n", "<Leader>yR", function()
  utils.copy_to_clipboard(true)
end, { desc = "Copy path with line number" })
-- Color conversion magic
keymap.set("n", "<leader>r", function()
  utils.replace_hex_with_HSL()
end, { desc = "Replace hex with HSL" })
-- LSP helpers
keymap.set("n", "<leader>i", function()
  require("insideee-dev.lsp").toggleInlayHints()
end, { desc = "Toggle inlay hints" })
Pro Developer Workflows πͺ
Morning Setup Routine
Your daily startup sequence:
- Open project: nvim(see your custom dashboard!)
- Recent files: ;fβ type project name
- Search TODOs: ;rβ type "TODO"
- Check git status: <leader>gg(if you have lazygit)
- Review diagnostics: <leader>xx
Debugging Like a Boss
When code breaks:
- Jump to error: <C-j>(next diagnostic)
- Show details: <leader>cd(line diagnostics)
- Quick fix: <leader>ca(code actions)
- Restart LSP: :LspRestartif needed
- Format code: <leader>cf(with Biome)
File Navigation Mastery
Become a navigation ninja:
- 
]n/[n- Next/previous treesitter node (function, class, etc.)
- 
]d/[d- Next/previous diagnostic
- 
<C-j>- Jump to next diagnostic (your custom keymap)
- 
<leader>1-6- Jump to specific buffer
- 
sf- Browse files in current directory
- 
;;- Resume last telescope search
Keep It Fast: Performance Tips β‘
Your setup is already optimized, but here's why:
- Lazy Loading: Plugins load only when needed
- 
Event-based Loading: BufReadPre,VeryLazy, etc.
- Minimal Startup: Essential plugins only
- Smart Defaults: Pre-configured for speed
Check your startup time:
nvim --startuptime startup.log
Profile plugins:
:Lazy profile
When Things Break: Troubleshooting Guide π§
LSP Not Working?
- 
:Mason- Check installed servers
- 
:LspInfo- See attached servers
- 
:LspRestart- Restart language server
- Check project has package.jsonor.git
Completion Not Showing?
- 
:Lazy sync- Update plugins
- Check Codeium is working: :Codeium Auth
- Restart nvim completely
Telescope Errors?
- Install dependencies: brew install ripgrep fd
- 
:checkhealth telescope- Check setup
- Clear cache: rm -rf ~/.local/share/nvim
Performance Issues?
- 
:Lazy profile- Find slow plugins
- Disable unused TreeSitter parsers
- Check for plugin conflicts
Your Next Level Journey π
Congratulations! You're now a LazyVim Beast! π¦
You've mastered:
- β Production-ready plugin configuration
- β Custom utilities that save time daily
- β Professional developer workflows
- β Performance optimization
- β Troubleshooting skills
Keep growing:
- Explore language-specific plugins
- Create custom snippets for your projects
- Contribute to the LazyVim community
- Share your setup with other developers
Advanced topics to explore later:
- Custom plugin development
- Advanced Lua scripting
- Integration with external tools (Docker, databases)
- Team configuration management
You're ready to code like a superhero! Your LazyVim beast mode is fully activated! ππ₯
Happy coding, and may your bugs be few and your commits be clean! π€
My dotfiles configurations:
       crafts69guy
       / 
        .dotfiles
      
        crafts69guy
       / 
        .dotfiles
      
    
    This repo leverages GNU Stow to simplify symlink management, making it easy to install and update configurations across different machines.
Warning: Donβt blindly use my settings unless you know what that entails. Use at your own risk!
π Contents
- Neovim β Custom plugins, keybindings, and themes
- Tmux β Optimized terminal workflow
- Git β Configuration for efficient version control
- Karabiner β Custom key mappings for Vim efficiency
- Fish Shell β Enhanced terminal experience
- GNU Stow β Simple dotfiles management
π Setting Up a New Machine with This Repo
This repository uses GNU Stow to manage dotfiles efficiently with symlinks. Follow these steps to set up your new machine:
1. Install Required Packages
Install Stow & Essential Tools
macOS:
brew install stow git fish tmux neovim
Linux (Debian/Ubuntu):
sudo apt update && sudo apt install stow git fish tmux neovim
Linux (Arch):
sudo pacman -S stow git fish tmux neovim
Install Fisher
A plugin manager for Fish
macOS:
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
 
 
              



 
       
    
Top comments (0)