{ pkgs, ... }: { plugins.sleuth.enable = true; plugins.nvim-surround.enable = true; plugins.flash.enable = true; plugins.blink-pairs = { enable = true; }; plugins.treesitter = { enable = true; highlight.enable = true; indent.enable = true; folding.enable = true; grammarPackages = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ angular bash css html javascript jsdoc json lua make markdown markdown_inline go gomod gotmpl python styled tsx typescript nix regex toml vim vimdoc xml yaml ]; }; plugins.substitute = { enable = true; luaConfig.post = /* lua */ '' local sub = require("substitute") vim.keymap.set("n", "s", sub.operator, { noremap = true }) vim.keymap.set("n", "ss", sub.line, { noremap = true }) vim.keymap.set("n", "S", sub.eol, { noremap = true }) vim.keymap.set("x", "s", sub.visual, { noremap = true }) ''; }; extraPlugins = [ (pkgs.vimUtils.buildVimPlugin { name = "edge.vim"; src = pkgs.fetchFromGitHub { "owner" = "Yohannfra"; "repo" = "edge.vim"; "rev" = "c5a165269d2643c12e62841776e8ba55e0f05e28"; "hash" = "sha256-nXXcg2ggYN75ZSOgB8isxCbN8YigldO05Ja0/WigjAs="; }; }) ]; autoCmd = [ { callback.__raw = "function() vim.highlight.on_yank() end"; event = [ "TextYankPost" ]; } { event = [ "FileType" ]; pattern = "qf"; callback.__raw = /* lua */ '' function() vim.keymap.set("n", "", "", { buffer = true }) end ''; } ]; }