Pounce 是一个类似于 EasyMotion、Sneak、Hop 和 Lightspeed 的运动插件。它基于增量模糊搜索。这是一个演示:
该演示显示了通过键入“s”激活 Pounce、“htm”细化搜索、然后键入“J”选择匹配来搜索单词“ht_mask”。
使用 vim 插件:
Plug 'rlane/pounce.nvim'
:Pounce
命令启动运动。在目的地输入字符,Pounce 将突出显示屏幕上的所有匹配项。接下来,通过键入目标后面出现的更多字符(按顺序)来优化匹配。匹配的第一个字母将被替换为大写的“接受键”。您可以按该键跳转到匹配项,或继续优化搜索。 Enter 接受最佳匹配(以蓝色突出显示)。 Escape 取消该动作并将光标保留在之前的位置。
您还可以使用:Pounce <chars>
来初始化<chars>
搜索。您可以直接按接受键跳转到该比赛或继续正常精炼。您可以将其与<Cr>
一起使用,以寄存器的内容初始化搜索,例如<Cr>/
将使用您在/
中使用的最后一个搜索模式初始化搜索。您还可以考虑使用<expr>
映射或 lua 回调与vim.fn.expand
。对于这些用例,定义了命令PounceReg <regname>
和PounceExpand <expr>
。
:PounceRepeat
命令的工作方式相同,但使用前一个 Pounce 命令的输入进行初始化。
默认情况下不创建任何映射。这是一个建议:
nmap s <cmd> Pounce <CR>
nmap S <cmd> PounceRepeat <CR>
xmap s <cmd> Pounce <CR>
omap gs <cmd> Pounce <CR> " 's' is used by vim-surround
nmap S :Pounce <C-r> / <cr> " note: if you want to use <C-r> you cannot use <cmd>
也可以直接使用lua api:
local map = vim . keymap . set
map ( " n " , " s " , function () require ' pounce ' . pounce { } end )
map ( " n " , " S " , function () require ' pounce ' . pounce { do_repeat = true } end )
map ( " x " , " s " , function () require ' pounce ' . pounce { } end )
map ( " o " , " gs " , function () require ' pounce ' . pounce { } end )
map ( " n " , " S " , function () require ' pounce ' . pounce { input = { reg = " / " } } end )
pounce
函数接受一个表作为参数,您可以使用setup
接受的任何键,以及:
require ' pounce ' . pounce {
do_repeat = true | false -- to reuse the last pounce search
input = string | table -- a string to initialize the input, or a table:
input = {
reg = string -- the name of a vim register to use as the input (:h registers)
expand = string -- an expression passed to vim.fn.expand (:h expand())
}
}
配置是通过setup
功能完成的。可以选择调用setup
。以下是默认值:
require ' pounce ' . setup {
accept_keys = " JFKDLSAHGNUVRBYTMICEOXWPQZ " ,
accept_best_key = " <enter> " ,
multi_window = true ,
debug = false ,
}
请注意, accept_keys
允许您配置接受键的显示顺序——最接近的匹配获取accept_keys
字符串中的第一个字母。使用其他键盘布局的用户可能希望修改该字符串。例如,Colemak DHm 可能以NTESIROA...
下面列出了一些您可以使用的额外命令示例:
<cmd> PounceReg / <cr> " Pounce with last search pattern
<cmd> PounceReg 0 <cr> " Pounce with last yank
<cmd> PounceReg " <cr> " Pounce with last d/c/y
<cmd> PounceReg . <cr> " Pounce with last inserted text
" zy <cmd> PounceReg z<cr > " From visual mode: Pounce using the selection as the input
<cmd> PounceExpand <cword><cr> " Pounce with the current word
<cmd> PounceExpand % <cr> " Pounce with the current filename
这个领域有很多插件。以下是 Pounce 的一些替代方案: