vim扩展与 neovim

发布于:2025-07-15 ⋅ 阅读:(15) ⋅ 点赞:(0)

使用 Vim 阅读 Linux 内核源码是一种高效、轻量级的方式。Linux 源码工程非常庞大,因此推荐你结合 Vim 的一些插件和功能来提高代码导航和阅读效率。

下面是一个完整的指南,帮你用 Vim 更高效地阅读 Linux 源码。


🔧 一、准备工作

1. 克隆 Linux 源码(可选)

git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux

🛠 二、配置 Vim

安装 VIM

sudo apt install vim

修改 ~/.vimrc 如下


call plug#begin('~/.vim/plugged')

" 主题
Plug 'morhetz/gruvbox'
Plug 'sainnhe/everforest'
Plug 'kaicataldo/material.vim'
Plug 'joshdick/onedark.vim'

"示例插件:NERDTree 文件浏览器
Plug 'preservim/nerdtree'

" 自动补全(推荐:C/C++ 用 coc.nvim)
Plug 'neoclide/coc.nvim', {'branch': 'release'}

Plug 'preservim/tagbar'                                " 显示函数、结构体列表
Plug 'tpope/vim-commentary'                            " 快速注释
Plug 'ludovicchabant/vim-gutentags'                    " 自动生成 tags 文件
Plug 'vim-airline/vim-airline'                         " 状态栏增强
Plug 'dense-analysis/ale'        " 静态分析/语法检查
Plug 'junegunn/fzf.vim'          " 模糊查找

call plug#end()

" 设置主题风格
"let g:gruvbox_contrast_dark = 'hard'
"let g:everforest_background = 'hard'
"let g:material_theme_style = 'darker'  " 其他风格: 'darker', 'lighter', 'palenight'
set termguicolors
set background=dark
colorscheme gruvbox
"colorscheme everforest
"colorscheme material
"colorscheme onedark

" 一些基础设置
syntax on
set number
set relativenumber
set autoindent
set tabstop=4
set shiftwidth=4
set expandtab
set clipboard=unnamedplus
"set mouse=a
filetype plugin indent on


if has("cscope")
    set cscopequickfix=s-,c-,d-,i-,t-,e-
    cs add cscope.out
endif

" 回车键:补全确认 or 正常换行
inoremap <silent><expr> <CR> pumvisible() ? coc#_select_confirm() : "\<CR>"

" Tab 和 Shift-Tab:切换候选项
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"

" 编译当前 C 文件并运行
nnoremap <F5> :w<CR>:!gcc % -o %< && ./%<<CR>

" 打开 Tagbar 显示结构
nnoremap <F8> :TagbarToggle<CR>

" 使用 coc 格式化
nnoremap <leader>f :call CocActionAsync('format')<CR>

" 快速插入行末注释
nnoremap <leader>c A // 

在 VIM 中

:PlugInstall


🔍 三、代码导航工具推荐

1. 安装 clangd(C/C++ 补全需要):

sudo apt install clangd

2. ctags(生成标签索引)

sudo apt install exuberant-ctags  # Ubuntu/Debian
ctags -R .

然后在 Vim 中可以使用:

  • Ctrl-]:跳转到定义
  • Ctrl-T:跳转回上一个位置
  • :tag function_name:跳转到某个函数定义

3. cscope(跨文件查找符号/函数调用)

sudo apt install cscope
cscope -Rbkq

在 Vim 中使用命令:

  • :cs find c FUNCTION:查找调用 FUNCTION 的地方
  • :cs find d FUNCTION:查找 FUNCTION 的定义
  • :cs find s SYMBOL:查找符号
  • :cs find t TEXT:查找文本

4. 插件建议

使用插件管理器(如 vim-plug):

安装插件后,在 Vim 中运行:

:PlugInstall

📘 四、使用技巧

