Pounce ist ein Bewegungs-Plugin, das EasyMotion, Sneak, Hop und Lightspeed ähnelt. Es basiert auf einer inkrementellen Fuzzy-Suche. Hier ist eine Demo:
Die Demo zeigt die Suche nach dem Wort „ht_mask“, indem Sie „s“ eingeben, um Pounce zu aktivieren, „htm“, um die Suche zu verfeinern, und dann „J“, um die Übereinstimmung auszuwählen.
Verwendung von vim-plug:
Plug 'rlane/pounce.nvim'
Der Befehl :Pounce
startet die Bewegung. Geben Sie das Zeichen am Ziel ein und Pounce hebt alle Übereinstimmungen auf dem Bildschirm hervor. Verfeinern Sie als Nächstes die Übereinstimmungen, indem Sie weitere Zeichen (in der angegebenen Reihenfolge) eingeben, die nach dem Ziel vorhanden sind. Der erste Buchstabe der Übereinstimmung wird durch einen Großbuchstaben „Akzeptanzschlüssel“ ersetzt. Sie können diese Taste drücken, um zum Treffer zu springen oder die Suche weiter zu verfeinern. Enter akzeptiert die beste Übereinstimmung (blau hervorgehoben). Escape bricht die Bewegung ab und lässt den Cursor an seiner vorherigen Position.
Sie können auch :Pounce <chars>
verwenden, um die Suche mit <chars>
zu initialisieren. Sie können direkt auf die Akzeptieren-Taste drücken, um zu dieser Übereinstimmung zu springen, oder wie gewohnt mit der Verfeinerung fortfahren. Sie können dies mit <Cr>
verwenden, um die Suche mit dem Inhalt eines Registers zu initialisieren. Beispielsweise initialisiert <Cr>/
die Suche mit dem letzten Suchmuster, das Sie in /
verwendet haben. Sie können auch <expr>
-Zuordnungen oder Lua-Rückrufe mit vim.fn.expand
verwenden. Für diese Anwendungsfälle sind die Befehle PounceReg <regname>
und PounceExpand <expr>
definiert.
Der Befehl :PounceRepeat
funktioniert auf die gleiche Weise, wird jedoch mit der Eingabe des vorherigen Pounce-Befehls initialisiert.
Standardmäßig werden keine Zuordnungen erstellt. Hier ist ein Vorschlag:
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>
Sie können die Lua-API auch direkt verwenden:
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 )
Die pounce
-Funktion verwendet eine Tabelle als Argument. Sie können alle vom setup
akzeptierten Tasten verwenden, außerdem:
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())
}
}
Die Konfiguration erfolgt mit der setup
-Funktion. Der Aufruf von setup
ist optional. Hier sind die Standardeinstellungen:
require ' pounce ' . setup {
accept_keys = " JFKDLSAHGNUVRBYTMICEOXWPQZ " ,
accept_best_key = " <enter> " ,
multi_window = true ,
debug = false ,
}
Beachten Sie, dass Sie accept_keys
die Reihenfolge konfigurieren können, in der Akzeptanzschlüssel angezeigt werden – die Übereinstimmung mit der größten Nähe erhält den ersten Buchstaben in der Zeichenfolge accept_keys
. Benutzer alternativer Tastaturlayouts möchten diese Zeichenfolge möglicherweise ändern. Colemak DHm könnte zum Beispiel mit NTESIROA...
beginnen.
Nachfolgend sind einige Beispiele für zusätzliche Befehle aufgeführt, die Sie verwenden können:
<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
Es gibt eine ganze Reihe Plugins in diesem Bereich. Hier sind einige Alternativen zu Pounce: