From 2a1645ae9593114514a7f28fa6d9109d1820375d Mon Sep 17 00:00:00 2001 From: Hsieh Chin Fan Date: Mon, 24 Jun 2024 16:34:51 +0800 Subject: Update --- vim/nvim/lua/mappings.lua | 170 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 vim/nvim/lua/mappings.lua (limited to 'vim/nvim/lua/mappings.lua') diff --git a/vim/nvim/lua/mappings.lua b/vim/nvim/lua/mappings.lua new file mode 100644 index 0000000..f6ef8c4 --- /dev/null +++ b/vim/nvim/lua/mappings.lua @@ -0,0 +1,170 @@ +-- require "nvchad.mappings" + +-- add yours here + +local map = vim.keymap.set + +map("i", "jk", "") +vim.cmd("command! W execute 'SudaWrite %'") + +-- map({ "n", "i", "v" }, "", " w ") + +map("n", "", "noh", { desc = "general clear highlights" }) + +-- map("n", "", "%y+", { desc = "file copy whole" }) + +-- map("n", "n", "set nu!", { desc = "toggle line number" }) +-- map("n", "rn", "set rnu!", { desc = "toggle relative number" }) +map("n", "ch", "NvCheatsheet", { desc = "toggle nvcheatsheet" }) + +map("n", "F", function() + require("conform").format { lsp_fallback = true } +end, { desc = "format files" }) + +-- global lsp mappings +map("n", "ds", vim.diagnostic.setloclist, { desc = "lsp diagnostic loclist" }) + +-- tabufline +map("n", "", function() + require("nvchad.tabufline").next() +end, { desc = "buffer goto next" }) + +map("n", "", function() + require("nvchad.tabufline").prev() +end, { desc = "buffer goto prev" }) + +map("n", "x", function() + require("nvchad.tabufline").close_buffer() +end, { desc = "buffer close" }) + +-- Comment +map("n", "/", "gcc", { desc = "comment toggle", remap = true }) +map("v", "/", "gc", { desc = "comment toggle", remap = true }) + +-- nvimtree +map("n", "", "NvimTreeToggle", { desc = "nvimtree toggle window" }) +map("n", "nf", "NvimTreeFocus", { desc = "nvimtree focus window" }) + +-- telescope +map("n", "f", "Telescope oldfiles", { desc = "telescope find oldfiles" }) +map("n", "b", "Telescope buffers", { desc = "telescope find buffers" }) +map("n", "/", "Telescope current_buffer_fuzzy_find", { desc = "telescope find in current buffer" }) +map("n", "sf", "Telescope find_files", { desc = "telescope find files" }) +map("n", "sF", "Telescope find_files follow=true no_ignore=true hidden=true", + { desc = "telescope find all files" }) +map("n", "sg", "Telescope live_grep", { desc = "telescope live grep" }) + +map("n", "gf", "Telescope git_files", { desc = "telescope git files" }) +map("n", "sH", "Telescope help_tags", { desc = "telescope help page" }) +map("n", "tt", ":Telescope ", { desc = "telescope help page" }) +map('n', 'sk', "Telescope keymaps", { desc = 'telescope keymaps' }) +map("n", "pt", "Telescope terms", { desc = "telescope pick hidden term" }) + +vim.keymap.set('n', 'ss', function() + local current_filetype = vim.bo.filetype + local cwd = os.getenv("HOME") .. '/snippets/' .. current_filetype + require('telescope.builtin').find_files { + prompt_title = 'Select a snippet for ' .. current_filetype, + cwd = cwd, + attach_mappings = function(prompt_bufnr, map) + local insert_selected_snippet = function() + local file = require('telescope.actions.state').get_selected_entry()[1] + local snippet_content = vim.fn.readfile(cwd .. "/" .. file) + require('telescope.actions').close(prompt_bufnr) + vim.api.nvim_put(snippet_content, '', false, true) + end + + map('i', '', insert_selected_snippet) + map('n', '', insert_selected_snippet) + + return true + end, + } +end, { desc = '[S]earch [S]nippets' }) + +vim.keymap.set('n', 'sn', function() + vim.ui.input({ prompt = 'Snippet Name: ' }, function(snippet_path) + local current_filetype + local snippet + if string.find(snippet_path, "/") then + current_filetype = string.match(snippet_path, "^(.-)/") + snippet = string.match(snippet_path, "/(.-)$") + else + current_filetype = vim.bo.filetype + snippet = snippet_path + end + local dir = os.getenv("HOME") .. '/snippets/' .. current_filetype + local path = dir .. '/' .. snippet + vim.cmd("!mkdir -p" .. dir) + vim.cmd("e " .. path) + vim.cmd("set filetype=" .. current_filetype) + vim.cmd("set filetype?") + end) +end, { desc = "Create a new snippet" }) + + +-- map("n", "ma", "Telescope marks", { desc = "telescope find marks" }) +-- map("n", "cm", "Telescope git_commits", { desc = "telescope git commits" }) +-- map("n", "gt", "Telescope git_status", { desc = "telescope git status" }) +-- map("n", "th", "Telescope themes", { desc = "telescope nvchad themes" }) + +-- terminal +-- map("t", "", "", { desc = "terminal escape terminal mode" }) + +-- new terminals +map("n", "h", function() require("nvchad.term").new { pos = "sp" } end, + { desc = "terminal new horizontal term" }) +map("n", "v", function() require("nvchad.term").new { pos = "vsp" } end, + { desc = "terminal new vertical window" }) +-- toggleable +map({ "n", "t" }, "", function() require("nvchad.term").toggle { pos = "vsp", id = "vtoggleTerm" } end, + { desc = "terminal toggleable vertical term" }) +map({ "n", "t" }, "", function() require("nvchad.term").toggle { pos = "sp", id = "htoggleTerm" } end, + { desc = "terminal new horizontal term" }) +map({ "n", "t" }, "", function() require("nvchad.term").toggle { pos = "float", id = "floatTerm" } end, + { desc = "terminal toggle floating term" }) + +-- whichkey +map("n", "wK", "WhichKey ", { desc = "whichkey all keymaps" }) + +map("n", "wk", function() + vim.cmd("WhichKey " .. vim.fn.input "WhichKey: ") +end, { desc = "whichkey query lookup" }) + +-- blankline +map("n", "cc", function() + local config = { scope = {} } + config.scope.exclude = { language = {}, node_type = {} } + config.scope.include = { node_type = {} } + local node = require("ibl.scope").get(vim.api.nvim_get_current_buf(), config) + + if node then + local start_row, _, end_row, _ = node:range() + if start_row ~= end_row then + vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start_row + 1, 0 }) + vim.api.nvim_feedkeys("_", "n", true) + end + end +end, { desc = "blankline jump to current context" }) + +-- [[ Configure Obsidian.nvim ]] +map('n', "oo", ':Obsidian') +map('n', "ot", ':ObsidianTags') +map('n', "os", ':ObsidianSearch') +map('n', "oq", ':ObsidianQuickSwitch') +map('v', "on", ':ObsidianLinkNew') + +-- vim.cmd("let g:mkdp_browser = 'surf'") +vim.cmd("let g:mkdp_browser = 'firefox'") +vim.g.mkdp_preview_options = { + mkit = { breaks = true }, + toc = { + containerClass = "toc", + format = 'function format(x, htmlencode) { return `${htmlencode(x)}`; }', + callback = "console.log('foo')", + } +} + +-- [ Configure Hop ] +vim.keymap.set('n', "", ':HopWord') +vim.keymap.set('n', '', ':HopChar1') -- cgit v1.2.3-70-g09d2