diff options
| author | Hsieh Chin Fan <pham@topo.tw> | 2024-07-08 22:49:59 +0800 |
|---|---|---|
| committer | Hsieh Chin Fan <pham@topo.tw> | 2024-07-08 22:49:59 +0800 |
| commit | d834d6da82ba20e32699380d335a65936bad16f9 (patch) | |
| tree | 49ce9f0427801c7803ed6c41633ae94821b2cc97 /vim/lua | |
| parent | a86b98129c07ff6ac4e259d5e28499471f47e57c (diff) | |
Update
Diffstat (limited to 'vim/lua')
| -rw-r--r-- | vim/lua/mappings.lua | 299 | ||||
| -rw-r--r-- | vim/lua/plugins/init.lua | 11 |
2 files changed, 141 insertions, 169 deletions
diff --git a/vim/lua/mappings.lua b/vim/lua/mappings.lua index d9a34d2..159971c 100644 --- a/vim/lua/mappings.lua +++ b/vim/lua/mappings.lua | |||
| @@ -1,21 +1,13 @@ | |||
| 1 | -- For NvChad | ||
| 1 | -- require "nvchad.mappings" | 2 | -- require "nvchad.mappings" |
| 3 | vim.keymap.set("n", "<leader>ch", "<cmd>NvCheatsheet<CR>", { desc = "toggle nvcheatsheet" }) | ||
| 4 | vim.keymap.set("n", "<leader>th", "<cmd>Telescope themes<CR>", { desc = "telescope nvchad themes" }) | ||
| 2 | 5 | ||
| 3 | -- add yours here | 6 | -- General |
| 4 | |||
| 5 | vim.keymap.set("i", "jk", "<ESC>") | 7 | vim.keymap.set("i", "jk", "<ESC>") |
| 6 | vim.keymap.set("n", "<leader>co", "<cmd>cd ~/.config/nvim<CR><cmd>pwd<CR>") | 8 | vim.keymap.set("n", "cdconfig", "<cmd>cd ~/.config/nvim<CR><cmd>pwd<CR>") |
| 7 | vim.cmd("command! W execute 'SudaWrite %'") | 9 | vim.cmd("command! W execute 'SudaWrite %'") |
| 8 | 10 | ||
| 9 | -- map({ "n", "i", "v" }, "<C-s>", "<cmd> w <cr>") | ||
| 10 | |||
| 11 | vim.keymap.set("n", "<Esc>", "<cmd>noh<CR>", { desc = "general clear highlights" }) | ||
| 12 | |||
| 13 | -- map("n", "<C-c>", "<cmd>%y+<CR>", { desc = "file copy whole" }) | ||
| 14 | |||
| 15 | -- map("n", "<leader>n", "<cmd>set nu!<CR>", { desc = "toggle line number" }) | ||
| 16 | -- map("n", "<leader>rn", "<cmd>set rnu!<CR>", { desc = "toggle relative number" }) | ||
| 17 | vim.keymap.set("n", "<leader>ch", "<cmd>NvCheatsheet<CR>", { desc = "toggle nvcheatsheet" }) | ||
| 18 | |||
| 19 | -- global lsp mappings | 11 | -- global lsp mappings |
| 20 | vim.keymap.set("n", "<leader>ds", vim.diagnostic.setloclist, { desc = "lsp diagnostic loclist" }) | 12 | vim.keymap.set("n", "<leader>ds", vim.diagnostic.setloclist, { desc = "lsp diagnostic loclist" }) |
| 21 | 13 | ||
| @@ -25,21 +17,15 @@ vim.keymap.set("n", "<C-n>", "<cmd>NvimTreeToggle<CR>", { desc = "nvimtree toggl | |||
| 25 | -- telescope | 17 | -- telescope |
| 26 | vim.keymap.set("n", "<leader>f", "<cmd>Telescope oldfiles<CR>", { desc = "telescope find oldfiles" }) | 18 | vim.keymap.set("n", "<leader>f", "<cmd>Telescope oldfiles<CR>", { desc = "telescope find oldfiles" }) |
| 27 | vim.keymap.set("n", "<leader>b", "<cmd>Telescope buffers<CR>", { desc = "telescope find buffers" }) | 19 | vim.keymap.set("n", "<leader>b", "<cmd>Telescope buffers<CR>", { desc = "telescope find buffers" }) |
| 28 | vim.keymap.set( | 20 | vim.keymap.set("n", "//", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "telescope find in current buffer" }) |
| 29 | "n", | ||
| 30 | "<leader>/", | ||
| 31 | "<cmd>Telescope current_buffer_fuzzy_find<CR>", | ||
| 32 | { desc = "telescope find in current buffer" } | ||
| 33 | ) | ||
| 34 | vim.keymap.set("n", "<leader>sf", "<cmd>Telescope find_files<cr>", { desc = "telescope find files" }) | 21 | vim.keymap.set("n", "<leader>sf", "<cmd>Telescope find_files<cr>", { desc = "telescope find files" }) |
| 35 | vim.keymap.set( | 22 | vim.keymap.set( |
| 36 | "n", | 23 | "n", |
| 37 | "<leader>sF", | 24 | "<leader>sF", |
| 38 | "<cmd>Telescope find_files follow=true no_ignore=true hidden=true<CR>", | 25 | "<cmd>Telescope find_files follow=true no_ignore=true hidden=true<CR>", |
| 39 | { desc = "telescope find all files" } | 26 | { desc = "telescope find all files" } |
| 40 | ) | 27 | ) |
| 41 | vim.keymap.set("n", "<leader>sg", "<cmd>Telescope live_grep<CR>", { desc = "telescope live grep" }) | 28 | vim.keymap.set("n", "<leader>sg", "<cmd>Telescope live_grep<CR>", { desc = "telescope live grep" }) |
| 42 | |||
| 43 | vim.keymap.set("n", "<leader>gf", "<cmd>Telescope git_files<CR>", { desc = "telescope git files" }) | 29 | vim.keymap.set("n", "<leader>gf", "<cmd>Telescope git_files<CR>", { desc = "telescope git files" }) |
| 44 | vim.keymap.set("n", "<leader>sH", "<cmd>Telescope help_tags<CR>", { desc = "telescope help page" }) | 30 | vim.keymap.set("n", "<leader>sH", "<cmd>Telescope help_tags<CR>", { desc = "telescope help page" }) |
| 45 | vim.keymap.set("n", "<leader>sm", "<cmd>Telescope marks<CR>", { desc = "telescope marks" }) | 31 | vim.keymap.set("n", "<leader>sm", "<cmd>Telescope marks<CR>", { desc = "telescope marks" }) |
| @@ -49,171 +35,148 @@ vim.keymap.set("n", "<leader>sk", "<cmd>Telescope keymaps<CR>", { desc = "telesc | |||
| 49 | vim.keymap.set("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "telescope pick hidden term" }) | 35 | vim.keymap.set("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "telescope pick hidden term" }) |
| 50 | 36 | ||
| 51 | vim.keymap.set("n", "<leader>ss", function() | 37 | vim.keymap.set("n", "<leader>ss", function() |
| 52 | local current_filetype = vim.bo.filetype | 38 | local current_filetype = vim.bo.filetype |
| 53 | local cwd = os.getenv("HOME") .. "/snippets" | 39 | local cwd = os.getenv("HOME") .. "/snippets" |
| 54 | require("telescope.builtin").find_files({ | 40 | require("telescope.builtin").find_files({ |
| 55 | prompt_title = "Press <C-T> to edit a snippet", | 41 | prompt_title = "Press <C-T> to edit a snippet", |
| 56 | default_text = current_filetype .. "_", | 42 | default_text = current_filetype == "" and "" or current_filetype .. "_", |
| 57 | cwd = cwd, | 43 | cwd = cwd, |
| 58 | attach_mappings = function(prompt_bufnr, map) | 44 | attach_mappings = function(prompt_bufnr, map) |
| 59 | local get_prompt_or_entry = function() | 45 | local get_prompt_or_entry = function() |
| 60 | local file_list = require("telescope.actions.state").get_selected_entry() | 46 | local file_list = require("telescope.actions.state").get_selected_entry() |
| 61 | if file_list then | 47 | if file_list then |
| 62 | return file_list[1] | 48 | return file_list[1] |
| 63 | else | 49 | else |
| 64 | local current_picker = require("telescope.actions.state").get_current_picker(prompt_bufnr) | 50 | local current_picker = require("telescope.actions.state").get_current_picker(prompt_bufnr) |
| 65 | return current_picker:_get_prompt() | 51 | return current_picker:_get_prompt() |
| 66 | end | 52 | end |
| 67 | end | 53 | end |
| 68 | 54 | ||
| 69 | local edit_snippet = function() | 55 | local edit_snippet = function() |
| 70 | local file = get_prompt_or_entry() | 56 | local file = get_prompt_or_entry() |
| 71 | require("telescope.actions").close(prompt_bufnr) | 57 | require("telescope.actions").close(prompt_bufnr) |
| 72 | local prefix_filetype = string.match(file, "([^_]+)") | 58 | local prefix_filetype = string.match(file, "([^_]+)") |
| 73 | vim.cmd(":vs") | 59 | vim.cmd(":vs") |
| 74 | vim.cmd(":e " .. cwd .. "/" .. file) | 60 | vim.cmd(":e " .. cwd .. "/" .. file) |
| 75 | vim.bo.filetype = prefix_filetype | 61 | vim.bo.filetype = prefix_filetype |
| 76 | vim.bo.bufhidden = "wipe" | 62 | vim.bo.bufhidden = "wipe" |
| 77 | vim.cmd("set filetype?") | 63 | vim.cmd("set filetype?") |
| 78 | end | 64 | end |
| 79 | 65 | ||
| 80 | local insert_selected_snippet = function() | 66 | local insert_selected_snippet = function() |
| 81 | local file = get_prompt_or_entry() | 67 | local file = get_prompt_or_entry() |
| 82 | local path = cwd .. "/" .. file | 68 | local path = cwd .. "/" .. file |
| 83 | if vim.fn.filereadable(path) ~= 0 then | 69 | if vim.fn.filereadable(path) ~= 0 then |
| 84 | local snippet_content = vim.fn.readfile(path) | 70 | local snippet_content = vim.fn.readfile(path) |
| 85 | require("telescope.actions").close(prompt_bufnr) | 71 | require("telescope.actions").close(prompt_bufnr) |
| 86 | vim.fn.setreg('"', snippet_content) | 72 | vim.fn.setreg('"', snippet_content) |
| 87 | print("Snippet saved to register") | 73 | print("Snippet saved to register") |
| 88 | else | 74 | else |
| 89 | edit_snippet() | 75 | edit_snippet() |
| 90 | end | 76 | end |
| 91 | end | 77 | end |
| 92 | 78 | ||
| 93 | map("i", "<CR>", insert_selected_snippet) | 79 | map("i", "<CR>", insert_selected_snippet) |
| 94 | map("i", "<C-T>", edit_snippet) | 80 | map("i", "<C-T>", edit_snippet) |
| 95 | map("n", "<CR>", insert_selected_snippet) | 81 | map("n", "<CR>", insert_selected_snippet) |
| 96 | 82 | ||
| 97 | return true | 83 | return true |
| 98 | end, | 84 | end, |
| 99 | }) | 85 | }) |
| 100 | end, { desc = "[S]earch [S]nippets" }) | 86 | end, { desc = "[S]earch [S]nippets" }) |
| 101 | 87 | ||
| 102 | vim.keymap.set("n", "<leader>sd", function() | 88 | vim.keymap.set("n", "<leader>sd", function() |
| 103 | require("telescope.builtin").oldfiles({ | 89 | require("telescope.builtin").oldfiles({ |
| 104 | prompt_title = "CD to", | 90 | prompt_title = "CD to", |
| 105 | attach_mappings = function(prompt_bufnr, map) | 91 | attach_mappings = function(prompt_bufnr, map) |
| 106 | local cd_prompt = function() | 92 | local cd_prompt = function() |
| 107 | local file = require("telescope.actions.state").get_selected_entry()[1] | 93 | local file = require("telescope.actions.state").get_selected_entry()[1] |
| 108 | local path = string.match(file, "(.*[/\\])") | 94 | local path = string.match(file, "(.*[/\\])") |
| 109 | require("telescope.actions").close(prompt_bufnr) | 95 | require("telescope.actions").close(prompt_bufnr) |
| 110 | vim.api.nvim_feedkeys(":cd " .. path, "n", true) | 96 | vim.api.nvim_feedkeys(":cd " .. path, "n", true) |
| 111 | end | 97 | end |
| 112 | 98 | ||
| 113 | map("i", "<CR>", cd_prompt) | 99 | map("i", "<CR>", cd_prompt) |
| 114 | map("n", "<CR>", cd_prompt) | 100 | map("n", "<CR>", cd_prompt) |
| 115 | 101 | ||
| 116 | return true | 102 | return true |
| 117 | end, | 103 | end, |
| 118 | }) | 104 | }) |
| 119 | end, { desc = "Search Directory" }) | 105 | end, { desc = "Search Directory" }) |
| 120 | 106 | ||
| 121 | -- map("n", "<leader>ma", "<cmd>Telescope marks<CR>", { desc = "telescope find marks" }) | ||
| 122 | -- map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "telescope git commits" }) | ||
| 123 | -- map("n", "<leader>gt", "<cmd>Telescope git_status<CR>", { desc = "telescope git status" }) | ||
| 124 | |||
| 125 | -- terminal | ||
| 126 | -- map("t", "<C-x>", "<C-\\><C-N>", { desc = "terminal escape terminal mode" }) | ||
| 127 | |||
| 128 | -- new terminals | 107 | -- new terminals |
| 129 | vim.keymap.set("n", "<leader><leader>h", function() | ||
| 130 | require("nvchad.term").new({ pos = "sp" }) | ||
| 131 | end, { desc = "terminal new horizontal term" }) | ||
| 132 | vim.keymap.set("n", "<leader>v", function() | ||
| 133 | require("nvchad.term").new({ pos = "vsp" }) | ||
| 134 | end, { desc = "terminal new vertical window" }) | ||
| 135 | -- toggleable | ||
| 136 | vim.keymap.set({ "n", "t" }, "<A-v>", function() | 108 | vim.keymap.set({ "n", "t" }, "<A-v>", function() |
| 137 | require("nvchad.term").toggle({ pos = "vsp", id = "vtoggleTerm" }) | 109 | require("nvchad.term").toggle({ pos = "vsp", id = "vtoggleTerm" }) |
| 138 | end, { desc = "terminal toggleable vertical term" }) | 110 | end, { desc = "terminal toggleable vertical term" }) |
| 139 | vim.keymap.set("t", "<C-x>", "<C-\\><C-N>", { desc = "terminal escape terminal mode" }) | 111 | vim.keymap.set("t", "<C-x>", "<C-\\><C-N>", { desc = "terminal escape terminal mode" }) |
| 140 | vim.keymap.set({ "t" }, "<A-e>", "<C-\\><C-N><C-W>|<C-W>_i", { desc = "terminal toggleable vertical term" }) | 112 | vim.keymap.set({ "t" }, "<A-e>", "<C-\\><C-N><C-W>|<C-W>_i", { desc = "terminal toggleable vertical term" }) |
| 141 | vim.keymap.set({ "n", "t" }, "<A-t>", function() | 113 | vim.keymap.set({ "n", "t" }, "<A-t>", function() |
| 142 | require("nvchad.term").toggle({ pos = "sp", id = "htoggleTerm" }) | 114 | require("nvchad.term").toggle({ pos = "sp", id = "htoggleTerm" }) |
| 143 | end, { desc = "terminal new horizontal term" }) | 115 | end, { desc = "terminal new horizontal term" }) |
| 144 | vim.keymap.set({ "n", "t" }, "<A-i>", function() | 116 | vim.keymap.set({ "n", "t" }, "<A-i>", function() |
| 145 | require("nvchad.term").toggle({ pos = "float", id = "floatTerm" }) | 117 | require("nvchad.term").toggle({ pos = "float", id = "floatTerm" }) |
| 146 | end, { desc = "terminal toggle floating term" }) | 118 | end, { desc = "terminal toggle floating term" }) |
| 147 | vim.keymap.set("n", "<leader>th", "<cmd>Telescope themes<CR>", { desc = "telescope nvchad themes" }) | 119 | |
| 148 | 120 | ||
| 149 | -- whichkey | 121 | -- whichkey |
| 150 | vim.keymap.set("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "whichkey all keymaps" }) | 122 | vim.keymap.set("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "whichkey all keymaps" }) |
| 151 | |||
| 152 | vim.keymap.set("n", "<leader>wk", function() | 123 | vim.keymap.set("n", "<leader>wk", function() |
| 153 | vim.cmd("WhichKey " .. vim.fn.input("WhichKey: ")) | 124 | vim.cmd("WhichKey " .. vim.fn.input("WhichKey: ")) |
| 154 | end, { desc = "whichkey query lookup" }) | 125 | end, { desc = "whichkey query lookup" }) |
| 155 | 126 | ||
| 127 | |||
| 156 | -- blankline | 128 | -- blankline |
| 157 | vim.keymap.set("n", "<leader>cc", function() | 129 | vim.keymap.set("n", "<leader>cc", function() |
| 158 | local config = { scope = {} } | 130 | local config = { scope = {} } |
| 159 | config.scope.exclude = { language = {}, node_type = {} } | 131 | config.scope.exclude = { language = {}, node_type = {} } |
| 160 | config.scope.include = { node_type = {} } | 132 | config.scope.include = { node_type = {} } |
| 161 | local node = require("ibl.scope").get(vim.api.nvim_get_current_buf(), config) | 133 | local node = require("ibl.scope").get(vim.api.nvim_get_current_buf(), config) |
| 162 | 134 | ||
| 163 | if node then | 135 | if node then |
| 164 | local start_row, _, end_row, _ = node:range() | 136 | local start_row, _, end_row, _ = node:range() |
| 165 | if start_row ~= end_row then | 137 | if start_row ~= end_row then |
| 166 | vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start_row + 1, 0 }) | 138 | vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start_row + 1, 0 }) |
| 167 | vim.api.nvim_feedkeys("_", "n", true) | 139 | vim.api.nvim_feedkeys("_", "n", true) |
| 168 | end | 140 | end |
| 169 | end | 141 | end |
| 170 | end, { desc = "blankline jump to current context" }) | 142 | end, { desc = "blankline jump to current context" }) |
| 171 | 143 | ||
| 172 | -- vim.cmd("let g:mkdp_browser = 'surf'") | 144 | |
| 173 | vim.cmd("let g:mkdp_browser = 'firefox'") | 145 | -- [ Configure Hop ] |
| 174 | vim.g.mkdp_preview_options = { | 146 | vim.keymap.set("n", "<space>", ":HopWord<CR>") |
| 175 | mkit = { breaks = true }, | 147 | vim.keymap.set("n", "<C-.>", ":HopChar1<CR>") |
| 176 | toc = { | 148 | |
| 177 | containerClass = "toc", | 149 | |
| 178 | format = "function format(x, htmlencode) { return `<span>${htmlencode(x)}</span>`; }", | 150 | -- [ Aerial ]"" "<cmd>AerialNext<CR>", {}) |
| 179 | callback = "console.log('foo')", | 151 | vim.keymap.set("n", "gL", "<cmd>Telescope aerial<CR>") |
| 180 | }, | 152 | vim.keymap.set("n", "gl", function() |
| 181 | } | 153 | require("aerial").toggle({ direction = "left" }) |
| 182 | 154 | end) | |
| 183 | -- [ Configure Hop ] | 155 | |
| 184 | vim.keymap.set("n", "<space>", ":HopWord<CR>") | 156 | |
| 185 | vim.keymap.set("n", "<C-.>", ":HopChar1<CR>") | 157 | --[ TrunZen ] |
| 186 | 158 | vim.keymap.set("n", "<leader>z", ":TZAtaraxis<CR>") | |
| 187 | -- [ Configure vim-surround ] | 159 | |
| 188 | vim.cmd("vmap s S") | 160 | |
| 189 | 161 | -- Use floating window for translation | |
| 190 | -- [ Aerial ]"" "<cmd>AerialNext<CR>", {}) | 162 | vim.keymap.set("v", "<leader><leader>tz", function() |
| 191 | vim.keymap.set("n", "gL", "<cmd>Telescope aerial<CR>") | 163 | vim.cmd('norm o^zt"ty') |
| 192 | vim.keymap.set("n", "gl", function() | 164 | local translated_text = vim.fn.system("trans -t zh-TW -b", vim.fn.getreg("t")) |
| 193 | require("aerial").toggle({ direction = "left" }) | 165 | local lines = vim.split(translated_text, "\n") |
| 194 | end) | 166 | table.remove(lines) |
| 195 | 167 | ||
| 196 | --[ TrunZen ] | 168 | local new_buf = vim.api.nvim_create_buf(false, true) |
| 197 | vim.keymap.set("n", "<leader>z", ":TZAtaraxis<CR>") | 169 | vim.api.nvim_buf_set_lines(new_buf, 0, -1, true, lines) |
| 198 | 170 | ||
| 199 | vim.keymap.set("v", "<leader><leader>tz", function() | 171 | vim.api.nvim_open_win(new_buf, true, { |
| 200 | vim.cmd('norm o^zt"ty') | 172 | relative = "cursor", |
| 201 | local translated_text = vim.fn.system("trans -t zh-TW -b", vim.fn.getreg("t")) | 173 | width = 80, |
| 202 | local lines = vim.split(translated_text, "\n") | 174 | height = #lines, |
| 203 | table.remove(lines) | 175 | row = #lines, |
| 204 | 176 | col = 0, | |
| 205 | local new_buf = vim.api.nvim_create_buf(false, true) | 177 | }) |
| 206 | vim.api.nvim_buf_set_lines(new_buf, 0, -1, true, lines) | 178 | |
| 207 | 179 | vim.cmd("setl nocul nonu nornu") | |
| 208 | vim.api.nvim_open_win(new_buf, true, { | 180 | vim.cmd("hi ActiveWindow guibg=#2a5a6a guifg=White | setl winhighlight=Normal:ActiveWindow") |
| 209 | relative = "cursor", | 181 | vim.cmd(":silent! %s/\\%x1b\\[[0-9;]*m//g") |
| 210 | width = 80, | 182 | end, { desc = "Description" }) |
| 211 | height = #lines, | ||
| 212 | row = #lines, | ||
| 213 | col = 0, | ||
| 214 | }) | ||
| 215 | |||
| 216 | vim.cmd("setl nocul nonu nornu") | ||
| 217 | vim.cmd("hi ActiveWindow guibg=#2a5a6a guifg=White | setl winhighlight=Normal:ActiveWindow") | ||
| 218 | vim.cmd(':silent %s/\\%x1b\\[[0-9;]*m//g') | ||
| 219 | end, { desc = "Description" }) | ||
diff --git a/vim/lua/plugins/init.lua b/vim/lua/plugins/init.lua index 7cff057..373f4cc 100644 --- a/vim/lua/plugins/init.lua +++ b/vim/lua/plugins/init.lua | |||
| @@ -191,8 +191,14 @@ return { | |||
| 191 | end, | 191 | end, |
| 192 | init = function() | 192 | init = function() |
| 193 | vim.g.mkdp_preview_options = { | 193 | vim.g.mkdp_preview_options = { |
| 194 | mkit = {}, | 194 | mkit = { breaks = true }, |
| 195 | toc = { | ||
| 196 | containerClass = "toc", | ||
| 197 | format = "function format(x, htmlencode) { return `<span>${htmlencode(x)}</span>`; }", | ||
| 198 | callback = "console.log('foo')", | ||
| 199 | }, | ||
| 195 | } | 200 | } |
| 201 | vim.cmd("let g:mkdp_browser = 'firefox'") | ||
| 196 | end, | 202 | end, |
| 197 | }, | 203 | }, |
| 198 | 204 | ||
| @@ -283,6 +289,9 @@ return { | |||
| 283 | { | 289 | { |
| 284 | "tpope/vim-surround", | 290 | "tpope/vim-surround", |
| 285 | lazy = false, | 291 | lazy = false, |
| 292 | config = function() | ||
| 293 | vim.cmd("vmap s S") | ||
| 294 | end, | ||
| 286 | }, | 295 | }, |
| 287 | 296 | ||
| 288 | { | 297 | { |