Pounce est un plugin de mouvement similaire à EasyMotion, Sneak, Hop et Lightspeed. Il est basé sur une recherche floue incrémentielle. Voici une démo :
La démo montre la recherche du mot « ht_mask » en tapant « s » pour activer Pounce, « htm » pour affiner la recherche, puis « J » pour sélectionner la correspondance.
Utilisation de vim-plug :
Plug 'rlane/pounce.nvim'
La commande :Pounce
démarre le mouvement. Tapez le caractère à la destination et Pounce mettra en surbrillance toutes les correspondances à l'écran. Ensuite, affinez les correspondances en tapant plus de caractères (dans l'ordre) présents après la destination. La première lettre du match sera remplacée par une « clé d'acceptation » majuscule. Vous pouvez appuyer sur cette touche pour accéder à la correspondance ou continuer à affiner la recherche. Enter accepte la meilleure correspondance (surlignée en bleu). Escape annule le mouvement et laisse le curseur à sa position précédente.
Vous pouvez également utiliser :Pounce <chars>
pour initialiser la recherche avec <chars>
. Vous pouvez appuyer directement sur la touche Accepter pour accéder à cette correspondance ou continuer à affiner normalement. Vous pouvez l'utiliser avec <Cr>
pour initialiser la recherche avec le contenu d'un registre, par exemple <Cr>/
initialisera la recherche avec le dernier modèle de recherche que vous avez utilisé dans /
. Vous pouvez également envisager d'utiliser des mappages <expr>
ou des rappels lua avec vim.fn.expand
. Pour ces cas d'utilisation, les commandes PounceReg <regname>
et PounceExpand <expr>
sont définies.
La commande :PounceRepeat
fonctionne de la même manière mais est initialisée avec l'entrée de la commande Pounce précédente.
Aucun mappage n'est créé par défaut. Voici une suggestion :
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>
Vous pouvez également utiliser l'API Lua directement :
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 )
La fonction pounce
prend une table comme argument, vous pouvez utiliser toutes les clés acceptées setup
, ainsi que :
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())
}
}
La configuration se fait avec la fonction setup
. Il est facultatif d’appeler setup
. Voici les valeurs par défaut :
require ' pounce ' . setup {
accept_keys = " JFKDLSAHGNUVRBYTMICEOXWPQZ " ,
accept_best_key = " <enter> " ,
multi_window = true ,
debug = false ,
}
Notez que accept_keys
vous permet de configurer l'ordre dans lequel les clés d'acceptation s'affichent : la correspondance de proximité la plus proche obtient la première lettre de la chaîne accept_keys
. Les utilisateurs de dispositions de clavier alternatives souhaiteront peut-être modifier cette chaîne. Colemak DHm pourrait commencer par NTESIROA...
par exemple.
Vous trouverez ci-dessous quelques exemples de commandes supplémentaires que vous pouvez utiliser :
<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
Il existe de nombreux plugins dans cet espace. Voici quelques alternatives à Pounce :