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 的一些替代方案: