vi 中的堆栈行号/文件位置

vi 中的堆栈行号/文件位置

很多时候,我都在阅读代码,逐个函数地查看,模拟调用堆栈。一旦我找到最底层,我就需要逆向思考,看看返回值是如何处理的,但很多时候我都忘记了调用了哪个函数(大约 10 次调用)或它在文件中的哪个位置。

我最近发现我可以使用(正斜杠向上箭头)浏览查找历史记录/^。这很管用,但并不总是能得到我想要的结果。

有没有办法按顺序“标记”位置列表,以便我可以沿任一方向浏览它们?例如:

  • 线路 100 -read_desc呼叫desc_read_dev
  • 1200 号线 -desc_read_dev呼叫dev_read
  • 200 号线 -dev_read呼叫out
  • 第 10 行 -out返回EOK

然后我想把 EOK 带回去dev_read看看那里发生了什么,然后再带回去desc_read_dev等等。

答案1

你知道吗:help jumplist

每次搜索(使用/、 和n/ N)以及其他动作(覆盖超过短距离,因此jw等不适用)都会在那里添加一个条目,您可以使用 返回<C-O>,然后使用 再次前进<C-I>(与 相同<Tab>)。

您还可以通过 明确设置跳转点m'

和标签

由于您的用例是通过调用堆栈导航,因此我还想强调相关的标签堆栈。您需要先生成一个函数定义数据库(ctags支持多种编程语言),然后有标签查找、跳转和返回堆栈的命令。(所有这些也记录为常规跳转。)请参阅:help tags了解详情。

高级阶段

作为初学者,你可能不需要这个,但是像我的这样的插件EnhancedJumps 插件使用停留在当前缓冲区内的跳转来扩展内置跳转列表,或者相反,直接跳转到另一个缓冲区中的下一个位置。

相关内容