diff options
author | Hsieh Chin Fan <pham@topo.tw> | 2024-07-02 18:10:23 +0800 |
---|---|---|
committer | Hsieh Chin Fan <pham@topo.tw> | 2024-07-02 18:10:23 +0800 |
commit | 0bed649a238b300f7b960d52d161cbb0adc717af (patch) | |
tree | d62cca138f00ce42784516797a6a666ef9a2a7a6 | |
parent | 1aa36200150cd8744c9c8c3bede9110cbf382c90 (diff) |
Update
-rw-r--r-- | vim/init/keymaps.vim | 21 | ||||
-rw-r--r-- | vim/lua/configs/telescope.lua | 2 | ||||
-rw-r--r-- | vim/lua/mappings.lua | 52 | ||||
-rw-r--r-- | vim/lua/plugins/init.lua | 17 |
4 files changed, 51 insertions, 41 deletions
diff --git a/vim/init/keymaps.vim b/vim/init/keymaps.vim index d0e2cd0..e4bdfd4 100644 --- a/vim/init/keymaps.vim +++ b/vim/init/keymaps.vim | |||
@@ -47,6 +47,9 @@ nnoremap <C-p> "0p | |||
47 | nmap <leader>w :w!<CR> | 47 | nmap <leader>w :w!<CR> |
48 | 48 | ||
49 | " Fast quit with error | 49 | " Fast quit with error |
50 | nmap <leader>q :q<CR> | ||
51 | |||
52 | " Fast quit with error | ||
50 | nmap cq :cq<CR> | 53 | nmap cq :cq<CR> |
51 | 54 | ||
52 | " Switch wrap | 55 | " Switch wrap |
@@ -74,7 +77,6 @@ augroup END | |||
74 | " Open terminal | 77 | " Open terminal |
75 | " nnoremap <leader>, :terminal ++noclose<CR> | 78 | " nnoremap <leader>, :terminal ++noclose<CR> |
76 | vnoremap <leader>, :terminal<CR> | 79 | vnoremap <leader>, :terminal<CR> |
77 | echo foo | ||
78 | 80 | ||
79 | " Toggle paste mode on and off | 81 | " Toggle paste mode on and off |
80 | map <leader>pp :setlocal paste!<CR> | 82 | map <leader>pp :setlocal paste!<CR> |
@@ -312,20 +314,17 @@ nnoremap <leader>rr :Redir | |||
312 | "---------------------------------------------------------------------- | 314 | "---------------------------------------------------------------------- |
313 | " QUICK_SUBSTITUTE | 315 | " QUICK_SUBSTITUTE |
314 | "---------------------------------------------------------------------- | 316 | "---------------------------------------------------------------------- |
315 | function! IsSubstituteTextSelected() | 317 | let g:text_selected = 1 |
316 | execute "norm \<ESC>" | ||
317 | " Get position of the first/last char | ||
318 | echo col("'<") col("'>") len(getline('.'))+1 | ||
319 | return col("'<") != 1 || col("'>") != len(getline('.')) + 1 | ||
320 | endfunction | ||
321 | function! SelectAreaOrDoSubstitute() | 318 | function! SelectAreaOrDoSubstitute() |
322 | if IsSubstituteTextSelected() | 319 | if g:text_selected |
323 | call feedkeys('gv"aygv*NVL') | 320 | call feedkeys("\"sygv/\<C-R>s\<CR>gn") |
321 | let g:text_selected = 0 | ||
324 | else | 322 | else |
325 | call feedkeys("gv:s//\<C-R>a/g\<Left>\<Left>") | 323 | call feedkeys(":s//\<C-R>//g\<Left>\<Left>") |
324 | let g:text_selected = 1 | ||
326 | endif | 325 | endif |
327 | endfunction | 326 | endfunction |
328 | vnoremap <CR> <Cmd>call SelectAreaOrDoSubstitute()<CR> | 327 | vnoremap <TAB> <Cmd>call SelectAreaOrDoSubstitute()<CR> |
329 | 328 | ||
330 | 329 | ||
331 | "---------------------------------------------------------------------- | 330 | "---------------------------------------------------------------------- |
diff --git a/vim/lua/configs/telescope.lua b/vim/lua/configs/telescope.lua index 70eddf4..6efa391 100644 --- a/vim/lua/configs/telescope.lua +++ b/vim/lua/configs/telescope.lua | |||
@@ -4,7 +4,7 @@ return { | |||
4 | i = { | 4 | i = { |
5 | -- ["<c-j>"] = "move_selection_next", | 5 | -- ["<c-j>"] = "move_selection_next", |
6 | -- ["<c-k>"] = "move_selection_previous", | 6 | -- ["<c-k>"] = "move_selection_previous", |
7 | ["<C-w>"] = require("telescope.actions.layout").toggle_preview, | 7 | ["<C-e>"] = require("telescope.actions.layout").toggle_preview, |
8 | ["<C-u>"] = false, | 8 | ["<C-u>"] = false, |
9 | ["<C-o>"] = function(p_bufnr) | 9 | ["<C-o>"] = function(p_bufnr) |
10 | require("telescope.actions").send_selected_to_qflist(p_bufnr) | 10 | require("telescope.actions").send_selected_to_qflist(p_bufnr) |
diff --git a/vim/lua/mappings.lua b/vim/lua/mappings.lua index d3cfda0..788a6ab 100644 --- a/vim/lua/mappings.lua +++ b/vim/lua/mappings.lua | |||
@@ -46,24 +46,44 @@ vim.keymap.set('n', '<leader>ss', function() | |||
46 | local current_filetype = vim.bo.filetype | 46 | local current_filetype = vim.bo.filetype |
47 | local cwd = os.getenv("HOME") .. '/snippets' | 47 | local cwd = os.getenv("HOME") .. '/snippets' |
48 | require('telescope.builtin').find_files { | 48 | require('telescope.builtin').find_files { |
49 | prompt_title = 'Select a snippet for ' .. current_filetype, | 49 | prompt_title = 'Press <C-T> to edit a snippet', |
50 | default_text = current_filetype .. "_", | 50 | default_text = current_filetype .. "_", |
51 | cwd = cwd, | 51 | cwd = cwd, |
52 | attach_mappings = function(prompt_bufnr, map) | 52 | attach_mappings = function(prompt_bufnr, map) |
53 | local insert_selected_snippet = function() | 53 | local get_prompt_or_entry = function() |
54 | local file = require('telescope.actions.state').get_selected_entry()[1] | 54 | local file_list = require('telescope.actions.state').get_selected_entry() |
55 | local snippet_content = vim.fn.readfile(cwd .. "/" .. file) | 55 | if file_list then |
56 | require('telescope.actions').close(prompt_bufnr) | 56 | return file_list[1] |
57 | vim.api.nvim_put(snippet_content, '', false, true) | 57 | else |
58 | local current_picker = require('telescope.actions.state').get_current_picker(prompt_bufnr) | ||
59 | return current_picker:_get_prompt() | ||
60 | end | ||
58 | end | 61 | end |
59 | local edit_selected_snippet = function() | 62 | |
60 | local file = require('telescope.actions.state').get_selected_entry()[1] | 63 | local edit_snippet = function() |
64 | local file = get_prompt_or_entry() | ||
61 | require('telescope.actions').close(prompt_bufnr) | 65 | require('telescope.actions').close(prompt_bufnr) |
66 | local prefix_filetype = string.match(file, "([^_]+)") | ||
62 | vim.cmd(":e " .. cwd .. "/" .. file) | 67 | vim.cmd(":e " .. cwd .. "/" .. file) |
68 | vim.bo.filetype(prefix_filetype) | ||
69 | vim.cmd("set filetype?") | ||
70 | end | ||
71 | |||
72 | local insert_selected_snippet = function() | ||
73 | local file = get_prompt_or_entry() | ||
74 | local path = cwd .. "/" .. file | ||
75 | if vim.fn.filereadable(path) ~= 0 then | ||
76 | local snippet_content = vim.fn.readfile(path) | ||
77 | require('telescope.actions').close(prompt_bufnr) | ||
78 | vim.fn.setreg('"', snippet_content) | ||
79 | print('Snippet saved to register') | ||
80 | else | ||
81 | edit_snippet() | ||
82 | end | ||
63 | end | 83 | end |
64 | 84 | ||
65 | map('i', '<CR>', insert_selected_snippet) | 85 | map('i', '<CR>', insert_selected_snippet) |
66 | map('i', '<C-T>', edit_selected_snippet) | 86 | map('i', '<C-T>', edit_snippet) |
67 | map('n', '<CR>', insert_selected_snippet) | 87 | map('n', '<CR>', insert_selected_snippet) |
68 | 88 | ||
69 | return true | 89 | return true |
@@ -91,16 +111,6 @@ vim.keymap.set('n', '<leader>sd', function() | |||
91 | } | 111 | } |
92 | end, { desc = 'Search Directory' }) | 112 | end, { desc = 'Search Directory' }) |
93 | 113 | ||
94 | vim.keymap.set('n', '<leader>sn', function() | ||
95 | local current_filetype = vim.bo.filetype | ||
96 | vim.ui.input({ prompt = 'Snippet Name: ', default = current_filetype .. "_" }, function(snippet) | ||
97 | vim.cmd("cd ~/snippets") | ||
98 | vim.cmd("e " .. snippet) | ||
99 | vim.cmd("set filetype=" .. current_filetype) | ||
100 | vim.cmd("set filetype?") | ||
101 | end) | ||
102 | end, { desc = "Create a new snippet" }) | ||
103 | |||
104 | 114 | ||
105 | -- map("n", "<leader>ma", "<cmd>Telescope marks<CR>", { desc = "telescope find marks" }) | 115 | -- map("n", "<leader>ma", "<cmd>Telescope marks<CR>", { desc = "telescope find marks" }) |
106 | -- map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "telescope git commits" }) | 116 | -- map("n", "<leader>cm", "<cmd>Telescope git_commits<CR>", { desc = "telescope git commits" }) |
@@ -172,5 +182,5 @@ vim.cmd('vmap s S') | |||
172 | -- [ Aerial ] | 182 | -- [ Aerial ] |
173 | vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", {}) | 183 | vim.keymap.set("n", "{", "<cmd>AerialPrev<CR>", {}) |
174 | vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", {}) | 184 | vim.keymap.set("n", "}", "<cmd>AerialNext<CR>", {}) |
175 | vim.keymap.set("n", "gN", "<cmd>Telescope aerial<CR>") | 185 | vim.keymap.set("n", "<C-W>a", "<cmd>Telescope aerial<CR>") |
176 | vim.keymap.set("n", "gn", function() require("aerial").toggle({ direction = "left" }) end) | 186 | vim.keymap.set("n", "<C-W><C-A>", function() require("aerial").toggle({ direction = "left" }) end) |
diff --git a/vim/lua/plugins/init.lua b/vim/lua/plugins/init.lua index c74e8d4..0e9911e 100644 --- a/vim/lua/plugins/init.lua +++ b/vim/lua/plugins/init.lua | |||
@@ -61,14 +61,15 @@ return { | |||
61 | changedelete = { text = '~' }, | 61 | changedelete = { text = '~' }, |
62 | }, | 62 | }, |
63 | on_attach = function(bufnr) | 63 | on_attach = function(bufnr) |
64 | vim.keymap.set('n', '<leader>gp', require('gitsigns').prev_hunk, | 64 | local gs = require('gitsigns') |
65 | { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) | 65 | vim.keymap.set('n', '<leader>gp', gs.prev_hunk, { buffer = bufnr, desc = '[G]o to [P]revious Hunk' }) |
66 | vim.keymap.set('n', '<leader>gn', require('gitsigns').next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) | 66 | vim.keymap.set('n', '<leader>gn', gs.next_hunk, { buffer = bufnr, desc = '[G]o to [N]ext Hunk' }) |
67 | vim.keymap.set('n', '<leader>ph', require('gitsigns').preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' }) | 67 | vim.keymap.set('n', '<leader>hp', gs.preview_hunk, { buffer = bufnr, desc = '[P]review [H]unk' }) |
68 | vim.keymap.set('n', '<leader>hd', require('gitsigns').diffthis, { buffer = bufnr, desc = '[h]unk [d]iff' }) | 68 | vim.keymap.set('n', '<leader>hd', gs.diffthis, { buffer = bufnr, desc = '[h]unk [d]iff' }) |
69 | vim.keymap.set('n', '<leader>hD', function() require('gitsigns').diffthis('~') end, | 69 | vim.keymap.set('n', '<leader>hD', function() gs.diffthis('~') end, { buffer = bufnr, desc = '[h]unk [d]iff for ~' }) |
70 | { buffer = bufnr, desc = '[h]unk [d]iff for ~' }) | 70 | -- vim.keymap.set("n", "<leader>gb", gs.blame_line{full=true}, { desc = "Git Blame" }) |
71 | vim.keymap.set('v', 'hr', ":Gitsigns reset_hunk<CR>", { buffer = bufnr, desc = '[h]unk [r]eset' }) | 71 | vim.keymap.set("n", "<leader>gb", gs.toggle_current_line_blame, { desc = "Blame Line" }) |
72 | vim.keymap.set('v', 'hr', gs.reset_hunk, { buffer = bufnr, desc = '[h]unk [r]eset' }) | ||
72 | end, | 73 | end, |
73 | }, | 74 | }, |
74 | }, | 75 | }, |