关键词:mac source insight understand 读代码C/C++ neovim nvim
主要诉求:在mac平台上弄一个和source insight功能差不多的工具
和其他工具的对比:
source insight:只有windows版本。通过wine安装后并不稳定,而且快捷键一塌糊涂。毕竟它并不是为mac键盘布局设计的
understand:功能极其强大,但巨大,速度慢,上手起点略高。它似乎是给管理大神用来审核代码用的,而不是日常开发使用。
vscode:可以给它各种赞美词,但在我眼里它就是个又慢又难用的怪物。绝大部分功能它都有,但都不好用。动不动还要你到处找地方用json语法进行配置。一顿操作猛如虎,一看进展原地杵。
操作过程:
1、brew install neovim git python3 fd ripgrep xmake (可能还需要安装很多其他东西,待补充)
2、安装lazy管理包,参考https://www.lazyvim.org/installation。安装完成后运行一下nvim,此时会启动lazy,下载很多插件
3、在2的基础上进行简单的个人化定制。例如我的定制有
a、修改配色。在nvim配置的plugins目录下增加一个colorscheme.lua文件,内容如下
return {
– add molokai
{ "tomasr/molokai" },
– Configure LazyVim to load gruvbox
{
"LazyVim/LazyVim",
opts = {
colorscheme = "molokai",
},
}
}
b、进行一些简单的设定。主要修改mason和TreeSitter。在plugings目录下增加一个myconfig.lua,添加下述内容
– every spec file under the "plugins" directory will be loaded automatically by lazy.nvim
–
– In your plugin files, you can:
– * add extra plugins
– * disable/enabled LazyVim plugins
– * override the configuration of LazyVim plugins
return {
– disable module
{ "folke/tokyonight.nvim", enabled = false },
{ "catppuccin/nvim", enabled = false },
– {"folke/which-key.nvim",enabled = false},
{ "folke/flash.nvim", enabled = false },
–{"folke/neodev.nvim",enabled = false},
{ "folke/trouble.nvim", enabled = false },
{ "dstein64/vim-startuptime", enabled = false },
{ "RRethy/vim-illuminate", enabled = false },
– close virtual_text
{
"neovim/nvim-lspconfig",
opts = {
diagnostics = {
virtual_text = false,
},
},
},
– add symbols-outline
–{
– "simrat39/symbols-outline.nvim",
– cmd = "SymbolsOutline",
– keys = { { "<leader>cs", "<cmd>SymbolsOutline<cr>", desc = "Symbols Outline" } },
– config = true,
–},
– add more treesitter parsers
{
"nvim-treesitter/nvim-treesitter",
opts = {
ensure_installed = {
"bash",
"c",
"cpp",
"json",
"lua",
"python",
},
},
},
– add any tools you want to have installed below
{
"williamboman/mason.nvim",
opts = {
ensure_installed = {
"clangd",
"pyright",
"lua-language-server",
"json-lsp",
},
},
},
– config nvim-tree
– {
– "nvim-tree/nvim-tree.lua",
– dependencies = {‘nvim-tree/nvim-web-devicons’},
– config = function()
– require("nvim-tree").setup({
– actions = {
– open_file = {
– quit_on_open = true,
– },
– },
– })
– end,
– },
}
4、运行nvim,在首界面菜单上可以看到lazy和lazy extra选项,在这两个里面找到outline,把它安装上(怎么安装,摸索一下)
5、正常使用
a、在需要阅读的代码总目录下运行
git init
git add .
如果代码本身上从git上取下来的,则忽略此步骤。因为lazy里的telescope配置有点问题,导致它找不到git就会报错,所以高低给它整一个
b、在代码总目录下运行下面这个脚本
#!/bin/zsh
#mac平台。linux平台需要改为/bin/bash
#本脚本用于生成compile_command.json,用于neovim+lsp+clangd阅读代码
#应该尽量使用编译工具链生成compile_command.json.
#只有在其他途径都难以获得时,才使用本脚本
#本脚本仅用于阅读代码,不能用于编译
#用法 https://www.bilibili.com/read/cv/gen_compile_commands.sh projectname
filename="xmake.lua"
projectname="fake_xmake"
rm -rf \(filename</em></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span><em style="font-size:17px;" data-v-2505e99a>rm -rf compile_command.json</em></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span><em style="font-size:17px;" data-v-2505e99a>touch \)filename
touch .git
#echo "set_project("\(1")" >> \)filename
echo "set_project("\(projectname")" >> \)filename
echo "set_xmakever("2.7.9")" >> \(filename</em></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span><em style="font-size:17px;" data-v-2505e99a>echo "set_version("1.0.0")" >> \)filename
#echo " target("\(1")" >> \)filename
echo " target("\(projectname")" >> \)filename
echo " set_kind("binary")" >> \(filename</em></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span><em style="font-size:17px;" data-v-2505e99a>echo " set_targetdir("https://www.bilibili.com/read/cv/build")" >> \)filename
echo " add_files("https://www.bilibili.com/read/cv/.c")" >> \(filename</em></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span><em style="font-size:17px;" data-v-2505e99a>echo " add_files("https://www.bilibili.com/read/cv/.s")" >> \)filename
#echo " add_files("https://www.bilibili.com/read/cv/.cpp")" >> \(filename</em></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span><em style="font-size:17px;" data-v-2505e99a>#echo " add_files("https://www.bilibili.com/read/cv/.cxx")" >> \)filename
find . -iname ".h" -o -iname ".hpp" -o -iname "*.hxx" |
xargs -o dirname |sort|uniq|
while read dir_name ;do
echo " add_includedirs("\(dir_name")";</em></p><p data-v-2505e99a data-v-5b474d2a><span style="font-size:17px;" data-v-2505e99a> </span><em style="font-size:17px;" data-v-2505e99a> done >> \)filename
xmake project -k compile_commands
这个基本的目的是给当前的所有代码组合一个虚假的编译脚本,方便解析
如果当前工程本身已经有makefile一类的,可以自行解决,而不遵照此脚本
做完上述两部,就可以在代码总目录下运行nvim了
常用快捷键:
<空格>e 打开/关闭文件列表
<空格>cs 打开/关闭outline(函数列表)
光标落在某个变量或者函数上按gd,跳转到定义处
Ctrl+o 跳回上一次位置
Ctrl+i 跳转到下一次位置
光标落在某个变量或者函数上按gr,显示调用/引用
<空格>ff 找文件
<空格>ss 当前文件找字符串
<空格>sS 全局字符串
<空格>sw 全局查找当前单词
窗口操作和窗口切换
搜索
编辑
代码不全
——-这些都是vim的基操

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/205135.html