首页 > 其他分享 >从零开始配置vim(26)——LSP UI 美化

从零开始配置vim(26)——LSP UI 美化

时间:2022-10-14 13:55:18浏览次数:40  
标签:26 set buf vim keymap UI true nvim

之前我们通过几个实例演示如何配置其他语言的lsp服务,相信各位小伙伴碰到其他的编程语言也能熟练的配置它对应的lsp服务。本篇讲作为一个补充,我们来优化一下LSP 相关的显示

配置 UI

原始的 lsp 显示有点素,我们使用插件对它进行一些美化,这里使用插件 lspsaga.nvim 。使用如下的代码进行安装

use{"glepnir/lspsaga.nvim"}

然后我们新建一个 plugin-config/lspsaga.lua 对它进行配置

local saga = require('lspsaga')
saga.init_lsp_saga()

该插件对 NeoVim 原生 LSP 显示做了一些更改,并提供了一些方便的命令来实现LSP 相关的功能。我们将它对应的功能绑定到快捷键上替换原有的 LSP 对应的快捷键

lsp_keybinds.set_keymap = function (bufnr)
    print("set lsp keymap")
    -- 跳转到声明
    vim.api.nvim_buf_set_keymap(bufnr, "n", "gd", "<cmd>Lspsaga peek_definition<CR>", {silent = true, noremap = true})
    -- 跳转到定义
    vim.api.nvim_buf_set_keymap(bufnr, "n", "gD", "<cmd>lua vim.lsp.buf.definition()<CR>", {silent = true, noremap = true})
    -- 显示注释文档
    vim.api.nvim_buf_set_keymap(bufnr, "n", "gh", "<cmd>Lspsaga lsp_finder<CR>", {silent = true, noremap = true})
    -- 跳转到实现
    vim.api.nvim_buf_set_keymap(bufnr, "n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>", {silent = true, noremap = true})
    -- 跳转到引用位置
    vim.api.nvim_buf_set_keymap(bufnr, "n", "gr", "<cmd>Lspsaga rename<CR>", {silent = true, noremap = true})
    -- 以浮窗形式显示错误
    vim.api.nvim_buf_set_keymap(bufnr, "n", "go", "<cmd>lua vim.diagnostic.open_float()<CR>", {silent = true, noremap = true})
    vim.api.nvim_buf_set_keymap(bufnr, "n", "gp", "<cmd>lua vim.diagnostic.goto_prev()<CR>", {silent = true, noremap = true})
    vim.api.nvim_buf_set_keymap(bufnr, "n", "gn", "<cmd>lua vim.diagnostic.goto_next()<CR>", {silent = true, noremap = true})
    vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>cd", "<cmd>Lspsaga show_cursor_diagnostics<CR>", {silent = true, noremap = true})
    vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>cd", "<cmd>Lspsaga show_line_diagnostics<CR>", {silent = true, noremap = true})
    vim.api.nvim_buf_set_keymap(bufnr, "n", "<leader>ca", "<cmd>Lspsaga code_action<CR>", {silent = true, noremap = true})
    vim.api.nvim_buf_set_keymap(bufnr, "v", "<leader>ca", "<cmd>Lspsaga code_action<CR>", {silent = true, noremap = true})
end

我们可以对比一下原生的 lsp 界面和 lspsaga 界面,我这里使用 gh 这个命令进行对比

在这里插入图片描述
在这里插入图片描述
我们可以看到它能显示更丰富的信息,而且我们可以根据显示快速跳转到对应位置。对于我们查阅代码也是一个大的提升

而且它还提供 code action 相关的功能。例如上面的截图中它在出现错误的一行代码的行号前以小灯泡的形式进行标记,体验类似与 VS Code。我们将光标放在对应位置,使用绑定的快捷键 <leader>ca 。它会显示出对应的修复方案
在这里插入图片描述
当然它的功能还不止于此,各位小伙伴可以去对应的官网上阅读相关文档,针对自己的需求进行进一步的配置

显示符号表

我们可以使用插件 symbols-outline 在窗口右侧显示当前 buffer 中出现的类、方法等符号,方便我们快速跳转到想去的地方。
该插件仅支持 NeoVim7,0 以上的版本。使用下面的代码进行安装

use {'simrat39/symbols-outline.nvim'}

还是额外的给它创建一个文件保存它的配置

require("symbols-outline").setup()

配置完成之后我们可以使用 :SymbolsOutline 命令来控制窗口的打开和关闭,为了方便我们可以绑定到一个快捷上

vim.api.nvim_set_keymap("n", "<leader>so", "<cmd>SymbolsOutline<CR>", {silent = true, noremap = true})

最终的效果如下图所示
在这里插入图片描述本章我们对之前的LSP 配置进行了一定程度的优化,优化了使用的体验。截止到当前文章我们已经完成了代码的高亮、跳转、语法分析、代码补全、错误提示以及修复建议的相关配置。关于LSP的相关配置已经结束了,下一篇我们将要讨论如何使用代码片段进一步减少我们编码时输入的字符数。请各位敬请期待

标签:26,set,buf,vim,keymap,UI,true,nvim
From: https://www.cnblogs.com/lanuage/p/16791394.html

相关文章

  • docker + xrfb-run + vnc:Docker里开虚拟屏幕运行带GUI程序
    进入一个平平无奇的ubuntu容器dockerrun-it--rm-p5900:5900ubunut:20.04安装X组件aptinstall-yxserver-xorgaptinstallxvfbaptinstallx11vnc以上,就安装完成......
  • vue+elementui+axios环境搭建
    1.去官网下载安装node.js,安装后用命令检测版本信息node-vnpm-v2.安装vue环境#安装淘宝npmnpminstall-gcnpm--registry=https://registry.npm.......
  • .net maui拨打电话
    Platforms》Android》AndroidManifest.xml中加配置<manifestxmlns:android="http://schemas.android.com/apk/res/android"> <applicationandroid:allowBackup="true"......
  • C++ generate and quick sort in template
    #pragmaonce#include<iostream>#include<random>#include<algorithm>usingnamespacestd;random_devicerd;mt19937_64mt(rd());template<typename......
  • SHFB-Sandcastle Help File Build vs文档生成工具安装及配置
    SHFB-SandcastleHelpFileBuildvs文档生成工具安装及配置1该软件使用较简单,列出重要步骤,部分省略2软件安装2.2.1安装包SHFBGuidedInstaller_2014.5.31.0.zip......
  • layui 下拉菜单被父级元素overflow-y:scroll遮挡显示不全
        提供一种解决思路,将下拉菜单的position设为fixed<formid="form"class="layui-form"><divstyle="overflow-y:scroll;height:200px;width:300px;......
  • 装机工具GUI
    依赖文件地址https://wwm.lanzouw.com/iUEbh0152gte#SingleInstanceForce#NoEnvSetRegView64SetBatchLines-1SendModeInput#Persistent;强制以ANSI版本管理......
  • pc从arduino获取传感器的数据
    主代码,要log4ahk库#include<log4ahk>#NoEnvSendModeInputSetWorkingDir%A_ScriptDir%ARDUINO_Port=COM3ARDUINO_Baud=115200ARDUINO_Parity=N......
  • 15、vue+elementUI
    设置动态路由导航栏点击高亮点击查看代码<template><el-containerstyle="height:500px;border:1pxsolid#eee"><el-asidewidth="200px"style="bac......
  • ElementUI
    目录引入Element完整引入按需引入全局配置Loading加载动画element-Ui级联选择器选项封装绑定数据封装API:https://elemefe.github.io/element-react/#/zh-CN/quick-sta......