Skip to content

📜我的Vim和Neovim配置 | My Vim & Neovim config

License

Notifications You must be signed in to change notification settings

NewComer00/my-vimrc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

my-vimrc

我的Vim和Neovim配置
My Vim & Neovim config


.vimrc .vimrc.fast init.vim
image image image


环境需求

操作系统

目前测试了Windows >= 10Ubuntu >= 18.04系统,
我手头上没有Mac电脑,所以暂时没有适配macOS

应用程序版本

如果你习惯使用Vim,请保证版本号 Vim >= 7.3.1058
如果你习惯使用Neovim,请保证版本号 Neovim >= 0.10,尽量使用最新版本。

版本号低于要求时,可能会有部分功能无法正常使用。

其它依赖

本套配置使用了插件管理器junegunn/vim-plug,需要互联网连接git命令方可下载、安装插件。

若您所在的环境无法访问互联网或无法安装git,可将配置文件开头MY_VIMRC_BASIC变量的值设置为1。配置生效后仅保留基本功能,所有涉及到插件的功能将不可用。

主要功能

  • 目录文件树、命令行、文件历史版本管理、底部状态栏、粘贴板历史、代码标签树、文件和内容的模糊检索、代码格式化、代码补全与跳转(Neovim)、代码调试(Neovim)等。
  • 本套配置中,Vim的定位是增强版的文本编辑器而非IDE,追求兼容性与开箱即用;Neovim追求文本编辑器的新功能,可以承担IDE的一部分功能,但也不能完全取代IDE
  • 如果需要在嵌入式设备上配置Vim,或者发现.vimrc配置导致Vim打开文件缓慢、浏览文件时卡顿,可以使用精简版的.vimrc.fast配置文件。精简版的配置保留了大部分主要功能,并使用了更加轻量的插件。

配置我的Vim

Vim Logo

使用完全版配置.vimrc

切换路径至本仓库目录下,复制本仓库的.vimrc作为用户的Vim默认配置文件。

cp ./.vimrc ~/.vimrc

配置中使用了vim-plug作为Vim的插件管理器。首次运行配置过的Vim时,Vim会自动下载并安装插件管理器,并自动安装一系列插件。
主要功能插件的快捷键是<F2> ~ <F5><F7> ~ <F9>。安装完毕后重新进入Vim,即可按动快捷键查看插件是否工作正常。

⚠️注意:

  1. 如果插件下载安装进度过慢或显示某些插件安装失败,请退出Vim,然后尝试重新打开Vim输入命令:PlugInstall来下载安装这些插件。
  2. 配置文件默认使用加速网站来加快对github的访问,如需更换回原始的github网址,请更改配置文件中的GITHUB_RAWGITHUB_SITE变量值,将被注释掉的变量值还原。在改变网址后所有已安装插件都需要更新,输入命令:PlugClean:PlugInstall来重新下载安装插件。
  3. 如果您所在的环境无法访问互联网或无法安装git,可将配置文件开头MY_VIMRC_BASIC变量的值设置为1。配置生效后仅保留基本功能,所有涉及到插件的功能将不可用。

使用精简版配置.vimrc.fast

精简版的配置目标是——首先保证Vim的启动速度和使用流畅性,其次添加方便用户的功能。精简版配置删去了一些不必要的插件,并且使用了更加轻量的插件。使用精简版配置后,Vim会拥有飞快的启动速度,用户将获得流畅的编辑体验。

切换路径至本仓库目录下,复制本仓库的.vimrc.fast作为用户的Vim默认配置文件。

cp ./.vimrc.fast ~/.vimrc

安装插件等操作与完全版配置相同。精简版配置中默认没有占用<F5>功能键,其它功能键的分布与完全版一致。

配置我的Neovim

Neovim
Neovim编辑器是对传统Vim编辑器的重构。Neovim拥有着强大的:

  • 可扩展性——几乎所有主流语言都可以轻松访问Neovim的API,因此大家能够很容易地编写它的插件。Neovim对lua语言的内建支持使得插件可以飞速运行,这让流畅的代码补全和语法高亮等功能成为可能。
  • 可用性——Neovim修缮了Vim过时的默认配置(Neovim定制了一套自己的新默认配置),并添加了现代编辑器的新功能,如现代GUI、异步加载和终端模拟器等。

安装Neovim

本仓库的Neovim配置文件需要比较新的Neovim版本,大多数的包管理器软件源尚未更新该版本,因此需要遵循官方文档手动安装。

对于x86_64架构的Linux系统,执行如下操作来下载Neovim的可执行文件,下载后应当可以直接运行Neovim。

🟨展开安装步骤,适用于x86_64架构的Linux系统
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage
chmod u+x nvim.appimage
./nvim.appimage

此时Neovim应当开始运行。

nvim.appimage是Neovim的启动程序,可以将其改名为nvim放置在/usr/bin/目录下(需要sudo权限。/usr/bin/目录应当存在于$PATH中,操作后所有用户均可使用nvim命令)。

chmod +x nvim.appimage
sudo mv ./nvim.appimage /usr/bin/nvim

或改名为nvim放置在~/.local/bin/目录下(无需sudo权限。~/.local/bin/应当存在于$PATH中,操作后仅当前用户可使用nvim命令)。

mv ./nvim.appimage ~/.local/bin/nvim

💡如果nvim.appimage执行失败(在确认文件已经完整下载后,仍然执行失败),可以手动从安装包里解压Neovim相关文件到本地。

./nvim.appimage --appimage-extract
./squashfs-root/AppRun --version

如果要全局安装(需sudo权限),先对相关文件进行移动,再将可执行文件软连接到系统二进制文件目录下,命名为nvim。操作完成后,使用nvim命令便可以启动Neovim。

sudo mv squashfs-root /
sudo ln -s /squashfs-root/AppRun /usr/bin/nvim
nvim

💡如果没有sudo权限,可以仅对当前用户安装Neovim。对Ubuntu系统而言,可以将程序数据移动至当前用户$HOME下的.local/目录(这是Ubuntu默认用于存放当前用户应用数据的位置);然后将可执行文件软连接至~/.local/bin/nvim~/.local/bin/目录是Ubuntu系统默认用于存放当前用户可执行文件的位置,并应当默认存在于当前用户的$PATH中)。

mv squashfs-root ~/.local/
ln -s ~/.local/squashfs-root/AppRun ~/.local/bin/nvim
nvim

配置Neovim

切换路径至本仓库目录下,复制本仓库的init.vim作为用户的Neovim默认配置文件。
在Linux系统上,应当将Neovim配置文件init.vim放置于~/.config/nvim/目录

mkdir -p ~/.config/nvim/
cp ./init.vim ~/.config/nvim/init.vim

对于Windows系统,用户需要将Neovim配置文件init.vim放置于~\AppData\Local\nvim\目录

# 使用PowerShell
mkdir "~\AppData\Local\nvim\"
cp .\init.vim "~\AppData\Local\nvim\init.vim"

在终端输入nvim进入Neovim,此时将自动开始下载插件管理器plug.vim。下载完毕后Neovim会报告一系列插件未找到的错误,这是正常现象。按下大写的G跳转到信息末尾,即可自动安装所有插件。

主要功能插件的快捷键是<F2> ~ <F9>。安装完毕后重新进入Neovim,即可按动快捷键查看插件是否工作正常。

⚠️注意:

  1. 如果插件下载安装进度过慢或显示某些插件安装失败,请退出Neovim,然后尝试重新打开Neovim输入命令:PlugInstall来下载安装这些插件。
  2. 配置文件默认使用加速网站来加快对github的访问,如需更换回原始的github网址,请更改配置文件中的GITHUB_RAWGITHUB_SITE变量值,将被注释掉的变量值还原。在改变网址后所有已安装插件都需要更新,输入命令:PlugClean:PlugInstall来重新下载安装插件。
  3. 如果您所在的环境无法访问互联网或无法安装git,可将配置文件开头MY_VIMRC_BASIC变量的值设置为1。配置生效后仅保留基本功能,所有涉及到插件的功能将不可用。

主要快捷键

✅按键的描述方式

  • <F2>表示短促地按一下F2功能键。
    有些电脑的功能键需要先按住fn键才能启用,建议设置成不需要按fn键就能直接用。
  • <C-p><C-P>都表示先按住Ctrl不松手,再直接按下键盘上的p键。

<F2> 文件浏览器

以文件树的方式查看当前目录。可以在其中打开/删除/新建文件等。再按一次快捷键可关闭窗口。


<F3> 系统终端

在编辑器内部打开一个系统终端。再次按下该快捷键可隐藏或关闭此终端窗口。

🟨展开详细说明

Vim完全版配置

  • 若当前Vim原生支持终端功能(:echo has('terminal')打印返回值为1),则使用voldikss/vim-floaterm插件。

    • 直接按下<F3>后,一个系统终端会出现在界面下方。终端内部的操作方式和系统原生终端一致,支持Tab命令补全,上下翻阅历史记录等操作。
    • 先按下某个数字键再按下<F3>,会开启一个新的终端,不同编号的终端彼此独立。
    • 同一时间只能显示一个终端,其余的自动被隐藏。被隐藏的终端里运行的程序不会被打断。
    • 无论当前位于哪一个编号的终端,再次按下<F3>都可隐藏当前终端窗口。被隐藏的终端里运行的程序不会被打断。
  • 若当前Vim不支持终端功能,则使用Shougo/vimshell.vim插件。该插件可以在Vim中模拟一个终端窗口。

    • 🟨本插件在安装时需要调用makeg++等命令来生成所需要的库,请事先安装相关的编译工具。
    • 支持Tab命令补全,<C-P>上翻历史记录,<C-N>下翻。
    • 再次按下<F3>可隐藏当前终端窗口,终端内运行的程序不会被打断。

Vim精简版配置

  • 若当前Vim原生支持终端功能(:echo has('terminal')打印返回值为1),则按下<F3>后界面下方会出现一个新的终端窗口。再次按下<F3>可关闭此终端窗口。

    • 🟨终端被关闭时,里面运行的程序会被终止。
  • 若当前Vim不支持终端功能,按下<F3>后会自动执行Vim的:shell命令,屏幕下方会出现一行提示。

    • 此时按任意键即可离开Vim,进入终端。
    • 使用完毕后,在终端内按下<C-D>或执行exit命令,即可结束终端,回到Vim。
    • 🟨终端被关闭时,里面运行的程序会被终止。

Neovim

使用akinsho/toggleterm.nvim插件。

  • 直接按下<F3>后,一个系统终端会出现在界面下方。终端内部的操作方式和系统原生终端一致,支持Tab命令补全,上下翻阅历史记录等操作。
  • 再次按下<F3>可隐藏当前终端窗口,终端内运行的程序不会被打断。
  • 先按下某个数字键再按下<F3>会开启一个新的终端,不同编号的终端彼此独立。不同终端可以同时分屏显示。
  • 按下<Esc>,然后按数字键再按下<F3>,可隐藏指定编号的终端窗口。被隐藏的终端里运行的程序不会被打断。

<F4> 文件历史版本

展示当前文件撤销和重做的历史记录。历史记录可以分叉,并且可以随时将文件内容回退或前进到选定历史版本。再按一次快捷键可关闭窗口。


<F5> 底部状态栏

开启或关闭底部状态栏(默认开启)。状态栏可以显示当前的Vim模式与当前文件的详细信息,如行列号/文件路径/编码/当前按键等。再按一次快捷键可切换状态栏的开关状态。


<F6> 【Neovim】代码调试器

仅适用于Neovim。打开代码调试器,对当前脚本或指定程序进行调试。再按一次快捷键可关闭窗口。

  • 🟨本插件会调用系统中相应的代码调试工具,如gdb(需要安装GCC) pdb(需要安装Python)等,满足依赖后该插件即可调试对应的代码。

<F7> 粘贴板历史

列举最近在编辑器内部复制的所有内容。输入数字或双击对应行,即可粘贴相应内容。再按一次快捷键可关闭窗口。


<F8> 代码标签树

分析并展示当前代码文件的所有标签(指函数/变量/包含文件/宏等),依赖于外部ctags程序。鼠标双击/键盘回车某个标签,即可跳转至标签定义位置。再按一次快捷键可关闭窗口。

  • 🟨本插件需要提供ctags程序方可工作,ctags可通过包管理器安装。ctags命令一般由universal-ctags包和exuberant-ctags包提供,该插件同时兼容两者,但建议安装仍在更新的universal-ctags

<F9> 模糊检索器

快速对文件名/文件内容/标签等信息进行模糊检索。无须记住整个文件路径,只需输入文件路径和文件名的几个字母,即可交互式地进行查找。再按一次快捷键可关闭窗口。

🟨展开详细说明

Vim完全版配置

基于ctrlpvim/ctrlp插件。默认状态下为文件名查找模式,输入大致的文件路径和名称即可进行模糊查找。方向键选择查询结果,回车键打开选择的文件。<C-f><C-b>切换查找的类别(files文件/tags标签等)。
若要查询tags标签,需要在当前目录下提供ctags生成的标签文件。在项目根目录下执行ctags -R .即可生成整个项目的tags文件。

  • 🟦默认在当前工作目录下进行查找。如需查询其他目录下的内容,可手动输入命令:CtrlP 目录名
  • 🟦额外安装文件内容检索工具rgag,可提高本插件的检索效率。两者之中rg的效率略高于ag

Vim精简版配置

基于mileszs/ack.vim插件。按下<F9>后,在Vim界面下方的命令行中输入要查找的文件名称(名称的一部分也可)或“grep正则表达式”。输入完毕后按下回车键,即可在当前工作目录下搜索指定文件。

  • 🟨需要额外安装文件内容检索工具ag,才能正常使用此功能。
    rg的文件搜索接口和本插件不兼容,所以这里用效率稍逊一些的ag
  • 🟦默认在当前工作目录下进行查找。如需查询其他目录下的内容,可在目标文件后写明搜索目录,如:AckFile! 搜索目标 搜索目录

Neovim

基于nvim-telescope/telescope.nvim插件。<F9>进入后只需输入文件路径和文件名的几个字母,即可交互式查找文件位置。

  • 🟦默认在当前工作目录下进行查找。如需查询其他目录下的内容,可手动输入命令:Telescope find_files search_dirs=目录名
  • 🟦额外安装文件内容检索工具rg和文件位置搜索工具fd,可提高本插件的检索效率。

辅助快捷键

✅按键的描述方式

  • <Leader>t表示先短促地按一下反斜杠\(即Leader键),紧接着再短促地按一下小写的t
    两次按键间隔要短,不然编辑器会认为这是两次不相关的输入。
  • <Leader>ve表示依次快速按一下反斜杠\、小写的v和小写的e。按键间隔要短。
  • F(大写F)表示先按住Shift不松手,再按下小写的f,此时输出大写的F
  • <Leader>F表示先短促地按一下反斜杠\,紧接着再短促地按一下大写的F(按Shift不松手并按f)。
  • cY表示先短促地按一下c,紧接着再短促地按一下大写的Y

<Leader>ve 编辑配置文件

快速打开并编辑Vim/Neovim配置文件。打开的配置文件位于一个新的标签页中。

<Leader>vs 保存并更新配置

保存当前已打开的所有可写文件,并使Vim/Neovim配置马上生效。

<Leader>vi 安装插件

先保存并更新配置(若配置文件有错误,忽略报错),然后安装配置文件中新列举的插件。

如果你需要引入某个新插件,可以先在配置文件的插件列表里添加你的插件信息,然后使用此快捷键下载安装对应的新插件到电脑。

<Leader>vc 删除插件

先保存并更新配置(若配置文件有错误,忽略报错),然后删除配置文件中未列举的插件。

如果你不再需要某个旧插件,可以先在配置文件中删除插件列表里的对应那一行,然后使用此快捷键删除电脑上的旧插件本体。

<Leader>vu 更新插件

先保存并更新配置(若配置文件有错误,忽略报错),然后更新配置文件中已列举的插件。

<Leader>vt 测量启动时间

测量Vim/Neovim的启动时间,并列举出各环节的启动耗时。


cY 复制行到系统剪贴板

这里往下的四个快捷键都与系统剪贴板相关,其中cYcy快捷键用起来非常方便,强烈推荐

cY的用法和效果类似于Vim中的yy,用来复制Vim当前行的内容到系统剪贴板。在Vim里复制成功后,我们可以将文字内容粘贴到操作系统的其它程序中(如浏览器等)。

🟨展开详细说明
  • 🟨在使用系统剪贴板相关的功能前,需要安装哪些依赖呢?

    1. 如果你正在使用Windows版本的gVim或Neovim——没问题!请拿好你的cYcy快捷键~
      如果你的电脑上拥有PowerShell 5.1或更高,那么你可以使用cYcycPcp全部四个快捷键,好好享受属于你的Vim时光吧!

    2. 如果你正在某个终端模拟器中使用Vim(无论使用的是本地的Vim还是SSH远程服务器的Vim),不妨看一看这张表~
      如果你使用的终端模拟器支持OSC52功能——恭喜你!你可以尽情使用cYcy快捷键,不需要安装任何其它依赖!
      (Windows Terminal和iTerm2都支持,但Linux上的GNOME Terminal尚未支持)

    3. 如果你正在通过SSH连接Linux机器——请确保Linux端SSH服务器配置/etc/ssh/sshd_config打开了X11转发功能X11Forwarding yes
      如果X11转发功能已经打开,我们可以在Linux上安装XSel,XSel能通过X11转发来远程控制Linux的系统剪贴板。
      安装完毕后,在本地使用ssh -X ...命令连接Linux机器(-X表示本次连接允许X11转发),在Linux终端里打开Vim即可使用cYcycPcp全部四个快捷键~

    4. 如果你正在Linux系统的图形界面终端里直接使用Vim——以Ubuntu的GNOME Terminal为例,只需要安装wl-clipboard包即可使用cYcycPcp全部四个快捷键~

cy 复制指定内容到系统剪贴板

复制Vim的指定内容到系统剪贴板,用法类似于Vim的“复制”快捷键y

  • 如果需要复制当前行和下两行的内容,只需要依次按下cy2j即可。
  • 如果需要复制选定区域的内容,请先使用光标或者“Visual操作”划定要复制的范围,然后依次按下cy即可。

cP 粘贴系统剪贴板内容到下一行

获取系统剪贴板的内容,然后将其粘贴到Vim当前行的下一行。用法类似于p

  • 🟨在Windows上粘贴非ASCII字符时,可能会粘贴为乱码。Windows系统同时使用多套不同的字符编码,所以在粘贴时可能会引起乱码。
  • 🟦不建议使用此快捷键,建议通过终端模拟器自身提供的方式来粘贴内容,如<C-S-V>(适用于Windows Terminal、Linux GNOME Terminal等)或<S-Ins>(适用于Git Bash、Cygwin、MSYS2等)。

cp 用系统剪贴板内容替换指定内容

获取系统剪贴板的内容,然后用其替换Vim文中的指定内容,用法类似于Vim的“删除”快捷键d

  • 可以理解为“先删除文中的指定内容,再粘贴系统剪贴板的内容到该位置”。
  • 额外的注意要点和cP相同。不建议使用此快捷键

<Leader>l 空白字符开关

展示/隐藏空白字符,按多次可在展示/隐藏间来回切换。


<Leader>p 粘贴模式开关

进入/退出粘贴模式。在粘贴模式下,自动缩进和一些插件功能会自动关闭。对于Vim来说,需要从外部(如博客等)粘贴内容进入编辑器时,如果内容包含复杂的换行和缩进,建议先切换成粘贴模式再粘贴,以避免错误激活自动缩进和插件功能。按多次可在进入/退出粘贴模式间来回切换。


<Leader>t 制表符/空格切换

<Tab>的输入在空格和制表符\t之间切换,本配置文件默认配置<Tab>的输入为四个空格。


<Leader>f 代码局部格式化

美化代码的指定行/块。需要外部的软件支持。

<Leader>F 代码全局格式化

美化整个代码文件。需要外部的软件支持。

<Leader>s 删除多余空格

删除所有多余的空格。在行尾多余的空格会被红色高亮显示,该操作可以快速删除这些多余空格。

  • 🟨在某些语言(如Markdown)的语法中,行尾空格是有实际语法意义的,这种情况下请不要轻易使用本快捷键。

<Leader>a 检索光标处单词

检索当前光标处单词(应该会用下划线标出)在其它文件中出现的位置。

🟨展开详细说明

Vim完全版配置

基于mileszs/ack.vim插件。

  • 🟨需要额外安装文件内容检索工具rgag,才能正常使用此功能。两者之中rg的效率略高于ag
  • 🟦如果使用rg作为检索工具,可以进一步提高<Leader>a<Leader>A的检索速度。但rg文件搜索接口mileszs/ack.vim插件不兼容,我们将无法使用该插件提供的“文件检索”功能。
    在Vim完全版配置中,我们使用ctrlpvim/ctrlp插件来完成“文件检索”,因此无需在意使用rg带来的副作用。

Vim精简版配置

基于mileszs/ack.vim插件。

  • 🟨需要额外安装文件内容检索工具ag,才能正常使用此功能。
    rg的文件搜索接口和该插件不兼容(见Vim精简版配置的<F9>功能),所以这里我们用效率稍逊一些的ag

Neovim

基于nvim-telescope/telescope.nvim插件。

  • 🟨需要额外安装文件内容检索工具rg,才能正常使用此功能。

<Leader>A 检索给定单词

检索给定单词在其它文件中出现的位置。按下此快捷键后,输入要查找的内容,会返回该内容在其它文件中出现的位置。相关该功能的依赖需求同上。


<Leader>d LSP代码诊断开关

【Neovim】展示/隐藏LSP的代码诊断信息。


更多关于快捷键的信息,请见配置文件最后的hotkeys部分。

【Neovim】代码补全、内容跳转等

🔍LSP 语言服务器协议

语言服务器协议(Language Server Protocol,简称LSP)是由微软等机构,为了统一不同编辑器上各种语言的代码补全、内容跳转等功能,而提出的协议
在过去,每个不同的编辑器(或IDE)都需要编写一套自己的业务逻辑来支持各种编程语言的代码补全、内容跳转等功能——假如市面上有m个编辑器(或IDE),每个都要支持n种编程语言,那就一共需要编写m*n套业务逻辑,来实现不同编辑器上各种语言的代码补全等功能,非常麻烦。 No LSP vs LSP LSP简化了这个过程,协议约定——
先有一套LSP通信协议规范,我们只需要为这n种编程语言设计各自的语言服务器(服务器运行着针对自己语言的代码补全等算法),再为市面上的m个编辑器(或IDE)设计它们的客户端(客户端向服务器发送代码补全的请求,然后把收到的结果展示给用户),最后让服务器和客户端按照LSP规定通信。
同样的问题,LSP的解决方案只需要编写m+n套逻辑,统一而简洁。

🆅 安装本地LSP服务器并配置Neovim LSP客户端

Neovim提供了内置的LSP客户端,配合系统里下载好的LSP语言服务器,我们便可以在Neovim中体验到流畅的代码补全、内容跳转等功能。下面以配置Python3语言的代码自动补全等功能为例。

  1. 下载并安装Python3的LSP语言服务器。
    通过查询LSP语言服务器列表,我们采用pylsp程序包作为Python3的语言服务器。按照该项目的README.md说明,使用pip进行全套工具安装。安装完毕后,终端中pylsp -V命令应当可用。
pip install "python-lsp-server[all]"
  1. 在Neovim的init.vim配置文件中,注册pylsp语言服务器。
    在配置文件中找到Language Server Protocol (LSP) server configs一栏,在其中的MY_LSP_SERVER_LIST列表里向后添加一行新的语言服务器。保存后退出。
-- register your installed LSP server here
MY_LSP_SERVER_LIST = {
    其它语言服务器,
    "pylsp",
}
  1. 使用Neovim打开一个Python3代码文件,在Neovim中输入命令:LspInfo,此时应当显示Neovim的LSP客户端已经找到了本地的pylsp服务器。尝试输入代码,自动补全和函数签名等功能应当自动开始工作。

⌨️相关快捷键

按键 功能
gD 跳转到当前光标处词条(会用下划线标出)的声明位置。按<C-t>跳转回去。
gd 跳转到当前光标处词条的定义位置。按<C-t>跳转回去。
K 展示当前光标处词条的详细信息(如变量的类别信息/函数的签名/库的介绍等)。
gr 展示当前光标处词条的所有引用
gs 展示当前光标处函数实参对应的函数形参与函数签名
gi 展示当前光标处词条的所有实现
gt 跳转到当前光标处类别定义位置。按<C-t>跳转回去。

附:关于Vim的标签跳转

Vim虽然没有对LSP的内建支持,但仍原生支持代码的标签跳转功能。具体操作如下:

  1. 先在项目代码的根目录下执行ctags -R .,递归生成整个项目的tags标签文件。
  2. 接着在项目根目录下打开项目中任何一个代码文件,在要查询定义的词条处按下<C-]>
  3. 如果tags文件中包含了该词条的信息,此时Vim将跳转到该词条的定义处(可以跨代码文件跳转)。
  4. <C-t>,可回到上一次跳转前的位置。如果之前进行了多次跳转,按多次<C-t>可以一级一级地回去。

【Neovim】代码/程序调试

使用说明

按下快捷键呼出代码调试器后,调试器会根据当前打开文件的类型,自动选择合适的调试器。若无法自动选择,请按下数字键手动选择你想要的调试器。

若进入了gdb调试器,请先执行以下命令:

  1. file <待调试的二进制文件路径>,打开你要调试的二进制文件。
  2. b <函数名或断点行号>,给代码分配断点。
  3. r,开始调试程序,程序将在断点处停止。

执行上述命令后,界面将会自动分割为上下两个窗口,分别显示代码和gdb调试命令行。

✅按键的描述方式

  • <M-p>表示先按住Alt不松手,再按下小写的p

⌨️相关快捷键

在开启调试器后,处于Normal模式时,可以使用如下快捷键帮助调试。

按键 功能
<M-r> 开始运行或重新运行程序。
<M-n> 单步跳过。
<M-s> 单步进入。
<M-f> 执行到当前栈帧结束。
<M-c> 继续执行程序。
<M-t> 光标位于代码窗口时,执行程序到当前光标所在行前停止。
<M-b> 光标位于代码窗口时,给当前光标所在行打上/取消断点。
<M-q> 退出调试器。
<M-e> 光标位于代码窗口时,打印当前光标所在位置变量的值。