Creo que el problema se debe a la forma en que Vim trata una función. A partir de la documentación de [[
:
*[[*
[[ [count] sections backward or to the previous '{' in
the first column. |exclusive|
Note that |exclusive-linewise| often applies.
A menos que una sección de alguna manera está definido específicamente para los archivos de pitón en alguna parte (no estoy convencido de que esto es posible, ya que se supone que deben ser de dos letras nroff secciones), esto va a suponer que debería haber un corchete abierto en la primera columna, que no es relevante para los archivos de Python.
Sugiero preguntar en la lista de correo de Vim para ver si hay algún complemento o solución alternativa para esto. Alternativamente, se podría definir un mapeo:
nmap gd :let varname = '\<<C-R><C-W>\>'<CR>?\<def\><CR>/<C-R>=varname<CR><CR>
Esto podría hacerse más elegante con una función, pero esto fue sólo un truco rápido que debería funcionar. Al trazar gd
a una función que establece la variable 'code' para mantener la palabra se encuentra el cursor, busca hacia atrás para def y luego busca en adelante para la variable:
: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
"[[" * does * funciona * en archivos Python para buscar una def/clase anterior. Por lo que puedo decir, se redefine en el archivo "python.vim" en ftplugin, para realizar un "salto de Python". Un problema (relacionado?) Es que, aunque "[[" funciona bien en modo normal, no funciona bien en modo visual. Supongo que solo hay un error ahí, pero todavía estoy esperando que me pierda algo y sea estúpido. –
Supongo que '[[' funciona en archivos Python debido a una asignación personalizada, pero 'gd' se basa en la implementación incorporada de' [['. – DrAl