PageSourceSearch

https://www.lazyvim.org/assets/js/b51453b7.e2472863.js

js lazyvim.org collected 2026-10-03 21:22:21 UTC 26,264 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunklazyvim=self.webpackChunklazyvim||[]).push([[2121],{3905:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>p});var r=t(7294);function a(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function i(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function o(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?i(Object(t),!0).forEach((function(n){a(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function l(e,n){if(null==e)return{};var t,r,a=function(e,n){if(null==e)return{};var t,r,a={},i=Object.keys(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||(a[t]=e[t]);return a}(e,n);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r<i.length;r++)t=i[r],n.indexOf(t)>=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(a[t]=e[t])}return a}var s=r.createContext({}),c=function(e){var n=r.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},u=function(e){var n=c(e.components);return r.createElement(s.Provider,{value:n},e.children)},f="mdxType",d={inlineCode:"code",wrapper:function(e){var n=e.children;return r.createElement(r.Fragment,{},n)}},m=r.forwardRef((function(e,n){var t=e.components,a=e.mdxType,i=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),f=c(t),m=a,p=f["".concat(s,".").concat(m)]||f[m]||d[m]||i;return t?r.createElement(p,o(o({ref:n},u),{},{components:t})):r.createElement(p,o({ref:n},u))}));function p(e,n){var t=arguments,a=n&&n.mdxType;if("string"==typeof e||a){var i=t.length,o=new Array(i);o[0]=m;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l[f]="string"==typeof e?e:a,o[1]=l;for(var c=2;c<i;c++)o[c]=t[c];return r.createElement.apply(null,o)}return r.createElement.apply(null,t)}m.displayName="MDXCreateElement"},5162:(e,n,t)=>{t.d(n,{Z:()=>o});var r=t(7294),a=t(6010);const i="tabItem_Ymn6";function o(e){let{children:n,hidden:t,className:o}=e;return r.createElement("div",{role:"tabpanel",className:(0,a.Z)(i,o),hidden:t},n)}},4866:(e,n,t)=>{t.d(n,{Z:()=>w});var r=t(7462),a=t(7294),i=t(6010),o=t(2466),l=t(6550),s=t(1980),c=t(7392),u=t(12);function f(e){return function(e){return a.Children.map(e,(e=>{if(!e||(0,a.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad <Tabs> child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the <Tabs> component should be <TabItem>, and every <TabItem> should have a unique "value" prop.`)}))?.filter(Boolean)??[]}(e).map((e=>{let{props:{value:n,label:t,attributes:r,default:a}}=e;return{value:n,label:t,attributes:r,default:a}}))}function d(e){const{values:n,children:t}=e;return(0,a.useMemo)((()=>{const e=n??f(t);return function(e){const n=(0,c.l)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in <Tabs>. Every value needs to be unique.`)}(e),e}),[n,t])}function m(e){let{value:n,tabValues:t}=e;return t.some((e=>e.value===n))}function p(e){let{queryString:n=!1,groupId:t}=e;const r=(0,l.k6)(),i=function(e){let{queryString:n=!1,groupId:t}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!t)throw new Error('Docusaurus error: The <Tabs> component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return t??null}({queryString:n,groupId:t});return[(0,s._X)(i),(0,a.useCallback)((e=>{if(!i)return;const n=new URLSearchParams(r.location.search);n.set(i,e),r.replace({...r.location,search:n.toString()})}),[i,r])]}function g(e){const{defaultValue:n,queryString:t=!1,groupId:r}=e,i=d(e),[o,l]=(0,a.useState)((()=>function(e){let{defaultValue:n,tabValues:t}=e;if(0===t.length)throw new Error("Docusaurus error: the <Tabs> component requires at least one <TabItem> children component");if(n){if(!m({value:n,tabValues:t}))throw new Error(`Docusaurus error: The <Tabs> has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${t.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const r=t.find((e=>e.default))??t[0];if(!r)throw new Error("Unexpected error: 0 tabValues");return r.value}({defaultValue:n,tabValues:i}))),[s,c]=p({queryString:t,groupId:r}),[f,g]=function(e){let{groupId:n}=e;const t=function(e){return e?`docusaurus.tab.${e}`:null}(n),[r,i]=(0,u.Nk)(t);return[r,(0,a.useCallback)((e=>{t&&i.set(e)}),[t,i])]}({groupId:r}),h=(()=>{const e=s??f;return m({value:e,tabValues:i})?e:null})();(0,a.useLayoutEffect)((()=>{h&&l(h)}),[h]);return{selectedValue:o,selectValue:(0,a.useCallback)((e=>{if(!m({value:e,tabValues:i}))throw new Error(`Can't select invalid tab value=${e}`);l(e),c(e),g(e)}),[c,g,i]),tabValues:i}}var h=t(2389);const v="tabList__CuJ",b="tabItem_LNqP";function y(e){let{className:n,block:t,selectedValue:l,selectValue:s,tabValues:c}=e;const u=[],{blockElementScrollPositionUntilNextRender:f}=(0,o.o5)(),d=e=>{const n=e.currentTarget,t=u.indexOf(n),r=c[t].value;r!==l&&(f(n),s(r))},m=e=>{let n=null;switch(e.key){case"Enter":d(e);break;case"ArrowRight":{const t=u.indexOf(e.currentTarget)+1;n=u[t]??u[0];break}case"ArrowLeft":{const t=u.indexOf(e.currentTarget)-1;n=u[t]??u[u.length-1];break}}n?.focus()};return a.createElement("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.Z)("tabs",{"tabs--block":t},n)},c.map((e=>{let{value:n,label:t,attributes:o}=e;return a.createElement("li",(0,r.Z)({role:"tab",tabIndex:l===n?0:-1,"aria-selected":l===n,key:n,ref:e=>u.push(e),onKeyDown:m,onClick:d},o,{className:(0,i.Z)("tabs__item",b,o?.className,{"tabs__item--active":l===n})}),t??n)})))}function _(e){let{lazy:n,children:t,selectedValue:r}=e;
1const i=(Array.isArray(t)?t:[t]).filter(Boolean);if(n){const e=i.find((e=>e.props.value===r));return e?(0,a.cloneElement)(e,{className:"margin-top--md"}):null}return a.createElement("div",{className:"margin-top--md"},i.map(((e,n)=>(0,a.cloneElement)(e,{key:n,hidden:e.props.value!==r}))))}function z(e){const n=g(e);return a.createElement("div",{className:(0,i.Z)("tabs-container",v)},a.createElement(y,(0,r.Z)({},e,n)),a.createElement(_,(0,r.Z)({},e,n)))}function w(e){const n=(0,h.Z)();return a.createElement(z,(0,r.Z)({key:String(n)},e))}},1733:(e,n,t)=>{t.r(n),t.d(n,{assets:()=>u,contentTitle:()=>s,default:()=>m,frontMatter:()=>l,metadata:()=>c,toc:()=>f});var r=t(7462),a=(t(7294),t(3905)),i=t(4866),o=t(5162);const l={},s="Fzf",c={unversionedId:"extras/editor/fzf",id:"extras/editor/fzf",title:"Fzf",description:"You can enable the extra with the :LazyExtras command.",source:"@site/docs/extras/editor/fzf.md",sourceDirName:"extras/editor",slug:"/extras/editor/fzf",permalink:"/extras/editor/fzf",draft:!1,editUrl:"https://github.com/LazyVim/lazyvim.github.io/tree/main/docs/extras/editor/fzf.md",tags:[],version:"current",frontMatter:{},sidebar:"tutorialSidebar",previous:{title:"Dial",permalink:"/extras/editor/dial"},next:{title:"Harpoon2",permalink:"/extras/editor/harpoon2"}},u={},f=[{value:"Options",id:"options",level:3},{value:"fzf-lua",id:"fzf-lua",level:2},{value:"fzf-lua",id:"fzf-lua-1",level:2},{value:"nvim-lspconfig",id:"nvim-lspconfig",level:2},{value:"todo-comments.nvim <em>(optional)</em>",id:"todo-commentsnvim-optional",level:2}],d={toc:f};
1function m(e){let{components:n,...t}=e;return(0,a.kt)("wrapper",(0,r.Z)({},d,t,{components:n,mdxType:"MDXLayout"}),(0,a.kt)("h1",{id:"fzf"},(0,a.kt)("inlineCode",{parentName:"h1"},"Fzf")),(0,a.kt)("admonition",{type:"info"},(0,a.kt)("p",{parentName:"admonition"},"You can enable the extra with the ",(0,a.kt)("inlineCode",{parentName:"p"},":LazyExtras")," command.\nPlugins marked as optional will only be configured if they are installed.")),(0,a.kt)("h3",{id:"options"},"Options"),(0,a.kt)("p",null,"Additional options for this extra can be configured in your ",(0,a.kt)("a",{parentName:"p",href:"/configuration/general#options"},"lua/config/options.lua")," file:"),(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-lua",metastring:'title="lua/config/options.lua"',title:'"lua/config/options.lua"'},'-- In case you don\'t want to use `:LazyExtras`,\n-- then you need to set the option below.\nvim.g.lazyvim_picker = "fzf"\n')),(0,a.kt)("p",null,"Below you can find a list of included plugins and their default settings."),(0,a.kt)("admonition",{type:"caution"},(0,a.kt)("p",{parentName:"admonition"},"You don't need to copy the default settings to your config.\nThey are only shown here for reference.")),(0,a.kt)("h2",{id:"fzf-lua"},(0,a.kt)("a",{parentName:"h2",href:"https://github.com/ibhagwan/fzf-lua"},"fzf-lua")),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{value:"opts",label:"Options",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-lua"},'opts = function(_, opts)\n  local fzf = require("fzf-lua")\n  local config = fzf.config\n  local actions = fzf.actions\n\n  -- Quickfix\n  config.defaults.keymap.fzf["ctrl-q"] = "select-all+accept"\n  config.defaults.keymap.fzf["ctrl-u"] = "half-page-up"\n  config.defaults.keymap.fzf["ctrl-d"] = "half-page-down"\n  config.defaults.keymap.fzf["ctrl-x"] = "jump"\n  config.defaults.keymap.fzf["ctrl-f"] = "preview-page-down"\n  config.defaults.keymap.fzf["ctrl-b"] = "preview-page-up"\n  config.defaults.keymap.builtin["<c-f>"] = "preview-page-down"\n  config.defaults.keymap.builtin["<c-b>"] = "preview-page-up"\n\n  -- Trouble\n  if LazyVim.has("trouble.nvim") then\n    config.defaults.actions.files["ctrl-t"] = require("trouble.sources.fzf").actions.open\n  end\n\n  -- Toggle root dir / cwd\n  config.defaults.actions.files["ctrl-r"] = function(_, ctx)\n    local o = vim.deepcopy(ctx.__call_opts)\n    o.root = o.root == false\n    o.cwd = nil\n    o.buf = ctx.__CTX.bufnr\n    LazyVim.pick.open(ctx.__INFO.cmd, o)\n  end\n  config.defaults.actions.files["alt-c"] = config.defaults.actions.files["ctrl-r"]\n  config.set_action_helpstr(config.defaults.actions.files["ctrl-r"], "toggle-root-dir")\n\n  local img_previewer ---@type string[]?\n  for _, v in ipairs({\n    { cmd = "ueberzug", args = {} },\n    { cmd = "chafa", args = { "{file}", "--format=symbols" } },\n    { cmd = "viu", args = { "-b" } },\n  }) do\n    if vim.fn.executable(v.cmd) == 1 then\n      img_previewer = vim.list_extend({ v.cmd }, v.args)\n      break\n    end\n  end\n\n  return {\n    "default-title",\n    fzf_colors = true,\n    fzf_opts = {\n      ["--no-scrollbar"] = true,\n    },\n    defaults = {\n      -- formatter = "path.filename_first",\n      formatter = "path.dirname_first",\n    },\n    previewers = {\n      builtin = {\n        extensions = {\n          ["png"] = img_previewer,\n          ["jpg"] = img_previewer,\n          ["jpeg"] = img_previewer,\n          ["gif"] = img_previewer,\n          ["webp"] = img_previewer,\n        },\n        ueberzug_scaler = "fit_contain",\n      },\n    },\n    -- Custom LazyVim option to configure vim.ui.select\n    ui_select = function(fzf_opts, items)\n      return vim.tbl_deep_extend("force", fzf_opts, {\n        prompt = "\uf105 ",\n        winopts = {\n          title = " " .. vim.trim((fzf_opts.prompt or "Select"):gsub("%s*:%s*$", "")) .. " ",\n          title_pos = "center",\n        },\n      }, fzf_opts.kind == "codeaction" and {\n        winopts = {\n          layout = "vertical",\n          -- height is number of items minus 15 lines for the preview, with a max of 80% screen height\n          height = math.floor(math.min(vim.o.lines * 0.8 - 16, #items + 4) + 0.5) + 16,\n          width = 0.5,\n          preview = not vim.tbl_isempty(vim.lsp.get_clients({ bufnr = 0, name = "vtsls" })) and {\n            layout = "vertical",\n            vertical = "down:15,border-top",\n            hidden = "hidden",\n          } or {\n            layout = "vertical",\n            vertical = "down:15,border-top",\n          },\n        },\n      } or {\n        winopts = {\n          width = 0.5,\n          -- height is number of items, with a max of 80% screen height\n          height = math.floor(math.min(vim.o.lines * 0.8, #items + 4) + 0.5),\n        },\n      })\n    end,\n    winopts = {\n      width = 0.8,\n      height = 0.8,\n      row = 0.5,\n      col = 0.5,\n      preview = {\n        scrollchars = { "\u2503", "" },\n      },\n    },\n    files = {\n      cwd_prompt = false,\n      actions = {\n        ["alt-i"] = { actions.toggle_ignore },\n        ["alt-h"] = { actions.toggle_hidden },\n      },\n    },\n    grep = {\n      actions = {\n        ["alt-i"] = { actions.toggle_ignore },\n        ["alt-h"] = { actions.toggle_hidden },\n      },\n    },\n    lsp = {\n      symbols = {\n        symbol_hl = function(s)\n          return "TroubleIcon" .. s\n        end,\n        symbol_fmt = function(s)\n          return s:lower() .. "\\t"\n        end,\n        child_prefix = false,\n      },\n      code_actions = {\n        previewer = vim.fn.executable("delta") == 1 and "codeaction_native" or nil,\n      },\n    },\n  }\nend\n'))),(0,a.kt)(o.Z,{value:"code",label:"Full Spec",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-lua"},'{\n  "ibhagwan/fzf-lua",\n  cmd = "FzfLua",\n  opts = function(_, opts)\n    local fzf = require("fzf-lua")\n    local config = fzf.config\n    local actions = fzf.actions\n\n    -- Quickfix\n    config.defaults.keymap.fzf["ctrl-q"] = "select-all+accept"\n    config.defaults.keymap.fzf["ctrl-u"] = "half-page-up"\n    config.defaults.keymap.fzf["ctrl-d"] = "half-page-down"\n    config.defaults.keymap.fzf["ctrl-x"] = "jump"\n    config.defaults.keymap.fzf["ctrl-f"] = "preview-page-down"\n    config.defaults.keymap.fzf["ctrl-b"] = "preview-page-up"\n    config.defaults.keymap.builtin["<c-f>"] = "preview-page-down"\n    config.defaults.keymap.builtin["<c-b>"] = "preview-page-up"\n\n    -- Trouble\n    if LazyVim.has("trouble.nvim") then\n      config.defaults.actions.files["ctrl-t"] = require("trouble.sources.fzf").actions.open\n    end\n\n    -- Toggle root dir / cwd\n    config.defaults.actions.files["ctrl-r"] = function(_, ctx)\n      local o = vim.deepcopy(ctx.__call_opts)\n      o.root = o.root == false\n      o.cwd = nil\n      o.buf = ctx.__CTX.bufnr\n      LazyVim.pick.open(ctx.__INFO.cmd, o)\n    end\n    config.defaults.actions.files["alt-c"] = config.defaults.actions.files["ctrl-r"]\n    config.set_action_helpstr(config.defaults.actions.files["ctrl-r"], "toggle-root-dir")\n\n    local img_previewer ---@type string[]?\n    for _, v in ipairs({\n      { cmd = "ueberzug", args = {} },\n      { cmd = "chafa", args = { "{file}", "--format=symbols" } },\n      { cmd = "viu", args = { "-b" } },\n    }) do\n      if vim.fn.executable(v.cmd) == 1 then\n        img_previewer = vim.list_extend({ v.cmd }, v.args)\n        break\n      end\n    end\n\n    return {\n      "default-title",\n      fzf_colors = true,\n      fzf_opts = {\n        ["--no-scrollbar"] = true,\n      },\n      defaults = {\n        -- formatter = "path.filename_first",\n        formatter = "path.dirname_first",\n      },\n      previewers = {\n        builtin = {\n          extensions = {\n            ["png"] = img_previewer,\n            ["jpg"] = img_previewer,\n            ["jpeg"] = img_previewer,\n            ["gif"] = img_previewer,\n            ["webp"] = img_previewer,\n          },\n          ueberzug_scaler = "fit_contain",\n        },\n      },\n      -- Custom LazyVim option to configure vim.ui.select\n      ui_select = function(fzf_opts, items)\n        return vim.tbl_deep_extend("force", fzf_opts, {\n          prompt = "\uf105 ",\n          winopts = {\n            title = " " .. vim.trim((fzf_opts.prompt or "Select"):gsub("%s*:%s*$", "")) .. " ",\n            title_pos = "center",\n          },\n        }, fzf_opts.kind == "codeaction" and {\n          winopts = {\n            layout = "vertical",\n            -- height is number of items minus 15 lines for the preview, with a max of 80% screen height\n            height = math.floor(math.min(vim.o.lines * 0.8 - 16, #items + 4) + 0.5) + 16,\n            width = 0.5,\n            preview = not vim.tbl_isempty(vim.lsp.get_clients({ bufnr = 0, name = "vtsls" })) and {\n              layout = "vertical",\n              vertical = "down:15,border-top",\n              hidden = "hidden",\n            } or {\n              layout = "vertical",\n              vertical = "down:15,border-top",\n            },\n          },\n        } or {\n          winopts = {\n            width = 0.5,\n            -- height is number of items, with a max of 80% screen height\n            height = math.floor(math.min(vim.o.lines * 0.8, #items + 4) + 0.5),\n          },\n        })\n      end,\n      winopts = {\n        width = 0.8,\n        height = 0.8,\n        row = 0.5,\n        col = 0.5,\n        preview = {\n          scrollchars = { "\u2503", "" },\n        },\n      },\n      files = {\n        cwd_prompt = false,\n        actions = {\n          ["alt-i"] = { actions.toggle_ignore },\n          ["alt-h"] = { actions.toggle_hidden },\n        },\n      },\n      grep = {\n        actions = {\n          ["alt-i"] = { actions.toggle_ignore },\n          ["alt-h"] = { actions.toggle_hidden },\n        },\n      },\n      lsp = {\n        symbols = {\n          symbol_hl = function(s)\n            return "TroubleIcon" .. s\n          end,\n          symbol_fmt = function(s)\n            return s:lower() .. "\\t"\n          end,\n          child_prefix = false,\n        },\n        code_actions = {\n          previewer = vim.fn.executable("delta") == 1 and "codeaction_native" or nil,\n        },\n      },\n    }\n  end,\n  config = function(_, opts)\n    if opts[1] == "default-title" then\n      -- use the same prompt for all pickers for profile `default-title` and\n      -- profiles that use `default-title` as base profile\n      local function fix(t)\n        t.prompt = t.prompt ~= nil and "\uf105 " or nil\n        for _, v in pairs(t) do\n          if type(v) == "table" then\n            fix(v)\n          end\n        end\n        return t\n      end\n      opts = vim.tbl_deep_extend("force", fix(require("fzf-lua.profiles.default-title")), opts)\n      opts[1] = nil\n    end\n    require("fzf-lua").setup(opts)\n  end,\n  init = function()\n    LazyVim.on_very_lazy(function()\n      vim.ui.select = function(...)\n        require("lazy").load({ plugins = { "fzf-lua" } })\n        local opts = LazyVim.opts("fzf-lua") or {}\n        require("fzf-lua").register_ui_select(opts.ui_select or nil)\n        return vim.ui.select(...)\n      end\n    end)\n  end,\n  keys = {\n    { "<c-j>", "<c-j>", ft = "fzf", mode = "t", nowait = true },\n    { "<c-k>", "<c-k>", ft = "fzf", mode = "t", nowait = true },\n    {\n      "<leader>,",\n      "<cmd>FzfLua buffers sort_mru=true sort_lastused=true<cr>",\n      desc = "Switch Buffer",\n    },\n    { "<leader>/", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" },\n    { "<leader>:", "<cmd>FzfLua command_history<cr>", desc = "Command History" },\n    { "<leader><space>", LazyVim.pick("files"), desc = "Find Files (Root Dir)" },\n    -- find\n    { "<leader>fb", "<cmd>FzfLua buffers sort_mru=true sort_lastused=true<cr>", desc = "Buffers" },\n    { "<leader>fB", "<cmd>FzfLua buffers<cr>", desc = "Buffers (all)" },\n    { "<leader>fc", LazyVim.pick.config_files(), desc = "Find Config File" },\n    { "<leader>ff", LazyVim.pick("files"), desc = "Find Files (Root Dir)" },\n    { "<leader>fF", LazyVim.pick("files", { root = false }), desc = "Find Files (cwd)" },\n    { "<leader>fg", "<cmd>FzfLua git_files<cr>", desc = "Find Files (git-files)" },\n    { "<leader>fr", "<cmd>FzfLua oldfiles<cr>", desc = "Recent" },\n    { "<leader>fR", LazyVim.pick("oldfiles", { cwd = vim.uv.cwd() }), desc = "Recent (cwd)" },\n    -- git\n    { "<leader>gc", "<cmd>FzfLua git_commits<CR>", desc = "Commits" },\n    { "<leader>gd", "<cmd>FzfLua git_diff<cr>", desc = "Git Diff (files)" },\n    { "<leader>gl", "<cmd>FzfLua git_commits<CR>", desc = "Commits" },\n    { "<leader>gs", "<cmd>FzfLua git_status<CR>", desc = "Status" },\n    { "<leader>gS", "<cmd>FzfLua git_stash<cr>", desc = "Git Stash" },\n    -- search\n    { \'<leader>s"\', "<cmd>FzfLua registers<cr>", desc = "Registers" },\n    { "<leader>s/", "<cmd>FzfLua search_history<cr>", desc = "Search History" },\n    { "<leader>sa", "<cmd>FzfLua autocmds<cr>", desc = "Auto Commands" },\n    { "<leader>sb", "<cmd>FzfLua lines<cr>", desc = "Buffer Lines" },\n    { "<leader>sc", "<cmd>FzfLua command_history<cr>", desc = "Command History" },\n    { "<leader>sC", "<cmd>FzfLua commands<cr>", desc = "Commands" },\n    { "<leader>sd", "<cmd>FzfLua diagnostics_workspace<cr>", desc = "Diagnostics" },\n    { "<leader>sD", "<cmd>FzfLua diagnostics_document<cr>", desc = "Buffer Diagnostics" },\n    { "<leader>sg", LazyVim.pick("live_grep"), desc = "Grep (Root Dir)" },\n    { "<leader>sG", LazyVim.pick("live_grep", { root = false }), desc = "Grep (cwd)" },\n    { "<leader>sh", "<cmd>FzfLua help_tags<cr>", desc = "Help Pages" },\n    { "<leader>sH", "<cmd>FzfLua highlights<cr>", desc = "Search Highlight Groups" },\n    { "<leader>sj", "<cmd>FzfLua jumps<cr>", desc = "Jumplist" },\n    { "<leader>sk", "<cmd>FzfLua keymaps<cr>", desc = "Key Maps" },\n    { "<leader>sl", "<cmd>FzfLua loclist<cr>", desc = "Location List" },\n    { "<leader>sM", "<cmd>FzfLua man_pages<cr>", desc = "Man Pages" },\n    { "<leader>sm", "<cmd>FzfLua marks<cr>", desc = "Jump to Mark" },\n    { "<leader>sR", "<cmd>FzfLua resume<cr>", desc = "Resume" },\n    { "<leader>sq", "<cmd>FzfLua quickfix<cr>", desc = "Quickfix List" },\n    { "<leader>sw", LazyVim.pick("grep_cword"), desc = "Word (Root Dir)" },\n    { "<leader>sW", LazyVim.pick("grep_cword", { root = false }), desc = "Word (cwd)" },\n    { "<leader>sw", LazyVim.pick("grep_visual"), mode = "x", desc = "Selection (Root Dir)" },\n    { "<leader>sW", LazyVim.pick("grep_visual", { root = false }), mode = "x", desc = "Selection (cwd)" },\n    { "<leader>uC", LazyVim.pick("colorschemes"), desc = "Colorscheme with Preview" },\n    {\n      "<leader>ss",\n      function()\n        require("fzf-lua").lsp_document_symbols({\n          regex_filter = symbols_filter,\n        })\n      end,\n      desc = "Goto Symbol",\n    },\n    {\n      "<leader>sS",\n      function()\n        require("fzf-lua").lsp_live_workspace_symbols({\n          regex_filter = symbols_filter,\n        })\n      end,\n      desc = "Goto Symbol (Workspace)",\n    },\n  },\n}\n')))),(0,a.kt)("h2",{id:"fzf-lua-1"},(0,a.kt)("a",{parentName:"h2",href:"https://github.com/ibhagwan/fzf-lua"},"fzf-lua")),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{value:"opts",label:"Options",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-lua"},"opts = nil\n"))),(0,a.kt)(o.Z,{value:"code",label:"Full Spec",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-lua"},'{ "fzf-lua" }\n')))),(0,a.kt)("h2",{id:"nvim-lspconfig"},(0,a.kt)("a",{parentName:"h2",href:"https://github.com/neovim/nvim-lspconfig"},"nvim-lspconfig")),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{value:"opts",label:"Options",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-lua"}
1,'opts = {\n  servers = {\n    -- stylua: ignore\n    ["*"] = {\n      keys = {\n        { "gd", "<cmd>FzfLua lsp_definitions     jump1=true ignore_current_line=true<cr>", desc = "Goto Definition", has = "definition" },\n        { "gr", "<cmd>FzfLua lsp_references      jump1=true ignore_current_line=true<cr>", desc = "References", nowait = true },\n        { "gI", "<cmd>FzfLua lsp_implementations jump1=true ignore_current_line=true<cr>", desc = "Goto Implementation" },\n        { "gy", "<cmd>FzfLua lsp_typedefs        jump1=true ignore_current_line=true<cr>", desc = "Goto T[y]pe Definition" },\n      }\n    },\n  },\n}\n'))),(0,a.kt)(o.Z,{value:"code",label:"Full Spec",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-lua"},'{\n  "neovim/nvim-lspconfig",\n  opts = {\n    servers = {\n      -- stylua: ignore\n      ["*"] = {\n        keys = {\n          { "gd", "<cmd>FzfLua lsp_definitions     jump1=true ignore_current_line=true<cr>", desc = "Goto Definition", has = "definition" },\n          { "gr", "<cmd>FzfLua lsp_references      jump1=true ignore_current_line=true<cr>", desc = "References", nowait = true },\n          { "gI", "<cmd>FzfLua lsp_implementations jump1=true ignore_current_line=true<cr>", desc = "Goto Implementation" },\n          { "gy", "<cmd>FzfLua lsp_typedefs        jump1=true ignore_current_line=true<cr>", desc = "Goto T[y]pe Definition" },\n        }\n      },\n    },\n  },\n}\n')))),(0,a.kt)("h2",{id:"todo-commentsnvim-optional"},(0,a.kt)("a",{parentName:"h2",href:"https://github.com/folke/todo-comments.nvim"},"todo-comments.nvim")," ",(0,a.kt)("em",{parentName:"h2"},"(optional)")),(0,a.kt)(i.Z,{mdxType:"Tabs"},(0,a.kt)(o.Z,{value:"opts",label:"Options",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-lua"},"opts = nil\n"))),(0,a.kt)(o.Z,{value:"code",label:"Full Spec",mdxType:"TabItem"},(0,a.kt)("pre",null,(0,a.kt)("code",{parentName:"pre",className:"language-lua"},'{\n  "folke/todo-comments.nvim",\n  optional = true,\n  -- stylua: ignore\n  keys = {\n    { "<leader>st", function() require("todo-comments.fzf").todo() end, desc = "Todo" },\n    { "<leader>sT", function () require("todo-comments.fzf").todo({ keywords = { "TODO", "FIX", "FIXME" } }) end, desc = "Todo/Fix/Fixme" },\n  },\n}\n')))))}m.isMDXComponent=!0}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.