1. 打开 Tagbar 查看结构(需安装 ctags

:TagbarToggle

2. 使用搜索查找符号

/gpio_request

3. 快速跳转文件

:e drivers/gpio/gpio.c

4. 使用 marks 和跳转命令

  • mA:标记位置 A
  • 'A:跳转到位置 A

🧠 五、阅读建议

  • init/main.c 开始,了解 Linux 启动过程。
  • 跟踪 start_kernel() 函数的调用。
  • 熟悉 include/linux/arch/ 下的结构。

✅ 六、总结

工具 功能
ctags 函数/变量跳转
cscope 函数调用、定义、引用
tagbar 显示当前文件的结构
fzf.vim 快速搜索文件/函数
gutentags 自动维护 tags 文件


基础快捷键(原生 Vim)

功能 快捷键 说明
缩进 >> / << 向右 / 向左缩进一行
编译 :make 使用 Makefile 编译
保存并编译 :w<CR>:make<CR> 保存后调用 make
跳到函数定义 gd 跳转到局部变量/函数定义(需要 tags 支持)
跳转上一个位置 Ctrl-o 类似“返回”
跳转下一个位置 Ctrl-i 类似“前进”
显示行号 :set number
自动缩进 ==gg=G 当前行 / 全文自动缩进

快捷键 功能
F5 编译并运行当前文件
<leader>f 格式化代码(配合 coc)
<F8> 切换 Tagbar(函数列表)
gd 跳转到定义(配合 coc)
<leader>c 在行末添加注释 //

NeoVIM

通过 apt 安装的 Neovim 版本通常非常落后,因为 Ubuntu/Debian 官方软件源更新滞后。


✅ 推荐的安装方式(获取最新版 Neovim)

方法一:使用官方 AppImage(简单可靠)

# 下载最新 AppImage(适用于所有 Linux)
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage

# 添加执行权限
chmod u+x nvim.appimage

# 移动到可执行路径
sudo mv nvim.appimage /usr/local/bin/nvim

方法二:使用官方 PPA(Ubuntu/Debian)

如果你不喜欢 AppImage,可以使用 Neovim 的官方 PPA:

sudo apt remove neovim -y
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update
sudo apt install neovim

这会安装开发分支版本(一般也很稳定)。


NvChad 安装

NvChad 是一个基于 Neovim 的高级配置框架,它为 Neovim 用户提供了一个即开即用、现代化、可自定义的开发环境,目标是将 Neovim 打造成一个像 VSCode 一样强大但更快的编辑器。


✅ NvChad 安装前提(Pre-requisites)

✅ 必须项:

  1. Neovim ≥ 0.11

    • 你当前的 Neovim 是通过 apt 安装的旧版本(0.9.5),需要升级
    • 推荐使用 AppImage 安装(见下方)。
  2. Nerd Font 字体(用于显示图标)

    • 推荐:JetBrainsMono Nerd Font

    • 注意不要用名字中带 Mono 的字体,例如:

      • JetBrainsMono Nerd Font
      • JetBrainsMono Nerd Font Mono
  3. Ripgrep(可选)

    • 用于 Telescope 快速搜索:

      sudo apt install ripgrep
      
  4. GCC 和 make

    • Linux 一般已装,没有的话:

      sudo apt install build-essential
      

🚀 安装 NvChad

https://nvchad.com/

删除旧配置:

rm -rf ~/.config/nvim ~/.local/state/nvim ~/.local/share/nvim

克隆 Starter 配置:

git clone https://github.com/NvChad/starter ~/.config/nvim
nvim

第一次启动时会自动下载 NvChad 主体 和插件(lazy.nvim 会处理)。


⚙️ 安装全部 LSP(首次运行后)

进入 Neovim 输入命令:

:MasonInstallAll

🧼 删除 .git 文件夹(可选)

rm -rf ~/.config/nvim/.git

🔄 更新插件

:Lazy sync

🔧 自定义配置

编辑:

nvim ~/.config/nvim/lua/custom/chadrc.lua

可改:

  • 主题(theme)
  • 插件
  • 语言服务器(LSP)
  • 其他 UI 行为

下载并解压了 JetBrainsMono Nerd Font,接下来只需 安装并配置你的终端使用它。下面是详细操作步骤,按你使用的操作系统来做即可:


🐧 Linux(如 GNOME Terminal / Alacritty / Kitty 等)

https://www.nerdfonts.com/font-downloads

✅ 步骤 1:安装字体

  1. 将解压出来的 .ttf 文件复制到本地字体目录:

    mkdir -p ~/.local/share/fonts
    cp JetBrainsMonoNerdFont-*.ttf ~/.local/share/fonts/
    
  2. 刷新字体缓存:

    fc-cache -fv
    

✅ 步骤 2:设置终端字体

🎨 GNOME Terminal(Ubuntu 默认终端)
  1. 打开终端 → 右上角菜单 → Preferences(首选项)
  2. 选择你的配置文件(如“Unnamed”)
  3. 关闭“使用系统字体”
  4. 从列表中选择 JetBrainsMono Nerd Font(注意不要选带 Mono 的)

🍎 macOS

  1. 双击 .ttf 字体文件,点“安装字体”按钮即可

  2. 打开你的终端(如 iTerm2):

    • iTerm2 → Preferences → Profiles → Text → Change Font
    • 选择 JetBrainsMono Nerd Font(不要选 Mono 结尾的)

🪟 Windows Terminal

  1. .ttf 文件右键 → 安装所有字体
  2. 打开 Windows Terminal → 设置 → 你在用的 Shell(比如 PowerShell、WSL)
  3. 外观 → 字体 → 选择 JetBrainsMono Nerd Font(不是 Mono)

🔍 如何确认字体生效?

在 Neovim 或终端里运行下面命令看是否有图标显示(⚙️、󰊠 等):

echo "  󰊠 󰲋   "

如果能看到图标而不是方框或乱码,说明 Nerd Font 设置成功!


更换终端主题取决于你使用的是哪种终端模拟器。下面是几个常见终端的更换主题方法,请根据你的实际使用环境选择相应的说明:


🐧 Linux 常见终端更换主题方法:

✅ 1. GNOME Terminal(Ubuntu 默认终端)

方法一:使用 [dconf + .bashrc / .zshrc 配色]
  1. 安装 gnome-terminal-themes

    bash -c  "$(wget -qO- https://git.io/vQgMr)"
    
  2. 跳出一个交互界面,选择你想要的主题,例如:DraculaGruvboxOne Dark 等等。

  3. 安装后在 Preferences 中切换使用即可。


✅ 2. Windows Terminal

  1. 打开设置(Ctrl + , 或手动点击右上角齿轮)

  2. settings.json 文件里找到 schemes 部分,添加新的配色方案

  3. 然后设置 "colorScheme": "你的主题名" 应用即可


🔍 你可以考虑的流行主题有:

  • Dracula(酷炫紫黑)
  • Gruvbox(柔和黄褐)
  • One Dark(VS Code 风格)
  • Solarized(经典护眼)
  • Catppuccin(高级奶茶风)


网站公告

今日签到

点亮在社区的每一天
去签到