*LazyVim.txt*         For Neovim >= 0.8.0         Last change: 2023 January 09

==============================================================================
Table of Contents                                  *LazyVim-table-of-contents*

1. LazyVim                                                   |LazyVim-lazyvim|
  - Getting Started                                  |LazyVim-getting-started|
  - File Structure                                    |LazyVim-file-structure|
  - Configuring **LazyVim**                  |LazyVim-configuring-**lazyvim**|
  - Keymaps                                                  |LazyVim-keymaps|
  - Plugins                                                  |LazyVim-plugins|

==============================================================================
1. LazyVim                                                   *LazyVim-lazyvim*

Neovim config for the lazy powered by lazy.nvim
<https://github.com/folke/lazy.nvim>.

Can’t decide between building a config from scratch or using one of the
existing Neovim **_distros_**?

With **LazyVim** you don’t have to. Configuring **LazyVim** is **exactly the
same** as you would configure a config from scratch. You can easily add new
plugins, change the config for existing ones or disable plugins.

<div class="figure">
<img src="https://user-images.githubusercontent.com/292349/210136312-c211f781-6d51-46b0-a265-6098bdbb364d.png" title="fig:"/>
<p class="caption">image</p>
</div>

GETTING STARTED                                      *LazyVim-getting-started*

You can find a starter template for **LazyVim** here
<https://github.com/LazyVim/starter>

**TLDR:**

>lua
    require("lazy").setup({
      spec = {
        -- import LazyVim plugins
        { "LazyVim/LazyVim", import = "lazyvim.plugins" },
        -- import/override with your plugins
        { import = "plugins" },
        -- import any extras modules here
        -- { import = "lazyvim.plugins.extras.lang.typescript" },
        -- { import = "lazyvim.plugins.extras.lang.json" },
      },
      defaults = {
        lazy = true, -- every plugin is lazy-loaded by default
        version = "", -- try installing the latest stable version for plugins that support semver
      },
    })
<


FILE STRUCTURE                                        *LazyVim-file-structure*

The files under config will be automatically loaded at the appropriate time, so
you don’t need to require those files manually. **LazyVim** comes with a set
of default config files that will be loaded **_before_** your own. See here
<https://github.com/LazyVim/LazyVim/tree/main/lua/lazyvim/config>

You can add your custom plugin specs under `lua/plugins/`. All files there will
be automatically loaded by lazy.nvim <https://github.com/folke/lazy.nvim>

<pre>
~/.config/nvim
 lua
    config
       autocmds.lua
       keymaps.lua
       lazy.lua
       options.lua
    plugins
        spec1.lua
        
        spec2.lua
 init.toml
</pre>

CONFIGURING **LAZYVIM**                      *LazyVim-configuring-**lazyvim***

Configuring **LazyVim** is exactly the same as using **lazy.nvim** to build a
config from scratch.

For the full plugin spec documentation please check the **lazy.nvim** readme
<https://github.com/folke/lazy.nvim>.

Example spec: <code>lua/plugins/example.lua</code>

>lua
    -- every spec file under config.plugins will be loaded automatically by lazy.nvim
    --
    -- In your plugin files, you can:
    --  add extra plugins
    --  disable/enabled LazyVim plugins
    --  override the configuration of LazyVim plugins
    return {
      -- change trouble config
      {
        "folke/trouble.nvim",
        -- opts will be merged with the parent spec
        opts = { use_diagnostic_signs = true },
      },
    
      -- disable trouble
      { "folke/trouble.nvim", enabled = false },
    
      -- add symbols-outline
      {
        "simrat39/symbols-outline.nvim",
        cmd = "SymbolsOutline",
        keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
        config = true,
      },
    
      -- override nvim-cmp and add cmp-emoji
      {
        "hrsh7th/nvim-cmp",
        dependencies = { "hrsh7th/cmp-emoji" },
        ---@param opts cmp.ConfigSchema
        opts = function(_, opts)
          local cmp = require("cmp")
          opts.sources = cmp.config.sources(vim.list_extend(opts.sources, { { name = "emoji" } }))
        end,
      },
    
      -- change some telescope options and add telescope-fzf-native
      {
        "nvim-telescope/telescope.nvim",
        dependencies = { { "nvim-telescope/telescope-fzf-native.nvim", build = "make" } },
        keys = {
          -- add a keymap to browse plugin files
          -- stylua: ignore
          {
            "<leader>fp",
            function() require("telescope.builtin").find_files({ cwd = require("lazy.core.config").options.root }) end,
            desc = "Find Plugin File",
          },
        },
        -- change some options
        opts = {
          defaults = {
            layout_strategy = "horizontal",
            layout_config = { prompt_position = "top" },
            sorting_strategy = "ascending",
            winblend = 0,
          },
        },
        -- apply the config and additionally load fzf-native
        config = function(_, opts)
          local telescope = require("telescope")
          telescope.setup(opts)
          telescope.load_extension("fzf")
        end,
      },
    
      -- add pyright and setup tsserver with typescript.nvim
      {
        "neovim/nvim-lspconfig",
        dependencies = {
          "jose-elias-alvarez/typescript.nvim",
          init = function()
            require("lazyvim.util").on_attach(function(_, buffer)
              -- stylua: ignore
              vim.keymap.set( "n", "<leader>co", "TypescriptOrganizeImports", { buffer = buffer, desc = "Organize Imports" })
              vim.keymap.set("n", "<leader>cR", "TypescriptRenameFile", { desc = "Rename File", buffer = buffer })
            end)
          end,
        },
        ---@class PluginLspOpts
        opts = {
          ---@type lspconfig.options
          servers = {
            -- pyright will be automatically installed with mason and loaded with lspconfig
            pyright = {},
            tsserver = {},
          },
          -- you can do any additional lsp server setup here
          -- return true if you don't want this server to be setup with lspconfig
          ---@type table<string, fun(server:string, opts:_.lspconfig.options):boolean?>
          setup = {
            -- example to setup with typescript.nvim
            tsserver = function(_, opts)
              require("typescript").setup({ server = opts })
              return true
            end,
            -- Specify  to use this function as a fallback for any server
            -- [""] = function(server, opts) end,
          },
        },
      },
    
      -- for typescript, LazyVim also includes extra specs to properly setup lspconfig,
      -- treesitter, mason and typescript.nvim. So instead of the above, you can use:
      { import = "lazyvim.plugins.extras.lang.typescript" },
    
      -- add more treesitter parsers
      {
        "nvim-treesitter/nvim-treesitter",
        opts = {
          ensure_installed = {
            "bash",
            "help",
            "html",
            "javascript",
            "json",
            "lua",
            "markdown",
            "markdown_inline",
            "python",
            "query",
            "regex",
            "tsx",
            "typescript",
            "vim",
            "yaml",
          },
        },
      },
    
      -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above
      -- would overwrite `ensure_installed` with the ne value.
      -- If you'd rather extend the default config, use the code below instead:
      {
        "nvim-treesitter/nvim-treesitter",
        opts = function(_, opts)
          vim.list_extend(opts.ensure_installed, {
            -- add tsx and treesitter
            ensure_installed = {
              "tsx",
              "typescript",
            },
          })
        end,
      },
    
      -- the opts function can als be used to change the default opts:
      {
        "nvim-lualine/lualine.nvim",
        event = "VeryLazy",
        opts = function(_, opts)
          table.insert(opts.sections.lualine_x, "")
        end,
      },
    
      -- or you can return new options to override all the defaults
      {
        "nvim-lualine/lualine.nvim",
        event = "VeryLazy",
        opts = function()
          return {
            --[[add your custom lualine config here]]
          }
        end,
      },
    
      -- use mini.starter instead of alpha
      { import = "lazyvim.plugins.extras.ui.mini-starter" },
    
      -- add jsonls and schemastore ans setup treesitter for json, json5 and jsonc
      { import = "lazyvim.plugins.extras.lang.json" },
    
      -- add any tools you want to have installed below
      {
        "williamboman/mason.nvim",
        opts = {
          ensure_installed = {
            "stylua",
            "shellcheck",
            "shfmt",
            "flake8",
          },
        },
      },
    }
<


KEYMAPS                                                      *LazyVim-keymaps*

**LazyVim** uses which-key.nvim <https://github.com/folke/which-key> to help
you remember your keymaps. Just press any key like `<space>` and you’ll see a
popup with all possible keymaps starting with `<space>`.

<div class="figure">
<img src="https://user-images.githubusercontent.com/292349/211259984-a7522199-81a2-44f7-be6c-af21ba153f0a.png" title="fig:"/>
<p class="caption">image</p>
</div>

General

│         Key          │       Description        │           Mode           │
│<C-h>                 │Go to left window         │**n**                     │
│<C-j>                 │Go to lower window        │**n**                     │
│<C-k>                 │Go to upper window        │**n**                     │
│<C-l>                 │Go to right window        │**n**                     │
│<C-Up>                │Increase window height    │**n**                     │
│<C-Down>              │Decrease window height    │**n**                     │
│<C-Left>              │Decrease window width     │**n**                     │
│<C-Right>             │Increase window width     │**n**                     │
│<A-j>                 │Move down                 │**n**, **v**, **i**       │
│<A-k>                 │Move up                   │**n**, **v**, **i**       │
│<S-h>                 │Prev buffer               │**n**                     │
│<S-l>                 │Next buffer               │**n**                     │
│[p                    │Paste below               │**n**                     │
│]p                    │Paste above               │**n**                     │
│<esc>                 │Escape and clear hlsearch │**i**, **n**              │
│n                     │Next search result        │**n**, **x**, **o**       │
│N                     │Prev search result        │**n**, **x**, **o**       │
│<C-s>                 │Save file                 │**i**, **v**, **n**, **s**│
│<leader>l             │Lazy                      │**n**                     │
│<leader>fn            │New File                  │**n**                     │
│<leader>xl            │Open Location List        │**n**                     │
│<leader>xq            │Open Quickfix List        │**n**                     │
│<leader>tf            │Toggle format on Save     │**n**                     │
│<leader>ts            │Toggle Spelling           │**n**                     │
│<leader>tw            │Toggle Word Wrap          │**n**                     │
│<leader>tn            │Toggle Line Numbers       │**n**                     │
│<leader>td            │Toggle Diagnostics        │**n**                     │
│<leader>tc            │Toggle Conceal            │**n**                     │
│<leader>gg            │Lazygit (cwd)             │**n**                     │
│<leader>gG            │Lazygit (root dir)        │**n**                     │
│<leader>qq            │Quit all                  │**n**                     │
│<leader>hl            │Highlight Groups at cursor│**n**                     │
│<leader>ot            │Terminal (root dir)       │**n**                     │
│<leader>oT            │Terminal (cwd)            │**n**                     │
│<esc><esc>            │Enter Normal Mode         │**t**                     │
│<leader>ww            │other-window              │**n**                     │
│<leader>wd            │delete-window             │**n**                     │
│<leader>w-            │split-window-below        │**n**                     │
│<leader>w\|           │split-window-right        │**n**                     │
│<leader><tab>l        │Last                      │**n**                     │
│<leader><tab>f        │First                     │**n**                     │
│<leader><tab><tab>    │New Tab                   │**n**                     │
│<leader><tab>]        │Next                      │**n**                     │
│<leader><tab>d        │Close                     │**n**                     │
│<leader><tab>[        │Previous                  │**n**                     │
│<leader>b]            │Next Buffer               │**n**                     │
│<leader>bb            │Switch to Other Buffer    │**n**                     │
│<leader>b[            │Previous Buffer           │**n**                     │
│<leader>              │Switch to Other Buffer    │**n**                     │


LSP

│     Key      │     Description     │    Mode    │
│<leader>cd    │Line Diagnostics     │**n**       │
│<leader>cl    │Lsp Info             │**n**       │
│<leader>xd    │Telescope Diagnostics│**n**       │
│gd            │Goto Definition      │**n**       │
│gr            │References           │**n**       │
│gD            │Goto Declaration     │**n**       │
│gI            │Goto Implementation  │**n**       │
│gt            │Goto Type Definition │**n**       │
│K             │Hover                │**n**       │
│gK            │Signature Help       │**n**       │
│[d            │Next Diagnostic      │**n**       │
│]d            │Prev Diagnostic      │**n**       │
│]e            │Next Error           │**n**       │
│[e            │Prev Error           │**n**       │
│]w            │Next Warning         │**n**       │
│[w            │Prev Warning         │**n**       │
│<leader>ca    │Code Action          │**n**, **v**│
│<leader>cf    │Format Document      │**n**       │
│<leader>cf    │Format Range         │**v**       │
│<leader>cr    │Rename               │**n**       │


Plugins

│        Key        │                                         Description                                         │Mode │
│<leader>cm         │mason.nvim <https://github.com/williamboman/mason.nvim.git> Mason                            │**n**│
│<leader>bd         │mini.bufremove <https://github.com/echasnovski/mini.bufremove.git> Delete Buffer             │**n**│
│<leader>bD         │mini.bufremove <https://github.com/echasnovski/mini.bufremove.git> Delete Buffer (Force)     │**n**│
│<leader>ft         │neo-tree.nvim <https://github.com/nvim-neo-tree/neo-tree.nvim.git> NeoTree (root dir)        │**n**│
│<leader>fT         │neo-tree.nvim <https://github.com/nvim-neo-tree/neo-tree.nvim.git> NeoTree (cwd)             │**n**│
│<S-Enter>          │noice.nvim <https://github.com/folke/noice.nvim.git> Redirect Cmdline                        │**c**│
│<leader>nl         │noice.nvim <https://github.com/folke/noice.nvim.git> Noice Last Message                      │**n**│
│<leader>nh         │noice.nvim <https://github.com/folke/noice.nvim.git> Noice History                           │**n**│
│<leader>na         │noice.nvim <https://github.com/folke/noice.nvim.git> Noice All                               │**n**│
│<c-f>              │noice.nvim <https://github.com/folke/noice.nvim.git> Scroll forward                          │**n**│
│<c-b>              │noice.nvim <https://github.com/folke/noice.nvim.git> Scroll backward                         │**n**│
│<leader>nd         │nvim-notify <https://github.com/rcarriga/nvim-notify.git> Delete all Notifications           │**n**│
│<leader>sr         │nvim-spectre <https://github.com/windwp/nvim-spectre.git> Replace in files (Spectre)         │**n**│
│<leader>qs         │persistence.nvim <https://github.com/folke/persistence.nvim.git> Restore Session             │**n**│
│<leader>ql         │persistence.nvim <https://github.com/folke/persistence.nvim.git> Restore Last Session        │**n**│
│<leader>qd         │persistence.nvim <https://github.com/folke/persistence.nvim.git> Don’t Save Current Session│**n**│
│<leader>/          │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Find in Files (Grep)   │**n**│
│<leader><space>    │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Find Files (root dir)  │**n**│
│<leader>fb         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Buffers                │**n**│
│<leader>ff         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Find Files (root dir)  │**n**│
│<leader>fF         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Find Files (cwd)       │**n**│
│<leader>fr         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Recent                 │**n**│
│<leader>gc         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> commits                │**n**│
│<leader>gs         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> status                 │**n**│
│<leader>ha         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Auto Commands          │**n**│
│<leader>hc         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Commands               │**n**│
│<leader>hf         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> File Types             │**n**│
│<leader>hh         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Help Pages             │**n**│
│<leader>hk         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Key Maps               │**n**│
│<leader>hm         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Man Pages              │**n**│
│<leader>ho         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Options                │**n**│
│<leader>hs         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Search Highlight Groups│**n**│
│<leader>ht         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Telescope              │**n**│
│<leader>sb         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Buffer                 │**n**│
│<leader>sc         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Command History        │**n**│
│<leader>sg         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Grep (root dir)        │**n**│
│<leader>sG         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Grep (cwd)             │**n**│
│<leader>sm         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Jump to Mark           │**n**│
│<leader>,          │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Switch Buffer          │**n**│
│<leader>:          │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Command History        │**n**│
│<leader>ss         │telescope.nvim <https://github.com/nvim-telescope/telescope.nvim.git> Goto Symbol            │**n**│
│]t                 │todo-comments.nvim <https://github.com/folke/todo-comments.nvim.git> Next todo comment       │**n**│
│[t                 │todo-comments.nvim <https://github.com/folke/todo-comments.nvim.git> Previous todo comment   │**n**│
│<leader>xt         │todo-comments.nvim <https://github.com/folke/todo-comments.nvim.git> Todo Trouble            │**n**│
│<leader>xtt        │todo-comments.nvim <https://github.com/folke/todo-comments.nvim.git> Todo Trouble            │**n**│
│<leader>xT         │todo-comments.nvim <https://github.com/folke/todo-comments.nvim.git> Todo Telescope          │**n**│
│<leader>xx         │trouble.nvim <https://github.com/folke/trouble.nvim.git> Document Diagnostics (Trouble)      │**n**│
│<leader>xX         │trouble.nvim <https://github.com/folke/trouble.nvim.git> Workspace Diagnostics (Trouble)     │**n**│
│]]                 │vim-illuminate <https://github.com/RRethy/vim-illuminate.git> Next Reference                 │**n**│
│[[                 │vim-illuminate <https://github.com/RRethy/vim-illuminate.git> Prev Reference                 │**n**│


PLUGINS                                                      *LazyVim-plugins*

Core


- alpha-nvim <https://github.com/goolord/alpha-nvim>
- catppuccin <https://github.com/catppuccin/nvim>
- cmp-buffer <https://github.com/hrsh7th/cmp-buffer>
- cmp-nvim-lsp <https://github.com/hrsh7th/cmp-nvim-lsp>
- cmp-path <https://github.com/hrsh7th/cmp-path>
- cmp_luasnip <https://github.com/saadparwaiz1/cmp_luasnip>
- dressing.nvim <https://github.com/stevearc/dressing.nvim>
- flit.nvim <https://github.com/ggandor/flit.nvim>
- friendly-snippets <https://github.com/rafamadriz/friendly-snippets>
- gitsigns.nvim <https://github.com/lewis6991/gitsigns.nvim>
- indent-blankline.nvim <https://github.com/lukas-reineke/indent-blankline.nvim>
- lazy.nvim <https://github.com/folke/lazy.nvim>
- leap.nvim <https://github.com/ggandor/leap.nvim>
- lualine.nvim <https://github.com/nvim-lualine/lualine.nvim>
- LuaSnip <https://github.com/L3MON4D3/LuaSnip>
- mason-lspconfig.nvim <https://github.com/williamboman/mason-lspconfig.nvim>
- mason.nvim <https://github.com/williamboman/mason.nvim>
- mini.ai <https://github.com/echasnovski/mini.ai>
- mini.bufremove <https://github.com/echasnovski/mini.bufremove>
- mini.comment <https://github.com/echasnovski/mini.comment>
- mini.indentscope <https://github.com/echasnovski/mini.indentscope>
- mini.pairs <https://github.com/echasnovski/mini.pairs>
- mini.surround <https://github.com/echasnovski/mini.surround>
- neo-tree.nvim <https://github.com/nvim-neo-tree/neo-tree.nvim>
- neoconf.nvim <https://github.com/folke/neoconf.nvim>
- neodev.nvim <https://github.com/folke/neodev.nvim>
- noice.nvim <https://github.com/folke/noice.nvim>
- nui.nvim <https://github.com/MunifTanjim/nui.nvim>
- null-ls.nvim <https://github.com/jose-elias-alvarez/null-ls.nvim>
- nvim-bufferline.lua <https://github.com/akinsho/nvim-bufferline.lua>
- nvim-cmp <https://github.com/hrsh7th/nvim-cmp>
- nvim-lspconfig <https://github.com/neovim/nvim-lspconfig>
- nvim-navic <https://github.com/SmiteshP/nvim-navic>
- nvim-notify <https://github.com/rcarriga/nvim-notify>
- nvim-spectre <https://github.com/windwp/nvim-spectre>
- nvim-treesitter <https://github.com/nvim-treesitter/nvim-treesitter>
- nvim-treesitter-textobjects <https://github.com/nvim-treesitter/nvim-treesitter-textobjects>
- nvim-ts-context-commentstring <https://github.com/JoosepAlviste/nvim-ts-context-commentstring>
- nvim-web-devicons <https://github.com/nvim-tree/nvim-web-devicons>
- persistence.nvim <https://github.com/folke/persistence.nvim>
- plenary.nvim <https://github.com/nvim-lua/plenary.nvim>
- telescope.nvim <https://github.com/nvim-telescope/telescope.nvim>
- todo-comments.nvim <https://github.com/folke/todo-comments.nvim>
- tokyonight.nvim <https://github.com/folke/tokyonight.nvim>
- trouble.nvim <https://github.com/folke/trouble.nvim>
- vim-illuminate <https://github.com/RRethy/vim-illuminate>
- vim-startuptime <https://github.com/dstein64/vim-startuptime>
- which-key.nvim <https://github.com/folke/which-key.nvim>


Extras: <code>lang.json</code>

To use this, add it to your **lazy.nvim** imports:

>lua
    require("lazy").setup({
      spec = {
        { "folke/LazyVim", import = "lazyvim.plugins" },
        { import = "lazyvim.plugins.extras.lang.json" },
        { import = "plugins" },
      },
    })
<



- nvim-lspconfig <https://github.com/neovim/nvim-lspconfig>
- nvim-treesitter <https://github.com/nvim-treesitter/nvim-treesitter>
- schemastore.nvim <https://github.com/b0o/schemastore.nvim>


Extras: <code>lang.typescript</code>

To use this, add it to your **lazy.nvim** imports:

>lua
    require("lazy").setup({
      spec = {
        { "folke/LazyVim", import = "lazyvim.plugins" },
        { import = "lazyvim.plugins.extras.lang.typescript" },
        { import = "plugins" },
      },
    })
<



- nvim-lspconfig <https://github.com/neovim/nvim-lspconfig>
- nvim-treesitter <https://github.com/nvim-treesitter/nvim-treesitter>
- typescript.nvim <https://github.com/jose-elias-alvarez/typescript.nvim>


Extras: <code>ui.mini-starter</code>

To use this, add it to your **lazy.nvim** imports:

>lua
    require("lazy").setup({
      spec = {
        { "folke/LazyVim", import = "lazyvim.plugins" },
        { import = "lazyvim.plugins.extras.ui.mini-starter" },
        { import = "plugins" },
      },
    })
<



- mini.starter <https://github.com/echasnovski/mini.starter>




Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>

vim:tw=78:ts=8:noet:ft=help:norl:
