---@type LazySpec[] local spec = { { "kana/vim-textobj-user", lazy = true, }, { "kana/vim-operator-user", lazy = true, }, { "coachshea/vim-textobj-markdown", init = function() vim.g.textobj_markdown_no_default_key_mappings = true end, config = function() local group = vim.api.nvim_create_augroup("textobj_markdown", { clear = true }) vim.api.nvim_create_autocmd("FileType", { group = group, pattern = "markdown", callback = function() vim.keymap.set("o", "ic", "(textobj-markdown-chunk-i)", { remap = true, desc = "a textobj in the markdown block" }) vim.keymap.set("x", "ic", "(textobj-markdown-chunk-a)", { remap = true, desc = "a textobj in the markdown block" }) end, }) end, }, { "arthurxavierx/vim-caser", init = function() vim.g.caser_no_mappings = true end, config = function() -- CaserMixedCase vim.keymap.set("n", "cp", "CaserMixedCase", { desc = "PascalCase" }) -- CaserVMixedCase vim.keymap.set("x", "cp", "CaserVMixedCase", { desc = "PascalCase" }) -- CaserCamelCase vim.keymap.set("n", "cc", "CaserCamelCase", { desc = "camelCase" }) -- CaserVCamelCase vim.keymap.set("x", "cc", "CaserVCamelCase", { desc = "camelCase" }) -- CaserSnakeCase vim.keymap.set("n", "c_", "CaserSnakeCase", { desc = "snake_case" }) -- CaserVSnakeCase vim.keymap.set("x", "c_", "CaserVSnakeCase", { desc = "snake_case" }) -- CaserUpperCase vim.keymap.set("n", "cu", "CaserUpperCase", { desc = "UPPER_CASE" }) -- CaserVUpperCase vim.keymap.set("x", "cu", "CaserVUpperCase", { desc = "UPPER_CASE" }) -- CaserTitleCase vim.keymap.set("n", "ct", "CaserTitleCase", { desc = "Title Case" }) -- CaserVTitleCase vim.keymap.set("x", "ct", "CaserVTitleCase", { desc = "Title Case" }) -- CaserSentenceCase vim.keymap.set("n", "cs", "CaserSentenceCase", { desc = "Sentence case" }) -- CaserVSentenceCase vim.keymap.set("x", "cs", "CaserVSentenceCase", { desc = "Sentence case" }) -- CaserSpaceCase vim.keymap.set("n", "c", "CaserSpaceCase", { desc = "space case" }) -- CaserVSpaceCase vim.keymap.set("x", "c", "CaserVSpaceCase", { desc = "space case" }) -- CaserKebabCase vim.keymap.set("n", "ck", "CaserKebabCase", { desc = "kebab-case" }) vim.keymap.set("n", "c-", "CaserKebabCase", { desc = "kebab-case" }) -- CaserVKebabCase vim.keymap.set("x", "ck", "CaserVKebabCase", { desc = "kebab-case" }) vim.keymap.set("x", "c-", "CaserVKebabCase", { desc = "kebab-case" }) -- CaserTitleKebabCase vim.keymap.set("n", "ctk", "CaserTitleKebabCase", { desc = "Title-Kebab-Case" }) -- CaserVTitleKebabCase vim.keymap.set("x", "ctk", "CaserVTitleKebabCase", { desc = "Title-Kebab-Case" }) -- CaserDotCase vim.keymap.set("n", "cd", "CaserDotCase", { desc = "dot.case" }) vim.keymap.set("n", "c.", "CaserDotCase", { desc = "dot.case" }) -- CaserVDotCase vim.keymap.set("x", "cd", "CaserVDotCase", { desc = "dot.case" }) vim.keymap.set("n", "c.", "CaserDotCase", { desc = "dot.case" }) end, dependencies = { "vim-textobj-user" }, }, { "kana/vim-textobj-line", dependencies = { "vim-textobj-user" }, }, { "inside/vim-textobj-jsxattr", dependencies = { "vim-textobj-user" }, }, { "kana/vim-textobj-entire", dependencies = { "vim-textobj-user" }, }, { "kana/vim-operator-replace", keys = { { "_", "(operator-replace)", mode = { "" }, desc = "replace target with the register" }, }, dependencies = { "vim-operator-user" }, }, { "osyo-manga/vim-operator-jump_side", dependencies = { "vim-operator-user" }, keys = { { "jop", "(operator-jump-head)", desc = "textobjの先頭に移動" }, { "jon", "(operator-jump-tail)", desc = "textobjの末尾に移動" }, }, }, { "machakann/vim-sandwich", config = function() local recipes = vim.fn.deepcopy(vim.g["operator#sandwich#default_recipes"]) or {} table.insert(recipes, { buns = { "(", ")" }, kind = { "add" }, action = { "add" }, cursor = "head", command = { "startinsert" }, input = { vim.keycode("") }, }) table.insert(recipes, { buns = { "<", '">"' }, kind = { "add" }, cursor = "head", command = { "startinsert" }, input = { "g" }, }) table.insert(recipes, { external = { "i<", vim.keycode([[(textobj-functioncall-generics-a)]]) }, noremap = 0, kind = { "delete", "replace", "query" }, input = { "g" }, }) vim.g["operator#sandwich#recipes"] = recipes vim.g["sandwich#magicchar#f#patterns"] = { { header = [[\<\%(\h\k*\.\)*\h\k*]], bra = "(", ket = ")", footer = "", }, } vim.keymap.set({ "x", "n" }, "s", "", { remap = false, desc = "sandwich operations" }) vim.keymap.set("n", "sfd", "sdf", { remap = true }) vim.keymap.set("n", "sfa", "(operator-sandwich-add-query1st)", { desc = "wrap target as argument" }) vim.keymap.set("x", "sfa", "(operator-sandwich-add)", { desc = "wrap target as argument" }) vim.keymap.set("n", "sc", "(operator-sandwich-replace)(operator-sandwich-release-count)(textobj-sandwich-query-a)", { silent = true, desc = "replace sandwich" }) vim.keymap.set("n", "scb", "(operator-sandwich-replace)(operator-sandwich-release-count)(textobj-sandwich-auto-a)", { silent = true, desc = "replace sandwich for the typical brackets" }) end, dependencies = { "vim-textobj-user", "vim-textobj-functioncall" }, }, { "machakann/vim-textobj-functioncall", config = function() vim.g.textobj_functioncall_generics_patterns = { { header = [[\<\%(\h\k*\.\)*\h\k*]], bra = "<", ket = ">", footer = "", }, } -- Genericsのカッコ(<>)絡み vim.keymap.set("o", "(textobj-functioncall-generics-i)", "call textobj#functioncall#ip('o', g:textobj_functioncall_generics_patterns)", { remap = false }) vim.keymap.set("x", "(textobj-functioncall-generics-i)", "call textobj#functioncall#ip('x', g:textobj_functioncall_generics_patterns)", { remap = false }) vim.keymap.set("o", "(textobj-functioncall-generics-a)", "call textobj#functioncall#i('o', g:textobj_functioncall_generics_patterns)", { remap = false }) vim.keymap.set("x", "(textobj-functioncall-generics-a)", "call textobj#functioncall#i('x', g:textobj_functioncall_generics_patterns)", { remap = false }) vim.keymap.set("o", "ig", "(textobj-functioncall-generics-i)", {}) vim.keymap.set("x", "ig", "(textobj-functioncall-generics-i)", {}) vim.keymap.set("o", "ag", "(textobj-functioncall-generics-a)", {}) vim.keymap.set("x", "ag", "(textobj-functioncall-generics-a)", {}) -- Functionの呼び出し絡み vim.keymap.set({ "o", "x" }, "iF", "(textobj-functioncall-innerparen-i)", { silent = true, remap = false, desc = "a textobj in the function calling" }) vim.keymap.set({ "o", "x" }, "aF", "(textobj-functioncall-a)", { silent = true, remap = false, desc = "a textobj around the function calling" }) end, dependencies = { "vim-textobj-user" }, }, { "machakann/vim-swap", keys = { { "gs", "(swap-interactive)", mode = { "n", "x" } }, { "g<", "(swap-prev)", mode = { "n", "x" } }, { "g>", "(swap-next)", mode = { "n", "x" } }, { "i,", "(swap-textobject-i)", mode = { "o", "x" }, desc = "a testobj in the parameter" }, { "a,", "(swap-textobject-a)", mode = { "o", "x" }, desc = "a testobj around the parameter" }, }, }, } return spec