Pounce es un complemento de movimiento similar a EasyMotion, Sneak, Hop y Lightspeed. Se basa en una búsqueda difusa incremental. Aquí hay una demostración:
La demostración muestra la búsqueda de la palabra "ht_mask" escribiendo "s" para activar Pounce, "htm" para refinar la búsqueda y luego "J" para seleccionar la coincidencia.
Usando vim-plug:
Plug 'rlane/pounce.nvim'
El comando :Pounce
inicia el movimiento. Escribe el carácter en el destino y Pounce resaltará todas las coincidencias en la pantalla. A continuación, refine las coincidencias escribiendo más caracteres (en orden) que estén presentes después del destino. La primera letra de la coincidencia será reemplazada por una "tecla de aceptación" mayúscula. Puedes presionar esa tecla para saltar a la coincidencia o continuar refinando la búsqueda. Enter acepta la mejor coincidencia (resaltada en azul). Escape cancela el movimiento y deja el cursor en su posición anterior.
También puedes usar :Pounce <chars>
para inicializar la búsqueda con <chars>
. Puedes presionar directamente la tecla Aceptar para saltar a esa coincidencia o continuar refinando normalmente. Puede usar esto con <Cr>
para inicializar la búsqueda con el contenido de un registro. Por ejemplo, <Cr>/
inicializará la búsqueda con el último patrón de búsqueda que utilizó en /
. También puedes considerar el uso de asignaciones <expr>
o devoluciones de llamadas lua con vim.fn.expand
. Para estos casos de uso se definen los comandos PounceReg <regname>
y PounceExpand <expr>
.
El comando :PounceRepeat
funciona de la misma manera pero se inicializa con la entrada del comando Pounce anterior.
No se crean asignaciones de forma predeterminada. He aquí una sugerencia:
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>
También puedes usar la API de Lua directamente:
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 función pounce
toma una tabla como argumento, puede usar cualquier clave que acepte setup
, así como:
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 configuración se realiza con la función setup
. Es opcional llamar setup
. Aquí están los valores predeterminados:
require ' pounce ' . setup {
accept_keys = " JFKDLSAHGNUVRBYTMICEOXWPQZ " ,
accept_best_key = " <enter> " ,
multi_window = true ,
debug = false ,
}
Tenga en cuenta que accept_keys
le permite configurar el orden en que se muestran las claves de aceptación: la coincidencia de proximidad más cercana obtiene la primera letra en la cadena de accept_keys
. Es posible que los usuarios de diseños de teclado alternativos deseen modificar esa cadena. Colemak DHm podría comenzar con NTESIROA...
por ejemplo.
A continuación se enumeran algunos ejemplos de comandos adicionales que puede utilizar:
<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
Hay bastantes complementos en este espacio. Aquí hay algunas alternativas a Pounce: