aboutsummaryrefslogtreecommitdiffhomepage
path: root/vim
diff options
context:
space:
mode:
authorHsieh Chin Fan <pham@topo.tw>2024-07-13 11:16:04 +0800
committerHsieh Chin Fan <pham@topo.tw>2024-07-13 11:16:04 +0800
commit3309121d6cca1fad74a7b177bfaceaa1ca919eab (patch)
treeb4d1a9d09051b741da37f7a4bc2a8ea4797cb62e /vim
parente971b4711d06710ec59e681053f5973b911af85b (diff)
Update
Diffstat (limited to 'vim')
-rw-r--r--vim/init/keymaps.vim13
-rw-r--r--vim/lua/mappings.lua211
2 files changed, 113 insertions, 111 deletions
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim
index 438f925..d61e6a9 100644
--- a/vim/init/keymaps.vim
+++ b/vim/init/keymaps.vim
@@ -13,14 +13,14 @@ imap <C-c> <Esc>l
13" Search for selected test 13" Search for selected test
14vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR> 14vnoremap * y/\V<C-R>=escape(@",'/\')<CR><CR>
15 15
16" Disable highlight when <leader><CR> is pressed
17map <silent> <leader><CR> :noh<CR>
18
19" Set wrap 16" Set wrap
20nnoremap <leader>W :set wrap!<CR> 17nnoremap <leader>W :set wrap!<CR>
21 18
22" Fast saving 19" Fast saving
23nmap <leader>w :w!<CR> 20function! s:WriteOrEnterFileName()
21 if !empty(expand('%')) | w! | else | call feedkeys(":w ") | endif
22endfunction
23nmap <leader>w :call <SID>WriteOrEnterFileName()<CR>
24 24
25" :W sudo saves the file 25" :W sudo saves the file
26" (useful for handling the permission-denied error) 26" (useful for handling the permission-denied error)
@@ -268,7 +268,7 @@ endtry
268if len(windows) == 1 && len(bufs) == 1 268if len(windows) == 1 && len(bufs) == 1
269 call QuitWithCheck() 269 call QuitWithCheck()
270elseif &diff 270elseif &diff
271 call CloseBuffersForDiff() 271 silent call CloseBuffersForDiff()
272elseif len(windows) >1 272elseif len(windows) >1
273 quit 273 quit
274else 274else
@@ -429,6 +429,9 @@ endfunc
429" }}} 429" }}}
430" HIGHLIGHT ----------------{{{ 430" HIGHLIGHT ----------------{{{
431 431
432" Disable highlight when <leader><CR> is pressed
433map <silent> <leader><CR> :noh<CR>
434
432function! HiFile() 435function! HiFile()
433 let i = 1 436 let i = 1
434 while i <= line("$") 437 while i <= line("$")
diff --git a/vim/lua/mappings.lua b/vim/lua/mappings.lua
index 07107e5..5eea577 100644
--- a/vim/lua/mappings.lua
+++ b/vim/lua/mappings.lua
@@ -20,10 +20,10 @@ vim.keymap.set("n", "<leader>b", "<cmd>Telescope buffers<CR>", { desc = "telesco
20vim.keymap.set("n", "//", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "telescope find in current buffer" }) 20vim.keymap.set("n", "//", "<cmd>Telescope current_buffer_fuzzy_find<CR>", { desc = "telescope find in current buffer" })
21vim.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" })
22vim.keymap.set( 22vim.keymap.set(
23 "n", 23 "n",
24 "<leader>sF", 24 "<leader>sF",
25 "<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>",
26 { desc = "telescope find all files" } 26 { desc = "telescope find all files" }
27) 27)
28vim.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" })
29vim.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" })
@@ -35,110 +35,109 @@ vim.keymap.set("n", "<leader>sk", "<cmd>Telescope keymaps<CR>", { desc = "telesc
35vim.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" })
36 36
37vim.keymap.set("n", "<leader>ss", function() 37vim.keymap.set("n", "<leader>ss", function()
38 local current_filetype = vim.bo.filetype 38 local current_filetype = vim.bo.filetype
39 local cwd = os.getenv("HOME") .. "/snippets" 39 local cwd = os.getenv("HOME") .. "/snippets"
40 require("telescope.builtin").find_files({ 40 require("telescope.builtin").find_files({
41 prompt_title = "Press <C-T> to edit a snippet", 41 prompt_title = "Press <C-T> to edit a snippet",
42 default_text = current_filetype == "" and "" or current_filetype .. "_", 42 default_text = current_filetype == "" and "" or current_filetype .. "_",
43 cwd = cwd, 43 cwd = cwd,
44 attach_mappings = function(prompt_bufnr, map) 44 attach_mappings = function(prompt_bufnr, map)
45 local get_prompt_or_entry = function() 45 local get_prompt_or_entry = function()
46 local file_list = require("telescope.actions.state").get_selected_entry() 46 local file_list = require("telescope.actions.state").get_selected_entry()
47 if file_list then 47 if file_list then
48 return file_list[1] 48 return file_list[1]
49 else 49 else
50 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)
51 return current_picker:_get_prompt() 51 return current_picker:_get_prompt()
52 end 52 end
53 end 53 end
54 54
55 local edit_snippet = function() 55 local edit_snippet = function()
56 local file = get_prompt_or_entry() 56 local file = get_prompt_or_entry()
57 require("telescope.actions").close(prompt_bufnr) 57 require("telescope.actions").close(prompt_bufnr)
58 local prefix_filetype = string.match(file, "([^_]+)") 58 local prefix_filetype = string.match(file, "([^_]+)")
59 vim.cmd(":vs") 59 vim.cmd(":vs")
60 vim.cmd(":e " .. cwd .. "/" .. file) 60 vim.cmd(":e " .. cwd .. "/" .. file)
61 vim.bo.filetype = prefix_filetype 61 vim.bo.filetype = prefix_filetype
62 vim.bo.bufhidden = "wipe" 62 vim.bo.bufhidden = "wipe"
63 vim.cmd("set filetype?") 63 vim.cmd("set filetype?")
64 end 64 end
65 65
66 local insert_selected_snippet = function() 66 local insert_selected_snippet = function()
67 local file = get_prompt_or_entry() 67 local file = get_prompt_or_entry()
68 local path = cwd .. "/" .. file 68 local path = cwd .. "/" .. file
69 if vim.fn.filereadable(path) ~= 0 then 69 if vim.fn.filereadable(path) ~= 0 then
70 local snippet_content = vim.fn.readfile(path) 70 local snippet_content = vim.fn.readfile(path)
71 require("telescope.actions").close(prompt_bufnr) 71 require("telescope.actions").close(prompt_bufnr)
72 vim.fn.setreg('"', snippet_content) 72 vim.fn.setreg('"', snippet_content)
73 print("Snippet saved to register") 73 print("Snippet saved to register")
74 else 74 else
75 edit_snippet() 75 edit_snippet()
76 end 76 end
77 end 77 end
78 78
79 map("i", "<CR>", insert_selected_snippet) 79 map("i", "<CR>", insert_selected_snippet)
80 map("i", "<C-T>", edit_snippet) 80 map("i", "<C-T>", edit_snippet)
81 map("n", "<CR>", insert_selected_snippet) 81 map("n", "<CR>", insert_selected_snippet)
82 82
83 return true 83 return true
84 end, 84 end,
85 }) 85 })
86end, { desc = "[S]earch [S]nippets" }) 86end, { desc = "[S]earch [S]nippets" })
87 87
88vim.keymap.set("n", "<leader>sd", function() 88vim.keymap.set("n", "<leader>sd", function()
89 require("telescope.builtin").oldfiles({ 89 require("telescope.builtin").oldfiles({
90 prompt_title = "CD to", 90 prompt_title = "CD to",
91 attach_mappings = function(prompt_bufnr, map) 91 attach_mappings = function(prompt_bufnr, map)
92 local cd_prompt = function() 92 local cd_prompt = function()
93 local file = require("telescope.actions.state").get_selected_entry()[1] 93 local file = require("telescope.actions.state").get_selected_entry()[1]
94 local path = string.match(file, "(.*[/\\])") 94 local path = string.match(file, "(.*[/\\])")
95 require("telescope.actions").close(prompt_bufnr) 95 require("telescope.actions").close(prompt_bufnr)
96 vim.api.nvim_feedkeys(":cd " .. path, "n", true) 96 vim.api.nvim_feedkeys(":cd " .. path, "n", true)
97 end 97 end
98 98
99 map("i", "<CR>", cd_prompt) 99 map("i", "<CR>", cd_prompt)
100 map("n", "<CR>", cd_prompt) 100 map("n", "<CR>", cd_prompt)
101 101
102 return true 102 return true
103 end, 103 end,
104 }) 104 })
105end, { desc = "Search Directory" }) 105end, { desc = "Search Directory" })
106 106
107-- new terminals 107-- new terminals
108vim.keymap.set({ "n", "t" }, "<A-v>", function() 108vim.keymap.set({ "n", "t" }, "<A-v>", function()
109 require("nvchad.term").toggle({ pos = "vsp", id = "vtoggleTerm" }) 109 require("nvchad.term").toggle({ pos = "vsp", id = "vtoggleTerm" })
110end, { desc = "terminal toggleable vertical term" }) 110end, { desc = "terminal toggleable vertical term" })
111vim.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" })
112vim.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" })
113vim.keymap.set({ "n", "t" }, "<A-t>", function() 113vim.keymap.set({ "n", "t" }, "<A-t>", function()
114 require("nvchad.term").toggle({ pos = "sp", id = "htoggleTerm" }) 114 require("nvchad.term").toggle({ pos = "sp", id = "htoggleTerm" })
115end, { desc = "terminal new horizontal term" }) 115end, { desc = "terminal new horizontal term" })
116vim.keymap.set({ "n", "t" }, "<A-i>", function() 116vim.keymap.set({ "n", "t" }, "<A-i>", function()
117 require("nvchad.term").toggle({ pos = "float", id = "floatTerm" }) 117 require("nvchad.term").toggle({ pos = "float", id = "floatTerm" })
118end, { desc = "terminal toggle floating term" }) 118end, { desc = "terminal toggle floating term" })
119 119
120 120
121-- whichkey 121-- whichkey
122vim.keymap.set("n", "<leader>wK", "<cmd>WhichKey <CR>", { desc = "whichkey all keymaps" }) 122vim.keymap.set("n", "<leader>sK", function()
123vim.keymap.set("n", "<leader>wk", function() 123 vim.cmd("WhichKey " .. vim.fn.input("WhichKey: "))
124 vim.cmd("WhichKey " .. vim.fn.input("WhichKey: "))
125end, { desc = "whichkey query lookup" }) 124end, { desc = "whichkey query lookup" })
126 125
127 126
128-- blankline 127-- blankline
129vim.keymap.set("n", "<leader>cc", function() 128vim.keymap.set("n", "<leader>cc", function()
130 local config = { scope = {} } 129 local config = { scope = {} }
131 config.scope.exclude = { language = {}, node_type = {} } 130 config.scope.exclude = { language = {}, node_type = {} }
132 config.scope.include = { node_type = {} } 131 config.scope.include = { node_type = {} }
133 local node = require("ibl.scope").get(vim.api.nvim_get_current_buf(), config) 132 local node = require("ibl.scope").get(vim.api.nvim_get_current_buf(), config)
134 133
135 if node then 134 if node then
136 local start_row, _, end_row, _ = node:range() 135 local start_row, _, end_row, _ = node:range()
137 if start_row ~= end_row then 136 if start_row ~= end_row then
138 vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start_row + 1, 0 }) 137 vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start_row + 1, 0 })
139 vim.api.nvim_feedkeys("_", "n", true) 138 vim.api.nvim_feedkeys("_", "n", true)
140 end 139 end
141 end 140 end
142end, { desc = "blankline jump to current context" }) 141end, { desc = "blankline jump to current context" })
143 142
144 143
@@ -150,7 +149,7 @@ vim.keymap.set("n", "<C-.>", ":HopChar1<CR>")
150-- [ Aerial ]"" "<cmd>AerialNext<CR>", {}) 149-- [ Aerial ]"" "<cmd>AerialNext<CR>", {})
151vim.keymap.set("n", "gL", "<cmd>Telescope aerial<CR>") 150vim.keymap.set("n", "gL", "<cmd>Telescope aerial<CR>")
152vim.keymap.set("n", "gl", function() 151vim.keymap.set("n", "gl", function()
153 require("aerial").toggle({ direction = "left" }) 152 require("aerial").toggle({ direction = "left" })
154end) 153end)
155 154
156 155
@@ -160,23 +159,23 @@ vim.keymap.set("n", "<leader>z", ":TZAtaraxis<CR>")
160 159
161-- Use floating window for translation 160-- Use floating window for translation
162vim.keymap.set("v", "<leader><leader>tz", function() 161vim.keymap.set("v", "<leader><leader>tz", function()
163 vim.cmd('norm o^zt"ty') 162 vim.cmd('norm o^zt"ty')
164 local translated_text = vim.fn.system("trans -t zh-TW -b", vim.fn.getreg("t")) 163 local translated_text = vim.fn.system("trans -t zh-TW -b", vim.fn.getreg("t"))
165 local lines = vim.split(translated_text, "\n") 164 local lines = vim.split(translated_text, "\n")
166 table.remove(lines) 165 table.remove(lines)
167 166
168 local new_buf = vim.api.nvim_create_buf(false, true) 167 local new_buf = vim.api.nvim_create_buf(false, true)
169 vim.api.nvim_buf_set_lines(new_buf, 0, -1, true, lines) 168 vim.api.nvim_buf_set_lines(new_buf, 0, -1, true, lines)
170 169
171 vim.api.nvim_open_win(new_buf, true, { 170 vim.api.nvim_open_win(new_buf, true, {
172 relative = "cursor", 171 relative = "cursor",
173 width = 80, 172 width = 80,
174 height = #lines, 173 height = #lines,
175 row = #lines, 174 row = #lines,
176 col = 0, 175 col = 0,
177 }) 176 })
178 177
179 vim.cmd("setl nocul nonu nornu") 178 vim.cmd("setl nocul nonu nornu")
180 vim.cmd("hi ActiveWindow guibg=#2a5a6a guifg=White | setl winhighlight=Normal:ActiveWindow") 179 vim.cmd("hi ActiveWindow guibg=#2a5a6a guifg=White | setl winhighlight=Normal:ActiveWindow")
181 vim.cmd(":silent! %s/\\%x1b\\[[0-9;]*m//g") 180 vim.cmd(":silent! %s/\\%x1b\\[[0-9;]*m//g")
182end, { desc = "Description" }) 181end, { desc = "Description" })