From ae55a1cdde7064f63b9d44a0fc79205bc68fb69a Mon Sep 17 00:00:00 2001 From: inkch Date: Wed, 20 Aug 2025 15:02:45 +0900 Subject: [PATCH] nvim: auto undo-break --- dot_config/nvim/lua/core/keymaps.lua.tmpl | 2 ++ dot_config/nvim/lua/core/options.lua.tmpl | 15 +++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/dot_config/nvim/lua/core/keymaps.lua.tmpl b/dot_config/nvim/lua/core/keymaps.lua.tmpl index bc7565a..cdcd189 100644 --- a/dot_config/nvim/lua/core/keymaps.lua.tmpl +++ b/dot_config/nvim/lua/core/keymaps.lua.tmpl @@ -20,3 +20,5 @@ vim.keymap.set('n', '', 'zz') vim.keymap.set('n', '', 'zz') vim.keymap.set('n', '', 'zz') vim.keymap.set('n', '', 'zz') + +vim.keymap.set("i", "", "u") diff --git a/dot_config/nvim/lua/core/options.lua.tmpl b/dot_config/nvim/lua/core/options.lua.tmpl index 5a80fd5..0b51f53 100644 --- a/dot_config/nvim/lua/core/options.lua.tmpl +++ b/dot_config/nvim/lua/core/options.lua.tmpl @@ -72,3 +72,18 @@ vim.opt.foldmethod = "indent" vim.opt.foldenable = false vim.opt.foldlevel = 99 vim.g.markdown_folding = 1 -- enable markdown folding + + +-- auto undo break (insert mode) +local function map_undobreak(chars) + local term = vim.api.nvim_replace_termcodes("u", true, false, true) + for _, ch in ipairs(chars) do + vim.keymap.set("i", ch, function() return term .. ch end, + { expr = true, silent = true, desc = "undobreak before '" .. ch .. "'" }) + end +end + +map_undobreak({ + ".", ",", "!", "?", ";", ":", ")", "]", "}", ">", -- 英文系 + "。", "、", "!", "?", ";", ":", ")", "]", "」", "』", ">" -- 和文系 +})