nvim环境使用escpe实现代码导航

cscope 是类似传统的 ctags 的代码浏览工具,尤其适用于vim和emacs等编辑器。不过,由于neovim从0.9版本移除了 :escope 指令,所以需要通过插件来支持。最常用且推荐的插件是 Github: dhananjaylatkar/cscope_maps.nvim

安装

我在 NeoVim IDE 中使用 lazy.nvim 插件管理器,所以在此基础上修改 ~/.config/nvim/lua/plugins.lua 添加一段:

plugins.lua 中添加一段安装 cscope 插件代码
{
  "dhananjaylatkar/cscope_maps.nvim",
  dependencies = {
    "nvim-telescope/telescope.nvim", -- optional [for picker="telescope"]
    "ibhagwan/fzf-lua", -- optional [for picker="fzf-lua"]
    "echasnovski/mini.pick", -- optional [for picker="mini-pick"]
    "folke/snacks.nvim", -- optional [for picker="snacks"]
  },
  opts = {
    -- USE EMPTY FOR DEFAULT OPTIONS
    -- DEFAULTS ARE LISTED BELOW
  },
}

使用

  • 在项目根目录下生成文件列表:

在项目根目录下生成文件列表 cscope.files (这里以go语言为例)
find . -name '*.go' > cscope.files
  • 生成 cscope 数据库:

生成 cscope 数据库
cscope -b -i cscope.files

# 直接使用 cscope -b 也行

此时会在项目根目录下生成一个 cscope.out 数据库文件

  • 进入 nvim 之后,执行命令 :Cs db add cscope.out 加载数据库,不过也可以在插件配置自动加载

  • 在函数上使用 ctrl-] 可以跳到函数定义,然后使用 ctrl-t 又可以跳回原先位置

参考