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 | { |