Ich denke, das Problem liegt an der Art, wie Vim eine Funktion behandelt. Aus der Dokumentation für [[
:
*[[*
[[ [count] sections backward or to the previous '{' in
the first column. |exclusive|
Note that |exclusive-linewise| often applies.
Es sei denn, ein Abschnitt irgendwie irgendwo speziell für Python-Dateien definiert ist (Ich bin nicht überzeugt, ist möglich, da sie nroff Abschnitte aus zwei Buchstaben sein soll sind), wird dies übernehmen dass es in der ersten Spalte eine offene Klammer geben sollte, die für Python-Dateien nicht relevant ist.
Ich würde vorschlagen, auf der Vim-Mailingliste zu fragen, ob es Plugins oder Work-Arounds dafür gibt. Alternativ können Sie eine Abbildung wie folgt definieren:
nmap gd :let varname = '\<<C-R><C-W>\>'<CR>?\<def\><CR>/<C-R>=varname<CR><CR>
Diese eleganter mit einer Funktion durchgeführt werden konnte, aber das war nur eine schnelle Hack, funktionieren sollte. Es bildet gd
auf eine Funktion, die Variable ‚varname‘ setzt das Wort zu halten, den Cursor auf, sucht rückwärts nach def und sucht dann nach vorne für die 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
"[[* * funktioniert in Python-Dateien zur Suche nach einer vorherigen def/class. Soweit ich das beurteilen kann, wird es in der Datei "python.vim" in ftplugin neu definiert, um einen "Python_sprung" auszuführen. Ein (verwandtes?) Problem besteht darin, dass "[[" im normalen Modus gut funktioniert, aber im visuellen Modus nicht gut funktioniert. Ich vermute, da ist nur ein Virus, aber ich hoffe immer noch, dass ich nur etwas verpasse und dumm bin. –
Ich nehme an, '[[' funktioniert in Python-Dateien aufgrund einer benutzerdefinierten Zuordnung, aber 'gd' basiert auf der eingebauten Implementierung von' [[''. – DrAl