Penso che il problema sia dovuto al modo in cui Vim tratta una funzione. Dalla documentazione per [[
:
*[[*
[[ [count] sections backward or to the previous '{' in
the first column. |exclusive|
Note that |exclusive-linewise| often applies.
A meno che una sezione è in qualche modo definito specificamente per i file Python da qualche parte (non sto convinto che questo sia possibile in quanto si suppone essere di due lettere nroff sezioni), questo assumerà che ci dovrebbe essere una parentesi aperta nella prima colonna, che non è rilevante per i file python.
Suggerisco di chiedere sulla mailing list di Vim per vedere se ci sono plugin o soluzioni per questo. In alternativa, è possibile definire una mappatura come questo:
nmap gd :let varname = '\<<C-R><C-W>\>'<CR>?\<def\><CR>/<C-R>=varname<CR><CR>
Questo potrebbe essere fatto in modo più elegante di una funzione, ma questo era solo un trucco veloce che dovrebbe funzionare. Si associa gd
a una funzione che imposta la 'nomevariabile' variabile per contenere la parola il cursore è attivo, la ricerca all'indietro per definizione e quindi cerca in avanti per la variabile:
:let varname = " Variable setting
'\< " String start and word boundary
<C-R><C-W> " Ctrl-R, Ctrl-W: pull in the word under the cursor
\>' " Word boundary and string end
<CR> " Enter - finish this command
? " Search backwards for...
\<def\> " def but not undefined etc (using word boundaries)
<CR> " Enter - Perform search
/ " Now search forward
<C-R>= " Pull in something from an expression
varname<CR> " The expression is 'varname', so pull in the contents of varname
<CR> " Enter - perform search
"[[" * fa * funziona in file Python per cercare una def/classe precedente. Da quello che posso dire, viene ridefinito nel file "python.vim" in ftplugin, per eseguire un "Python_jump". Un problema (correlato?) È che, mentre "[[" funziona correttamente in modalità normale, non funziona bene in modalità visuale. Immagino che ci sia solo un insetto lì, ma continuo a sperare che mi manchi solo qualcosa ed essere stupido. –
Immagino che '[[' funzioni in file Python a causa di un mapping personalizzato, ma 'gd' è basato sull'implementazione incorporata di' [['. – DrAl