From 62e6baf42491fecc1803100d083f095f901abe36 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 2 Feb 2025 22:46:28 +0800 Subject: [PATCH] perf(flygrep): add ctrl-j/ctrl-k --- bundle/flygrep.nvim/README.md | 18 ++++---- bundle/flygrep.nvim/lua/flygrep.lua | 69 ++++++++++++++++------------- 2 files changed, 46 insertions(+), 41 deletions(-) diff --git a/bundle/flygrep.nvim/README.md b/bundle/flygrep.nvim/README.md index 759a8b6c4..14ab945d7 100644 --- a/bundle/flygrep.nvim/README.md +++ b/bundle/flygrep.nvim/README.md @@ -87,15 +87,15 @@ require('flygrep').setup({ ## Key Bindings -| Key bindings | descretion | -| ------------ | ---------------------------------- | -| `` | open cursor item | -| `` | next item | -| `` | previous item | -| `` | open item in split window | -| `` | open item in vertical split window | -| `` | open item in new tabpage | -| `` | toggle preview window | +| Key bindings | descretion | +| -------------------- | ---------------------------------- | +| `` | open cursor item | +| `` or `` | next item | +| `` or `` | previous item | +| `` | open item in split window | +| `` | open item in vertical split window | +| `` | open item in new tabpage | +| `` | toggle preview window | ## Feedback diff --git a/bundle/flygrep.nvim/lua/flygrep.lua b/bundle/flygrep.nvim/lua/flygrep.lua index 12d016c41..6da1cb1b3 100644 --- a/bundle/flygrep.nvim/lua/flygrep.lua +++ b/bundle/flygrep.nvim/lua/flygrep.lua @@ -191,6 +191,38 @@ local function toggle_preview_win() end end +local function next_item() + local line_number = vim.api.nvim_win_get_cursor(result_winid)[1] + if line_number == vim.api.nvim_buf_line_count(result_bufid) then + pcall(vim.api.nvim_win_set_cursor, result_winid, { 1, 0 }) + else + pcall(vim.api.nvim_win_set_cursor, result_winid, { line_number + 1, 0 }) + end + if conf.enable_preview then + vim.fn.timer_stop(preview_timer_id) + preview_timer_id = vim.fn.timer_start(500, preview_timer, { ['repeat'] = 1 }) + end + update_result_count() +end + +local function previous_item() + local line_number = vim.api.nvim_win_get_cursor(result_winid)[1] + if line_number == 1 then + pcall( + vim.api.nvim_win_set_cursor, + result_winid, + { vim.api.nvim_buf_line_count(result_bufid), 0 } + ) + else + pcall(vim.api.nvim_win_set_cursor, result_winid, { line_number - 1, 0 }) + end + if conf.enable_preview then + vim.fn.timer_stop(preview_timer_id) + preview_timer_id = vim.fn.timer_start(500, preview_timer, { ['repeat'] = 1 }) + end + update_result_count() +end + local function open_win() require('flygrep.highlight').def_higroup() -- 窗口位置 @@ -374,38 +406,11 @@ local function open_win() }) end - -- 使用 Tab/Shift-Tab 上下移动搜素结果 - vim.keymap.set('i', '', function() - local line_number = vim.api.nvim_win_get_cursor(result_winid)[1] - if line_number == vim.api.nvim_buf_line_count(result_bufid) then - pcall(vim.api.nvim_win_set_cursor, result_winid, { 1, 0 }) - else - pcall(vim.api.nvim_win_set_cursor, result_winid, { line_number + 1, 0 }) - end - if conf.enable_preview then - vim.fn.timer_stop(preview_timer_id) - preview_timer_id = vim.fn.timer_start(500, preview_timer, { ['repeat'] = 1 }) - end - update_result_count() - end, { buffer = prompt_bufid }) - - vim.keymap.set('i', '', function() - local line_number = vim.api.nvim_win_get_cursor(result_winid)[1] - if line_number == 1 then - pcall( - vim.api.nvim_win_set_cursor, - result_winid, - { vim.api.nvim_buf_line_count(result_bufid), 0 } - ) - else - pcall(vim.api.nvim_win_set_cursor, result_winid, { line_number - 1, 0 }) - end - if conf.enable_preview then - vim.fn.timer_stop(preview_timer_id) - preview_timer_id = vim.fn.timer_start(500, preview_timer, { ['repeat'] = 1 }) - end - update_result_count() - end, { buffer = prompt_bufid }) + -- 使用 Tab/Shift-Tab and Ctrl-jk 上下移动搜素结果 + vim.keymap.set('i', '', next_item, { buffer = prompt_bufid }) + vim.keymap.set('i', '', next_item, { buffer = prompt_bufid }) + vim.keymap.set('i', '', previous_item, { buffer = prompt_bufid }) + vim.keymap.set('i', '', previous_item, { buffer = prompt_bufid }) vim.keymap.set('i', '', function() toggle_fix_string() update_result_count()