Neovim+ctag浏览、编辑源代码

news2024/9/28 23:38:20

Neovim+ctag浏览、编辑源代码

一 配置安装vim及 ctags

vim应该可以不用装,直接装neovim,这里我是先装了vim再装的neovim

Ctags必须装,后面用neovim +telescope索引函数时才有效

vim复制系统粘贴板:vim输入模式下,按shift+insert即可

sudo apt-get install vim

sudo apt-get install ctags

2配置 ctags kernel源码目录在/home/yanhongfei/vimtest ,即为执行ctags -R的目录

sudo vim /etc/vim/vimrc

set tags=tags

set autochdir

3 配置vim

注:只对各个用户在自己的当前目录下的.vimrc修改的话,修改内容只对本用户有效,要想全部有效,可以修改/etc/vim/vimrc.

1.apt-get install vim-full

2.设置/etc/vim/vimrc加上下面语 :

“语法高亮度显示

syntax on

“去掉有关vi一致性模式,避免 前版本的一些bug和局限

set nocompatible

“显示行号

set number

“检测文件的类型

filetype on

“记录历史的行数

 set history=1000

“背景使用黑色

set background=dark

“vim使用自动对起,也就是把当前行的对起格式应用到下一行

 set autoindent

“依据上面的对起格式,智能的选择对起方式,对于类似C语言编

set smartindent

“设置Windows风格的C/C++自动缩进,第一行设置tab键为4个空格,第二行设置当行之间交错时使用4个空格

set tabstop=4

set shiftwidth=4

“设置匹配模式,类似当输入一个左括号时会匹配相应的那个右括号

set showmatch

“去除vim的GUI版本中的toolbar

set guioptions-=T

“在编辑过程中,在右下角显示光标位置的状态行

set ruler

“默认情况下,寻找匹配是高亮度显示的,该设置关闭高亮显示

set nohls

“使用此设置会快速找到答案,当你找要匹配的单词时,别忘记回车

set incsearch

“如果没有下列行,加上吧

if &term==”xterm”

set t_Co=8

