gpt4 book ai didi

python - VIM + Python - "gd"命令无法正常工作

转载 作者:行者123 更新时间:2023-12-04 19:20:02 25 4
gpt4 key购买 nike

我开始使用 VIM 编写 Python 程序。我遇到了一些问题,希望有人能帮助我解决这个问题。

“gd”命令应该将您带到当前函数中定义/使用变量的第一个位置。据我了解,这与执行“[[”转到函数顶部,然后执行变量名称的搜索相同。

问题是,当我在 Python 函数中尝试此操作时,vim 会在整个文件中找到该变量的第一次出现。

关于为什么会发生这种情况/我如何解决这个问题的任何想法?

最佳答案

我认为问题在于 Vim 处理函数的方式。来自 [[ 的文档:

                            *[[*
[[ [count] sections backward or to the previous '{' in
the first column. |exclusive|
Note that |exclusive-linewise| often applies.

除非以某种方式专门为某个地方的 python 文件定义了一个部分(我不相信这是可能的,因为它们应该是两个字母的 nroff 部分),否则这将假设第一列中应该有一个开放大括号,这与 python 文件无关。

我建议在 Vim 邮件列表上询问是否有任何插件或解决方法。或者,您可以定义这样的映射:
nmap gd :let varname = '\<<C-R><C-W>\>'<CR>?\<def\><CR>/<C-R>=varname<CR><CR>

这可以通过函数更优雅地完成,但这只是一个应该有效的快速技巧。它映射 gd到一个函数,该函数设置变量 'varname' 以保存光标所在的单词,向后搜索 def,然后向前搜索变量:
    :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

关于python - VIM + Python - "gd"命令无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com