aboutsummaryrefslogtreecommitdiffhomepage
path: root/vim/lua
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-07-08 22:49:59 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-07-08 22:49:59 +0800
commitd834d6da82ba20e32699380d335a65936bad16f9 (patch)
tree49ce9f0427801c7803ed6c41633ae94821b2cc97 /vim/lua
parenta86b98129c07ff6ac4e259d5e28499471f47e57c (diff)
Update
Diffstat (limited to 'vim/lua')
-rw-r--r--vim/lua/mappings.lua299
-rw-r--r--vim/lua/plugins/init.lua11
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"
3vim.keymap.set("n", "<leader>ch", "<cmd>NvCheatsheet<CR>", { desc = "toggle nvcheatsheet" })
4vim.keymap.set("n", "<leader>th", "<cmd>Telescope themes<CR>", { desc = "telescope nvchad themes" })
2 5
3-- add yours here 6-- General
4
5vim.keymap.set("i", "jk", "<ESC>") 7vim.keymap.set("i", "jk", "<ESC>")
6vim.keymap.set("n", "<leader>co", "<cmd>cd ~/.config/nvim<CR><cmd>pwd<CR>") 8vim.keymap.set("n", "cdconfig", "<cmd>cd ~/.config/nvim<CR><cmd>pwd<CR>")
7vim.cmd("command! W execute 'SudaWrite %'") 9vim.cmd("command! W execute 'SudaWrite %'")
8 10
9-- map({ "n", "i", "v" }, "<C-s>", "<cmd> w <cr>")
10
11vim.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" })
17vim.keymap.set("n", "<leader>ch", "<cmd>NvCheatsheet<CR>", { desc = "toggle nvcheatsheet" })
18
19-- global lsp mappings 11-- global lsp mappings
20vim.keymap.set("n", "<leader>ds", vim.diagnostic.setloclist, { desc = "lsp diagnostic loclist" }) 12vim.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
26vim.keymap.set("n", "<leader>f", "<cmd>Telescope oldfiles<CR>", { desc = "telescope find oldfiles" }) 18vim.keymap.set("n", "<leader>f", "<cmd>Telescope oldfiles<CR>", { desc = "telescope find oldfiles" })
27vim.keymap.set("n", "<leader>b", "<cmd>Telescope buffers<CR>", { desc = "telescope find buffers" }) 19vim.keymap.set("n", "<leader>b", "<cmd>Telescope buffers<CR>", { desc = "telescope find buffers" })
28vim.keymap.set( 20vim.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)
34vim.keymap.set("n", "<leader>sf", "<cmd>Telescope find_files<cr>", { desc = "telescope find files" }) 21vim.keymap.set("n", "<leader>sf", "<cmd>Telescope find_files<cr>", { desc = "telescope find files" })
35vim.keymap.set( 22vim.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)
41vim.keymap.set("n", "<leader>sg", "<cmd>Telescope live_grep<CR>", { desc = "telescope live grep" }) 28vim.keymap.set("n", "<leader>sg", "<cmd>Telescope live_grep<CR>", { desc = "telescope live grep" })
42
43vim.keymap.set("n", "<leader>gf", "<cmd>Telescope git_files<CR>", { desc = "telescope git files" }) 29vim.keymap.set("n", "<leader>gf", "<cmd>Telescope git_files<CR>", { desc = "telescope git files" })
44vim.keymap.set("n", "<leader>sH", "<cmd>Telescope help_tags<CR>", { desc = "telescope help page" }) 30vim.keymap.set("n", "<leader>sH", "<cmd>Telescope help_tags<CR>", { desc = "telescope help page" })
45vim.keymap.set("n", "<leader>sm", "<cmd>Telescope marks<CR>", { desc = "telescope marks" }) 31vim.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
49vim.keymap.set("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "telescope pick hidden term" }) 35vim.keymap.set("n", "<leader>pt", "<cmd>Telescope terms<CR>", { desc = "telescope pick hidden term" })
50 36
51vim.keymap.set("n", "<leader>ss", function() 37vim.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 })
100end, { desc = "[S]earch [S]nippets" }) 86end, { desc = "[S]earch [S]nippets" })
101 87
102vim.keymap.set("n", "<leader>sd", function() 88vim.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 })
119end, { desc = "Search Directory" }) 105end, { 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
129vim.keymap.set("n", "<leader><leader>h", function()
130 require("nvchad.term").new({ pos = "sp" })
131end, { desc = "terminal new horizontal term" })
132vim.keymap.set("n", "<leader>v", function()
133 require("nvchad.term").new({ pos = "vsp" })
134end, { desc = "terminal new vertical window" })
135-- toggleable
136vim.keymap.set({ "n", "t" }, "<A-v>", function() 108vim.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" })
138end, { desc = "terminal toggleable vertical term" }) 110end, { desc = "terminal toggleable vertical term" })
139vim.keymap.set("t", "<C-x>", "<C-\\><C-N>", { desc = "terminal escape terminal mode" }) 111vim.keymap.set("t", "<C-x>", "<C-\\><C-N>", { desc = "terminal escape terminal mode" })
140vim.keymap.set({ "t" }, "<A-e>", "<C-\\><C-N><C-W>|<C-W>_i", { desc = "terminal toggleable vertical term" }) 112vim.keymap.set({ "t" }, "<A-e>", "<C-\\><C-N><C-W>|<C-W>_i", { desc = "terminal toggleable vertical term" })
141vim.keymap.set({ "n", "t" }, "<A-t>", function() 113vim.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" })
143end, { desc = "terminal new horizontal term" }) 115end, { desc = "terminal new horizontal term" })
144vim.keymap.set({ "n", "t" }, "<A-i>", function() 116vim.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" })
146end, { desc = "terminal toggle floating term" }) 118end, { desc = "terminal toggle floating term" })
147vim.keymap.set("n", "<leader>th", "<cmd>Telescope themes<CR>", { desc = "telescope nvchad themes" }) 119
148 120
149-- whichkey 121-- whichkey
150vim.keymap.set("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "whichkey all keymaps" }) 122vim.keymap.set("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "whichkey all keymaps" })
151
152vim.keymap.set("n", "<leader>wk", function() 123vim.keymap.set("n", "<leader>wk", function()
153 vim.cmd("WhichKey " .. vim.fn.input("WhichKey: ")) 124 vim.cmd("WhichKey " .. vim.fn.input("WhichKey: "))
154end, { desc = "whichkey query lookup" }) 125end, { desc = "whichkey query lookup" })
155 126
127
156-- blankline 128-- blankline
157vim.keymap.set("n", "<leader>cc", function() 129vim.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
170end, { desc = "blankline jump to current context" }) 142end, { desc = "blankline jump to current context" })
171 143
172-- vim.cmd("let g:mkdp_browser = 'surf'") 144
173vim.cmd("let g:mkdp_browser = 'firefox'") 145-- [ Configure Hop ]
174vim.g.mkdp_preview_options = { 146vim.keymap.set("n", "<space>", ":HopWord<CR>")
175 mkit = { breaks = true }, 147vim.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')", 151vim.keymap.set("n", "gL", "<cmd>Telescope aerial<CR>")
180 }, 152vim.keymap.set("n", "gl", function()
181 } 153 require("aerial").toggle({ direction = "left" })
182 154end)
183 -- [ Configure Hop ] 155
184 vim.keymap.set("n", "<space>", ":HopWord<CR>") 156
185 vim.keymap.set("n", "<C-.>", ":HopChar1<CR>") 157--[ TrunZen ]
186 158vim.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>", {}) 162vim.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, 182end, { 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 {