set t_Sb=^[[4%dm

set t_Sf=^[[3%dm

Endif

4 cd /home/yanhongfei/vimtest/kernel

ctags -R

5 查看printf为例 , 执行vi -t printf

实际上用vim去索引代码时,发现很多无法正常跳转,后面用neovim是正常的。

  • 安装neovim及为安装lazy.nvim管理器做准备

2.1 用系统apt-get install neovim版本为0.6.1,需要升级neovim > 0.8.1,否则lazy装不上,需要手动更新

2.1.1 先卸载:apt remove neovim

2.1.2 在这个网站下载https://github.com/neovim/neovim/releases/tag/stable

Download nvim-linux64.tar.gz

2.1.3 解压到~/目录下

tar xzvf nvim-linux64.tar.gz

2.1.4 创建链接

cd /usr/local/bin/

sudo ln -s ~/nvim-linux64/bin/nvim ./nvim

2.2、需要升级git

2.2.1 增加ppa

sudo apt-add-repository ppa:git-core/ppa

sudo apt-get update

2.2.2、查看有什么软件可以更新

apt list --upgradable

可以看到左边红箭头,显示是最新的 git 2.41,而右边箭头是系统里装的 2.17.1 版本

image

2.2.3、安装最新版本

sudo apt-get install git

2.2.4、apt-cache 列出你系统里可安装版本

1.apt-cache madison

sudo apt-cache madison git

2.2.5.apt-cache policy

sudo apt-cache policy  git

2.3解决github连接返回443的问题

该问题一般由于IP设置问题导致,我们将重新编辑/etc/hosts.

PC端ping github.com

正在 Ping github.com [20.205.243.166] 具有 32 字节的数据:

测试ip为20.205.243.166

ubuntu修改/etc/hosts

20.205.243.166 github.com

  • 配置init.lua

1 在~/.config/nvim目录下新建议init.lua, 并新建议lua文件夹, 在lua文件夹下新建basic.lua(基本配置), theme.lua(主题,暂未配置), keybinding.lua(快捷键配置), plugins文件夹(用来放插件下载lua脚本)、plugins-config文件夹(用来配置插件)

1.1配置完文件目录如下,

yanhongfei@ubuntu:~/.config/nvim$ ls

init.lua  lazy-lock.json  lua

yanhongfei@ubuntu:~/.config/nvim$ ls lua/

basic.lua  keybinding.lua  plugins  plugins-config  theme.lua

yanhongfei@ubuntu:~/.config/nvim$ ls lua/plugins

plugin-bufferline.lua  plugin-catppuccin.lua  plugin-nvim-tree.lua  plugin-telescope.lua

yanhongfei@ubuntu:~/.config/nvim$ ls lua/plugins-config/

bufferline.lua  nvim-tree.lua

yanhongfei@ubuntu:~/.config/nvim$

1.2 init.lua配置如下,

yanhongfei@ubuntu:~/.config/nvim$ cat init.lua

--通过require函数导入lua脚本

require("basic")

require("theme")

--自定义快捷键

require("keybinding")

--安装lazy安装器

local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"

if not vim.loop.fs_stat(lazypath) then

    vim.fn.system({

        "git",

        "clone",

        "--filter=blob:none",

        "https://github.com/folke/lazy.nvim.git",

        "--branch=stable", -- latest stable release

        lazypath,

    })

end

vim.opt.rtp:prepend(lazypath)

--第一次安装lazy时调用下面的方法,(第一次还没有装插件,所以setup为空)装完后可以屏蔽

--require("lazy").setup()

--安装插件使用方法: require("lazy").setup(plugins, opts)

--主题插件 catppuccin.nvim

--下载插件

--屏蔽一个一个setup的方法,改成利用plugins目录统一安排,setup的参数变为setup("plugins")

--require("lazy").setup(

--    { "catppuccin/nvim", name = "catppuccin", priority = 1000 }

--)

require("lazy").setup("plugins")

--plugins配置

-- nvim-tree 配置 :h nvim-tree

require("plugins-config.nvim-tree")

-- bufferline 配置 :h bufferline-configuration查看插件支持的配置

require("plugins-config.bufferline")

--应用插件的配色

vim.cmd.colorscheme("catppuccin")

具体配置项参考附件

目前已实现:

1 catppuccin 插件配色

2 nvim-tree 左侧目录显示,可增删查改文件或文件夹

3 bufferline 顶部文件导航,未添加关闭按钮,其可配合moll/vim-bbye 这个插件实现,暂未做

4 telescope 目前已可实现文件搜索功能,但live-grep不行,需要安装fd rd插件,懒得折腾就没做了,事实上我觉得可以通过:term打开新窗口,再使用find+grep会更方便

安装完telescope后需执行:checkhealth telescope查看当前插件状态。

==============================================================================

telescope: require("telescope.health").check()

Checking for required plugins ~

- OK plenary installed.

- WARNING nvim-treesitter not found.

Checking external dependencies ~

- ERROR rg: not found. `live-grep` finder will not function without [BurntSushi/ripgrep](https://github.com/BurntSushi/ripgrep) installed.

- WARNING fd: not found. Install [sharkdp/fd](https://github.com/sharkdp/fd) for extended capabilities

===== Installed extensions ===== ~

后续写代码还可以装上代码补全插件,目前够用,暂时不处理了

Ctags -R 生成tags

nvim .打开内核代码目录

ALT +M 打开nvim-tree

CRTL + l 可在各个代码编辑页面之间跳转

CTRL + ww nvim-tree页面和代码页面之间跳转

:term 打开终端

空格+ ff 打开telescope搜索文件

最后附上一张效果图

附件:

neovim配置文件详情,安装nvim后更新资源-CSDN文库

参考链接https://www.cnblogs.com/youngxhui/p/17730417.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1333837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

四、UART_阻塞发送中断接收

1、开发环境 (1)Keil MDK: V5.38.0.0 (2)MCU: mm320163D7P 2、实验目的&原理图 2.1、实验目的 (1)上位机串口助手给MCU发送信息,MCU串口通过通过串口助手接收后,将接收到的内容通过串口助手发送到上位机。 (2)串口在whil循环中每隔1秒发送一次…

怎么使用jupter notebook并配置环境变量

有的时候需要使用Jupyter Notebook运行代码,Jupyter Notebook的主要特点: ① 编程时具有语法高亮、缩进、tab补全的功能。 ② 可直接通过浏览器运行代码,同时在代码块下方展示运行结果。 ③ 以富媒体格式展示计算结果。富媒体格式包括&…

社会人士可以考英语四六级吗?怎么考四六级

目录 一、社会人士能考英语四六级吗二、社会人士可以参加哪些英语等级考试第一.考个商务英语类证书第二.社会上比较认可的还有翻译证书第三.出国常用的英语凭证第四.职称英语.第五.PETS. 大学英语四六级是为提高我国大学英语课程的教学质量服务。那么社会人士能不能报考英语四六…

【UML】第12篇 序列图(1/2)——基本概念和构成

目录 一、什么是序列图(Sequence Diagram) 1.1 定义 1.2 主要用途 1.3 序列图和BPMN的区别和联系 二、序列图的构成 2.1 对象 2.2 生命线 2.3 消息 2.4 激活 序列图,是我个人认为的用处最多的一种图。产品和研发的同学,都…

java实现深度优先搜索 (DFS) 算法

度优先搜索(Depth First Search,DFS)算法是一种用于遍历或搜索图或树的算法。这种算法从一个节点开始,沿着一条路径尽可能深地搜索,直到遇到不能继续前进的节点时返回上一个节点,然后继续搜索其他路径。具体…

网络通信协议

WebSocket通信 WebSocket是一种基于TCP的网络通信协议,提供了浏览器和服务器之间的全双工通信(full-duplex)能力。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接&#xff…

算法通关村-番外篇排序算法

大家好我是苏麟 , 今天带来番外篇 . 冒泡排序 BubbleSort 最基本的排序算法,最常用的排序算法 . 我们以关键字序列{26,53,48,11,13,48,32,15}看一下排序过程: 动画演示 : 代码如下 : (基础版) class Solution {public int[] sortArray(int[] nums) {for(int i …

ArkUI - 状态管理

目录 一、State装饰器 二、自定义组件 三、Prop和Link、Provide和Consume 四、Observed和ObjectLink 五、页面路由 跳转模式 实例模式 使用步骤 一、State装饰器 这里涉及到两个概念 状态 和 视图 状态(State):指驱动视图更新的数…

【附三菱 MX OPC Server 6.04的安装包】MX-OPC下载以及用GX Works2和组态王进行仿真连接

使用MX-OPC来完成三菱和组态王的仿真连接。 文章目录 目录 文章目录 软件下载 1.OPC设置 2.GX Works 2 设置 3.GX Works 2 和OPC 连接测试 4.和组态王进行仿真连接 5.安装OPC后,GX Works2 无法打开 提示堆栈不足 6.收尾(组态王变量的删除&#xff0…

如何使用java来实现windows系统关机

可以使用Java代码来调用操作系统的命令行来实现Windows关机操作。具体步骤如下: import java.io.IOException;public class ShutdownWindows {public static void main(String[] args) {try {// 调用命令行执行关机命令Process process Runtime.getRuntime().exec…

Python - 深夜数据结构与算法之 Graph

目录 一.引言 二.图的简介 1.Graph 图 2.Undirected graph 无向图 3.Directed Graph 有向图 4.DFS / BFS 遍历 三.经典算法实战 1.Num-Islands [200] 2.Land-Perimeter [463] 3.Largest-Island [827] 四.总结 一.引言 Graph 无论是应用还是算法题目在日常生活中比较…

股市中的Santa Claus Rally (圣诞节行情)

圣诞节行情 Santa Claus Rally Santa Claus Rally 是指 12 月 25 日圣诞节前后股市的持续上涨这样一个现象。《股票交易员年鉴》的创始人 Yale Hirsch 于 1972 年创造了这个定义,他将当年最后五个交易日和次年前两个交易日的时间范围定义为反弹日期。 根据 CFRA Re…

OpenAI科学家Hyung Won Chung演讲精华版

文章目录 第一个观点:涌现第二个观点:如何扩大规模1、标记化2、嵌入3、计算4、评估(损失函数)5、反向传播 最近从Google跳槽到OpenAI的AI科学家 Hyung Won Chung 比较拗口,我就简称尚哥了 他最近做了一个技术演讲 …

GPU性能实时监测的实用工具

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

ElasticSearch入门介绍和实战

目录 1.ElasticSearch简介 1.1 ElasticSearch(简称ES) 1.2 ElasticSearch与Lucene的关系 1.3 哪些公司在使用Elasticsearch 1.4 ES vs Solr比较 1.4.1 ES vs Solr 检索速度 2. Lucene全文检索框架 2.1 什么是全文检索 2.2 分词原理之倒排索引…

Unity-Shader-渲染队列

Unity-Shader-渲染队列 渲染简介Unity中的几种渲染队列Background (1000)最早被渲染的物体的队列。Geometry (2000) 不透明物体的渲染队列。大多数物体都应该使用该队列进行渲染,也就是Unity Shader中默认的渲染队列。AlphaTest (2450) 有透明通道,需要进…

Python画皮卡丘

代码: import turtledef getPosition(x, y):turtle.setx(x)turtle.sety(y)print(x, y)class Pikachu:def __init__(self):self.t turtle.Turtle()t self.tt.pensize(3)t.speed(9)t.ondrag(getPosition)def noTrace_goto(self, x, y):self.t.penup()self.t.goto(…

Python - 深夜数据结构与算法之 Heap Binary Heap

目录 一.引言 二.堆与二叉堆介绍 1.Heap 堆 2.Binary Heap 二叉堆 3.HeapifyUp 添加节点 4.HeapifyDown 删除节点 5.Heap 时间复杂度 6.Insert & Delete 代码实现 三.经典算法实战 1.Smallest-K [M14] 2.Sliding-Window-Max [239] 3.Ugly-Number [264] 4.Top-…

机器学习或深度学习的数据读取工作(大数据处理)

机器学习或深度学习的数据读取工作(大数据处理)主要是.split和re.findall和glob.glob运用。 读取文件的路径(为了获得文件内容)和提取文件路径中感兴趣的东西(标签) 1,“glob.glob”用于读取文件路径 2,“.…

靠谱免费的MAC苹果电脑杀毒软件CleanMyMac X2024

您是否曾经为Mac电脑的性能下降、存储空间不足而烦恼?是否希望有一个简单而高效的解决方案来优化您的Mac系统?那么,我向您介绍一款非常出色的工具:CleanMyMac X。它能够轻松处理这些问题,并让您的Mac恢复到最佳状态。 …