Pounce é um plugin de movimento semelhante a EasyMotion, Sneak, Hop e Lightspeed. É baseado em pesquisa difusa incremental. Aqui está uma demonstração:
A demonstração mostra a busca pela palavra “ht_mask” digitando “s” para ativar o Pounce, “htm” para refinar a pesquisa e depois “J” para selecionar a correspondência.
Usando o plug-vim:
Plug 'rlane/pounce.nvim'
O comando :Pounce
inicia o movimento. Digite o caractere no destino e o Pounce destacará todas as partidas na tela. Em seguida, refine as correspondências digitando mais caracteres (em ordem) presentes após o destino. A primeira letra da correspondência será substituída por uma "tecla de aceitação" maiúscula. Você pode pressionar essa tecla para ir para a partida ou continuar refinando a pesquisa. Enter aceita a melhor correspondência (destacada em azul). Escape cancela o movimento e deixa o cursor na posição anterior.
Você também pode usar :Pounce <chars>
para inicializar a pesquisa com <chars>
. Você pode pressionar diretamente a tecla aceitar para pular para a partida ou continuar refinando normalmente. Você pode usar isso com <Cr>
para inicializar a pesquisa com o conteúdo de um registro. Por exemplo, <Cr>/
inicializará a pesquisa com o último padrão de pesquisa usado em /
. Você também pode considerar o uso de mapeamentos <expr>
ou retornos de chamada lua com vim.fn.expand
. Para estes casos de uso são definidos os comandos PounceReg <regname>
e PounceExpand <expr>
.
O comando :PounceRepeat
funciona da mesma maneira, mas é inicializado com a entrada do comando Pounce anterior.
Nenhum mapeamento é criado por padrão. Aqui está uma sugestão:
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>
Você também pode usar a API lua diretamente:
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 )
A função pounce
leva uma tabela como argumento, você pode usar qualquer chave que setup
aceite, bem 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())
}
}
A configuração é feita com a função setup
. É opcional chamar setup
. Aqui estão os padrões:
require ' pounce ' . setup {
accept_keys = " JFKDLSAHGNUVRBYTMICEOXWPQZ " ,
accept_best_key = " <enter> " ,
multi_window = true ,
debug = false ,
}
Observe que accept_keys
permite configurar a ordem em que as chaves de aceitação são exibidas – a correspondência de proximidade mais próxima obtém a primeira letra na string accept_keys
. Os usuários de layouts de teclado alternativos podem desejar alterar essa sequência. Colemak DHm pode começar com NTESIROA...
por exemplo.
Abaixo estão listados alguns exemplos de comandos extras que você pode usar:
<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
Existem alguns plug-ins neste espaço. Aqui estão algumas alternativas para Pounce: