LazyVim.LazyVim/doc/LazyVim.txt
2023-01-09 10:18:58 +00:00

546 lines
26 KiB
Text
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

*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>.
Cant decide between building a config from scratch or using one of the
existing Neovim **_distros_**?
With **LazyVim** you dont 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/211285846-0b7bb3bf-0462-4029-b64c-4ee1d037fc1c.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 dont 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 youll 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> Dont 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: