将neovim打造成IDE | neovim(vim) + lsp + gtags + xx

概述

最近疫情封锁在家无事,汇总整理下自己使用的neovim插件,以及这些插件都具备哪些功能:

功能 插件
1. 代码视图:文件和目录树,标签视图,状态栏 vim-airline-themes,vim-airline,nerdtree,taglist.vim,tagbar,
1.1 代码视图/语法高亮: sheerun/vim-polyglot, kanagawa ,vim-colorschemes
1.2 代码视图/代码显示: Yggdroot/indentLine(对齐线),luochen1990/rainbow(嵌套括号高亮)
1.3 代码高亮:高亮多个关键词 inkarkat/vim-mark
2. 代码跳转:
2.1 代码跳转/基于标签跳转: jsfaint/gen_tags.vim,
2.2 代码跳转/跨文件跳转:历史文件,子目录文件 yegappan/mru,junegunn/fzf,junegunn/fzf.vim
2.3 代码跳转/页面内跳转:行间、列间 easymotion/vim-easymotion
2.4 代码跳转/窗口跳转: nvim内置,tmux内置
3. 代码阅读:(代码定义,代码引用等) neovim/nvim-lspconfig,jsfaint/gen_tags.vim
3.1 代码编辑/自动补全: 内置补全功能,neovim/nvim-lspconfig
3.2 代码编辑/语法检查: neovim/nvim-lspconfig
3.3 代码编辑/代码片段: hrsh7th/nvim-cmp,L3MON4D3/LuaSnip,rafamadriz/friendly-snippets
3.4 代码编辑/代码搜索: rking/ag.vim

插件介绍

Nerdtree

概述

【左边栏显示目录结构】

image

技巧

  • 切换根目录:返回上级u;当前目录作为根目录C
  • 更新显示:r
  • 重命名文件:mm
  • 显示隐藏文件:I
  • 显示当前打开文件的位置::NERDTreeFind( 可以自定义快捷键 )
  • 开启和关闭窗口:NERDTreeToggle

vim-airline

概述

【顶栏部分显示已打开的文件,可以进行切换】

image

配置

罗列部分airline配置

" 设置切换tab的快捷键 <> + <i> 切换到第i个 tab
nmap <leader>1 <Plug>AirlineSelectTab1
nmap <leader>2 <Plug>AirlineSelectTab2
nmap <leader>3 <Plug>AirlineSelectTab3
nmap <leader>4 <Plug>AirlineSelectTab4
nmap <leader>5 <Plug>AirlineSelectTab5
nmap <leader>6 <Plug>AirlineSelectTab6
nmap <leader>7 <Plug>AirlineSelectTab7
nmap <leader>8 <Plug>AirlineSelectTab8
nmap <leader>9 <Plug>AirlineSelectTab9

tagbar

概述

tagbar是一个taglist的替代品,比taglist更适合c++使用,函数能够按类区分,支持按类折叠显示等,显示结果清晰简洁。

【右边栏显示文中的tag】

image

mru、fzf

概述

插件组合后可以实现文件间的选择和跳转:

  1. 打开并搜索最近的的文件
  2. 搜索当前目录的文件
  3. 过滤文件行中内容

image

fzf在bash中的使用,最常用的就是获取历史输入命令:ctrl + r --> 输入字符进行搜索匹配 --> ctrl + j/k进行上下切换 --> Enter 选中

image

配置

cd ~/.config/nvim/plugged/fzf
./install
全过程Y

上面方式配置完成后,在bash中也能使用

vim-easymotion

概述

可以在当前文件中快速跳转,行间跳转和单词间跳转。

  1. 默认的快捷键:行间跳转<leader><leader>+j/k; 单词间跳转<leader><leader>+w
  2. 输入上面按键后每行或每个单词会出现个索引符号,直接按对应的按键即可跳转到对应位置

image

gen_tags.vim

概述

该插件可以自动生成tags,使用gtags替代cscope了,可以查看代码的定义和应用。该组件特点

  1. 支持的语言多:该组件配置插件支持分析的语言达154多种
  2. 属于静态分析,可能存在多种引用关系,后面的nvim-lspconfig是动态分析,需要编译生成引用关系,会更智能

image

配置

安装gtags(gun global)软件

进入~/.config/nvim/gtags/执行install

安装位置:~/bin/gtags,~/.bashrc 和 ~/.config/nvim/init.vim

参考

vim中使用gtags - whilewell - 博客园 (cnblogs.com)

nvim-marks

概述

可以高亮多个单词,方便阅读代码
image

nvim-lspconfig

概述

lspconfig将neovim内置的lsp api进行封装(这里指的是lsp client,lsp server需要单独安装),从而可以通过简单的配置即可使用lsp。需要使用该功能还涉及很多其它的组件,这里就不赘述了。

lspconfig支持哪些功能:

  • go-to-definition
  • find-references
  • hover
  • completion:auto-completion和 snippets support,需要额外插件
  • rename
  • format:未研究
  • refactor:未研究

功能演示

查看定义,引用,帮助

image

代码片段

代码片段基于friendly-snippets 插件实现,有需要可以进行自定义

  1. 输入特定字符串,会匹配到自动补全中的snippet类型
  2. 然后<C-p/n>进行上下选择,或者进行模糊匹配输入选择
  3. 选中后<CR> 即回车键
  4. 然后在片段中按<tab>键, 实现不同位置内容的编辑

image

自动补全

nvim内置补全功能

preview


LSP实现补全功能

代码的补全是基于nvim-lspconfig 和 不同语言的lsp server实现的。

当前软件内部开启的有: clangd:C / pyright:Python / lua-language-server:lua,前面是lsp server后面是对应的语言,当打开c, pyhton和lua后就会自动在项目根目录(.git)打开lsp server。可以通过:LspInfo查看配置和运行状态

image

代码补全演示
image

代码诊断

python文件诊断功能

1. 通过']e'和'[e'实现诊断内容的上下跳转
2. 通过'<space> + jq' 获取所有diagnosetics的列表
3. 通过'<space> + jf' 打开diagnosetics内容

image

c文件诊断功能:增加错误的语法
image

重命名

下面演示了通过lsp将add_checksum替换成add_wsk,中间通过ag.vim和ag分别进行了搜索匹配,可以看到替换的过程非常的快捷

image

配置

pyhton语言

sudo npm i -g pyright

c语言

  1. 安装bear,用来生成clangd依赖的配置文件'compile_commands.json'
sudo apt-get install bear

bear 后面跟编译命令即可
bear $make
  1. 安装clangd,直接使用二进制即可,自制的软件包中已经包含

参考

Home · neovim/nvim-lspconfig Wiki · GitHub | lsp wiki

nvim-autopairs

概述

自动补齐括号,是通过lua重写后的autopairs。会自动补齐括号
image

参考

Vim括号/引号自动补齐插件auto-pairs的安装和使用方法 | vim教程网 (vimjc.com)

vim-translator

概述

翻译软件,默认中文翻译

  1. 默认翻译引擎:['bing', 'haici', 'youdao']
  2. 翻译快捷键:<leader> + w
    将neovim打造成IDE | neovim(vim) + lsp + gtags + xx

kanagawa

概述

vim 颜色主题,显示效果很不错
image

配置

针对tmux下colorscheme失效的问题需要如下配置:
~/.bashrc 中配置

alias tmux="TERM=screen-256color-bce tmux"

~/.tmux.conf 中配置

set -g default-terminal "xterm"

source ~/.bashrc重启tmux即可生效

软件安装

环境要求:Ubuntu 18.04 server版本

1.软件包下载路径

mkdir -p ~/.config/

git clone https://gitee.com/whilewell/nvim.git  ~/.config/nvim

注:部分软件已经内置到bin目录下,内置的软件有:

  • clangd
  • node
  • nvim
  • lua-language-server

2.安装依赖软件

安装 clangd 依赖(clangd是c代码的lsp).

sudo apt-get install bear

1. 生成方法
bear $build_cmd
2. nvim在'compile_commands.json'对应的目录下打开文件,

安装gen_tags依赖

# 1. 会将global默然安装到~/bin/gtags; 安装pyhton的语法解析包pygments
# 2. 并配置环境变量到~/.bashrc 和 ~/.config/nvim/init.vim

cd ~/.config/nvim/gtags
./install

安装lsp依赖: 不同的语言需要安装不同的lsp server

npm i -g pyright

安装fzf

cd ~/.config/nvim/plugged/fzf
./install
全过程Y

3.配置后的.bashrc

# 配置后的.bashrc
export PYTHONDONTWRITEBYTECODE=1
export PATH=~/.config/nvim/bin:$PATH
export GTAGSCONF=/home/wsk/bin/gtags/data/gtags/gtags.conf
export GTAGSLABEL=pygments
alias nv='nvim'

使用技巧

  • 查看绑定的快捷键:verbose imap <tab>

参考

原文链接: https://www.cnblogs.com/viiv/p/15729383.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    将neovim打造成IDE | neovim(vim) + lsp + gtags + xx

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/216009

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午3:02
下一篇 2023年2月13日 上午3:04

相关推荐