当前位置: 首页 > news >正文

玉树州wap网站建设公司做试玩网站

玉树州wap网站建设公司,做试玩网站,网站 筛选功能,网站平台建设做好公司宣传文章目录 前言#xff08;劝退#xff09;neovim 安装neovim 配置配置文件位置第一个 hello world 代码拆分 neovim 配置正式配置 neovim基础配置自定义键位Lazy 插件管理器配置tokyonight 插件配置BufferLine 插件配置自动补全括号 / 引号 插件配置 前言#xff08;劝退劝退neovim 安装neovim 配置配置文件位置第一个 hello world 代码拆分 neovim 配置正式配置 neovim基础配置自定义键位Lazy 插件管理器配置tokyonight 插件配置BufferLine 插件配置自动补全括号 / 引号 插件配置 前言劝退 neovim 是一个现代化高扩展的 vim 编辑器 fork 版本适合程序员打造极致高效的开发环境。 在正式开始 neovim 配置之前我还是要劝退一下的。 很多人说使用 neovim 的都是变成高手但我认为能搞明白 neovim 一定是高手居多但不一定都是顶尖的大牛但起码技术一定不差也正因如此很多人使用使用 neovim 单纯是因为脑子一热导致最后不仅耽误了手头的工作还啥都没学会。要学习neovim建议先把 vim 的操作搞熟悉可以全程使用 vim 的语法做出一个完整的项目注意我说的只是语法而 vim 学习的曲线前期有点难度导致很多人也挂在了第一关所以 如果你编程能力不足那么请不要碰 vim / neovim 等任何需要大量自定义的编辑器。IDEA / VsCode 就够了。如果你对 折腾 这件事没有太大兴趣那么请不要碰 vim / neovim 等任何需要大量自定义的编辑器。IDEA / VsCode 就够了。虽然也有现成的 LazyVim但是我不建议这样做原因后面会讲。 neovim 安装 1github 上搜索 neovim在 Releases 中找到一个最近发的稳定版https://github.com/neovim/neovim/releases下载 安装一路 next 即可。 2打开终端输入 nvim test.txt 可以正常打开文本编辑器即表示安装成功 neovim 配置 配置文件位置 neovim 会在启动时加载 init.lua 文件当我们修改了配置文件之后重启 neovim 即可生效虽然也可以通过 :so 实现但是配置复杂了之后就不好用了 1init.lua 文件的位置在哪以下路径和lua文件如果不存在需要手动创建 Windows~/AppData/Local/nvim/init.lua~ 表示 C:\Users\${你的用户名}\Unix~/.config/nvim/init.lua 2你也打开终端输入 nvim 打开 neovim 编辑器然后输入 :vim.fn.stdpath(config) 来查看配置文件位置. : 表示 vim 中的命令模式 表示执行 lua 代码并输出结果当然你也可以通过 :lua 执行代码但是不会有任何输出结果vim.fn.stdpath(config) 表示答应配置文件的完整路径 输出结果如下 第一个 hello world 代码 1通过 nvim init.lua 编辑配置文件如下 2保存退出后输入 nvim 重新打开 neovim可以看到左下角的显示如下图表示配置生效。 拆分 neovim 配置 随着我们的配置不断增多全写到一个 init.lua 文件中肯定是不利于维护的因此我们将配置拆分成多个模块。 一个通用的做法如下 1在 init.lua 的同级目录下创建 lua 文件夹然后再 lua 文件夹下创建 module.lua 文件文件内容输入print(hello world)为了验证后续正确引入。 2那么就可以在 init.lua 中使用 require(module) 引入 module.lua 文件。 在 neovim 中打开文件的命令是:e filename因此在通过 nvim 创建 module.lua 之后直接可以通过 e: ./init.lua 打开 init.lua 文件 Pse 表示 edit编辑的意思。 在 init.lua 中使用 require(“module”)如下 3保存退出后再打开 nvim可以看到左下角 hello world 打印正常表示上述操作步骤正确。 Ps这里只是简单认识一下怎么拆分模块后续的操作步骤中会把上面演示的 module.lua 删掉包括 init.lua 中 require 也删掉开始正式配置 neovim。 正式配置 neovim 基础配置 1这里我习惯将基础配置放到 ~/AppData/Local/nvim/lua/core/basic.lua 中。 同样记得在 init.lua 中引入这个文件如下 2nvim 打开 basic.lua配置如下 -- 显示行号 vim.opt.number true -- 相对行号 vim.opt.relativenumber true-- 高亮当前光标所在行 vim.opt.cursorline true-- 将 tab 水平制表符转化成空格 vim.opt.expandtab true -- tab 长度设置成4个空格 vim.opt.tabstop 4 -- shiftwidth 设置成0可以避免换行后回车带来的 tab 长度不一致问题 vim.opt.shiftwidth 0-- 当 neovim 中打开的文件被其他程序修改了(例如idea)neovim 会自动加载 vim.opt.autoread truePswin 终端通过 cat 读取 lua 文件会中文乱码可以通过 Get-Content .\lua\core\basic.lua -Encoding utf8 来查看. 自定义键位 1这里先说一下neovim 向下是兼容通过 vimscript 配置自定义键位的但是我们既然使用 neovim还是建议使用 lua 进行统一化配置。 2自定义键位的 apivim.keymap.set(mode, lhs, rhs, opts) mode快捷键生效的模式. 不同模式用一个字母表示例如 n 表示普通模式、i 表示插入模式、c 表示命令模式…可以是 字符单一模式生效例如n表示在普通模式下生效或者是 table多模式生效例如{n, i}表示在普通模式和插入模式下都生效 lhs表示要改哪个键位. 如果是普通键位就直接写了.但如果要改 Ctrl a就要写成 C-a但如果要改 Alt a就要写成 A-a rhs表示要改成什么样子可以映射另一组按键或者一个 lua 函数opts是一个 table包含了对快捷键一些额外的配置 3案例一 vim.keymap.set(n, C-a, :lua print(hello world)CR, { silent true })在 normal 模式下生效.按下 Ctrl a 后会打印 hello world其中 CR 表示回车silent true 表示让快捷键 “静默执行”不显示执行过程中的命令或提示信息 演示如下 然后按下 Ctrl a 效果如下 4案例二如果想让快捷键在 插入模式 下也生效. 错误的写法如下有坑 vim.keymap.set({n, i}, C-a, :lua print(hello world)CR, { silent true })真的可以这样么思考一下因为我们在插入模式下直接按下 C-a他会替换成 :lua print(hello world)CR相当于直接把这段话直接写下来了模拟键盘输入:lua print(hello world)CR 的场景如下 正确的写法如下 vim.keymap.set({n, i}, C-a, Cmdlua print(hello world)CR, { silent true })Cmd 并不是一个具体的按键只表示进入命令模式。 此时你在 insert模式 按下 Ctrl a 虽然是正确的但是看不到效果因为在默认 neovim 会在右下加固定显示你当前的模式不过你也可以通过 :lua vim.opt.showmode false 关闭他然后在 insert 模式下按下 Ctrl a 就可以看到效果了 5rhs 也可以是一个函数例如如下 vim.keymap.set(n, C-a, function ()print(hello world) end, { silent true})这里写的是 lua 中的匿名函数使用 end 表示结尾 6 leader key 可以理解成在配置中定义了一个叫做 leader 的变量实现复用效果。 例如如下设置 leader key 为 空格当我在 normal 模式下按下 空格 a a就会打印 cyk 字符串。 vim.g.mapleader vim.keymap.set(n, leaderaa, :lua print(cyk)CR, { silent true})7正式配置创建 ~/AppData/Local/nvim/lua/core/keymap.lua 文件如下这里是我自己习惯的 vim.keymap.set(i, jk, esc, { silent true })vim.keymap.set(n, L, $, {silent true}) vim.keymap.set(v, L, $, {silent true})vim.keymap.set(n, H, ^, {silent true}) vim.keymap.set(v, H, ^, {silent true})最后在 init.lua 中引入如下 require(core.keymap)Lazy 插件管理器配置 1neovim 的插件一般都需要从 github 上手动 clone 并在 neovim 中引用。但是随着插件的逐渐增多这种方式会变得非常繁琐这就需要使用插件管理器来自动化这个过程。我使用 lazy 插件管理器进行配置。 lazy.nvim 是 Neovim 的一款现代插件管理器主打的是懒加载理念只有当我使用某个插件时才加载他从而极大的提升启动性能。 lazy.nvim 会读取 ~/AppData/Local/nvim/plugins/ 目录下的所有 lua 插件配置文件。常见的写法如下 return {插件名, -- 如 nvim-treesitter/nvim-treesittername 别名, -- 可选为插件指定别名event VeryLazy, -- 懒加载触发时机支持多种事件cmd 命令名, -- 使用命令时加载ft lua, -- 打开某种文件类型时加载keys {...}, -- 使用某些快捷键时加载opts {...}, -- 插件的配置直接传入插件的 setup 或 optsconfig function() ... end, -- 更复杂的配置dependencies {...}, -- 插件依赖 } 每项具体如何编写会在后续的使用中讲到。 2首先需要安装 git 和 nerd font。git 就不多说了这里主要讲一下 nerd fonthttps://www.nerdfonts.com/font-downloads Ps如果不安装字体将来很多符号无法显示。 这里建议使用 JetBrainsMono Nerd Font 下载后解压到你常用的目录即可。 3在 neovim 配置中自动安装和加载插件管理器逻辑。 创建 ~/AppData/Local/nvim/lua/core/lazy.lua 文件内容如下 -- 构造 lazy.nvim 的安装路径 -- vim.fn.stdpath(data) 表示返回 neovim 的数据目录例如 win 是 ~/AppData/Local/nvim-datalinux/mac 是 ~/.local/share/nvim -- .. 是 lua 用来拼接字符串的 -- win 最后拼接成 ~/AppData/Local/nvim-data/lazy/lazy.nvim local lazypath vim.fn.stdpath(data) .. /lazy/lazy.nvim-- 如果 lazypath 不存在lazy.nvim 未安装就执行内部逻辑 if not vim.uv.fs_stat(lazypath) then-- 把 lazy.nvim 下载到 lazypath 目录vim.fn.system({git,clone,--filterblob:none,https://github.com/folke/lazy.nvim.git,--branchstable,lazypath}) end-- 把 lazy.nvim 加入到 neovim 的运行时路径(runtimepath)的最前面 -- 这样才能使用 require(lazy) 正确加载插件管理器 -- 此处的 : 表示 lua 中的方法调用(表示传入一个方法) vim.opt.rtp:prepend(lazypath)-- 加载 lazy.nvim 插件管理器并调用 setup 函数 -- 传入 {} 空表表示还没有配置任何插件后续可以加 require(lazy).setup({})保存后记得在 init.lua 中引入如下 require(core.lazy)保存退出后重新打开 neovim你会发现卡住了这是因为正在执行刚刚写的命令neovim 是单线程的会阻塞主线程。 4打开 neovim然后输入 “:Lazy”就可以看到一个面板如下 例如按下 Shift p 就可以看到插件的一些启动时的性能情况 面板上其他选项的介绍 Install用来安装插件的相当于运行 :Lazy install 只安装在 lazy.nvim 中声明的并且还没有下载的插件。不会更新已有的插件Update更新插件相当于运行 :Lazy Update他会执行 git pull 来拉取所有插件的最新版本Sync同步插件状态安装缺失的插件 更新已安装的插件 清理不在配置中的插件 构建插件相当于执行 :Lazy sync通常用来保证插件和配置完全一致Clean清理插件相当于执行 :Lazy clean用来删除配置中不再引用的插件Check检查插件状态相当于执行 :Lazy check用来删除配置中不再引用的插件Log查看插件管理器中日志的输出主要调试用的Restore恢复快照从 snapshot 文件中恢复插件状态回滚版本需要提前使用 Lazy snapshot 创建快照Profile性能分析分析各个插件加载时的性能情况Debug调试 lazy.nvim 插件管理器的自身行为会打开一个窗口输出插件加载时的详细信息哪些插件怎么加载的、懒加载生效情况、报错信息、路径、加载顺序等适合在插件不工作配置失效、性能分析时使用 tokyonight 插件配置 1如下配置会让 neovim 自动读取 lua/plugins 目录下的文件用来对插件进行配置。 require(lazy).setup({spec {{ import plugins }} })然后创建 ~/AppData/Local/nvim/lua/plugins 文件夹之后在这个此目录下每配置一个插件就是一个 lua 文件这种写法看起来直观。 此时使用 nvim 可能会报错不过不用管这是因为 plugins 目录下还没有任何插件。 2安装 tokyonight 主题 创建 ~/AppData/Local/nvim/lua/plugins/tokyonight.lua 文件内容如下从 tokyonight 的 github 上就可以看到怎么配置 return {-- 这里写主题的 github 链接-- 但是由于插件基本都来自github因此 lazy 会自动补全前缀 https://github.com/因此插件的前缀就不用写了folke/tokyonight.nvim }保存退出后重新打开就可以看到 lazy 就直接开始帮我们安装了然后输入 :colorscheme tokyonight 回车后就可以看到效果了 3如果我们再重新打开 neovim 的时候就会发现还需要继续手动让主题生效为了解决这个问题可以重写 tokyonight 的 config 项如下 return {-- 这里写主题的 github 链接-- 但是由于插件基本都来自github因此 lazy 会自动补全前缀 https://github.com/因此插件的前缀就不用写了folke/tokyonight.nvim,-- 可以通过此配置项更换成 tokyonight 的浅色主题opts {style day},-- 下面的 config 本来是 lazy 默认配置好的但是为了能在插件启动时自定义一些东西(比如启动时就加载好主题)可以重写此配置-- 这个方法的第一个参数几乎用不上opts 就是上一个配置项config function (_, opts)require(tokyonight).setup(opts) -- 这一步是 lazy 给我们自动配置好的这里再写一遍主要是因为我们自己手动重写了此函数vim.cmd(colorscheme tokyonight) -- 执行这个命令end }Ps大多数情况是不用手动编写 config 的除非在 lazy 默认加载之外还有些别的操作。 4这里你可能会有一个疑问为什么一定要把加载主题的配置写到 config 中而不写外部去加载 因为切换主题这个命令必须要在插件加载完成之后才能执行。 例如如下我这样写就是会报 “找不到主题的错误”。 原因lazy.nvim 是异步懒加载插件的读取所有的插件完之后再统一加载而 vim.cmd(colorscheme tokyonight) 这行代码在 tokyonight 插件真正被加载之前就被执行了所以就会报错 E185: Cannot find color scheme tokyonight BufferLine 插件配置 默认情况下所有的 buffer 都是隐藏的通过使用 bufferline 插件可以使所有的 buffer 以类似浏览器标签页的方式呈现在页面的最上方。 1首先创建 ~/AppData/Local/nvim/lua/plugins/bufferline.lua 文件内容如下 return {akinsho/bufferline.nvim,-- 此插件必须手动指定一下 opts 才会进行 setupopts {} }2使用 neovim 随便打开一个文件例如 nvim aaa 打开文件 aaa就可以看到效果如下: 再使用 e bbb 编辑一个新文件 bbb都是可以看到 tab 的 3可以通过 :BufferLineCyclePrev 前往上一个 tab使用 :BufferLineCyclePrev 前往下一个 tab… 但是这样太麻烦了 但是我们使用的使 neovim 啊用的就是的自定义当然这里还有一种更强的自定方式就是直接在插件上配置 keys 来自定义键位例如如下我这样配置主要是为了减少和 IDEA 相关操作迁移的成本 return {akinsho/bufferline.nvim,-- 此插件必须手动指定一下 opts 才会进行 setupopts {},keys {{ leaderbn, :BufferLineCycleNextCR, silent true },{ leaderbo, :BufferLineCloseOthersCR, silent true },{ leaderbp, :BufferLineCyclePrevCR, silent true },{ leaderbd, :bdeleteCR, silent true },{ leaderbh, :BufferLinePickCR, silent true },}, }Pskeys 中配置的键位默认就是在 normal 模式中生效不用手动指定 mode 4此处重新打开 nvim 会发现 tab 不见了这里涉及到一个高级特性就是 懒加载实际上我们配置了 keys 他的实际含义是开启懒加载只有在按下自定义 keys 中的键位时开始加载。 为什么要会这样设计呢因为 neovim 在启动时会加载所有插件一旦插件变多了neovim 的打开速度会越来越慢因此就设计成在 neovim 启动后进入主页用不上的插件就先不加载只有用到这个插件的时候再加载。而 keys 就是启动懒加载开关的其中之一还有的后续会讲到 当然对于 bufferline 显示 tab 这种在启动后就会用到的我们还是希望他不要懒加载因此可以手动设置 lazy 属性为 false如下 return {akinsho/bufferline.nvim,-- 此插件必须手动指定一下 opts 才会进行 setupopts {},keys {{ leaderbn, :BufferLineCycleNextCR, silent true },{ leaderbo, :BufferLineCloseOthersCR, silent true },{ leaderbp, :BufferLineCyclePrevCR, silent true },{ leaderbd, :bdeleteCR, silent true },{ leaderbh, :BufferLinePickCR, silent true },},lazy false }5目前的 bufferline 配置出来还是有点丑的因为 icon 图标因此这里还需要一个插件给 tab 显示小图标。 但是由于这个插件只是辅助于 bufferline 的因此没有必要单独在 plugins 下创建一个 lua 文件可以通过 lazy 提供的 dependencies 属性实现如下 return {akinsho/bufferline.nvim,dependencies {nvim-tree/nvim-web-devicons},-- 此插件必须手动指定一下 opts 才会进行 setupopts {},keys {{ leaderbn, :BufferLineCycleNextCR, silent true },{ leaderbo, :BufferLineCloseOthersCR, silent true },{ leaderbp, :BufferLineCyclePrevCR, silent true },{ leaderbd, :bdeleteCR, silent true },{ leaderbh, :BufferLinePickCR, silent true },},lazy false }保存后重新进入效果如下 自动补全括号 / 引号 插件配置 这个见名思意输入 {自动补全 }其他的也同理。 如果删除 { 也会自动把配对的 } 删除其他也同理。 这时候我们可以思考一个关于优化的问题这个插件在 neovim 启动的时候真的需要加载么么并不需要因为他不涉及 ui 的渲染并且 normal 模式下也不会用到因此我们希望他进入 insert 模式下才需要使用到此时就可以使用 event 属性进行懒加载如下 return {windwp/nvim-autopairs,event InsertEnter, -- 仅在 insert 模式才加载此插件opts {} }1那么重新进入 neovim并输入 :Lazy 可以看到 nvim-autopairs 并没有被加载。 2当进入 insert 的模式之后再查看就加载了说明懒加载配置成功。 Ps有的插件可以懒加载但是是在 normal 模式下就使用的然而已进入 neovim 就是 normal 模式类似这种你不清楚什么时候进行懒加载的情况就可以配置成 event VeryLazy这也是 lazy 插件管理器提供的一种方式。
http://www.zqtcl.cn/news/213125/

相关文章:

  • 商城网站怎么建保定网络营销网站建设
  • 检索类的网站建设公司的网站建设规划书
  • 百度做网站需要交钱吗保定网站建设平台分析
  • 张家界建设局网站电话优化关键词排名公司
  • 宁夏网站建设一条龙网站建设中的图片及视频要求
  • 某些网站dns解析失败湛江制作企业网站
  • 网站开发用什么代码长沙哪家公司做网站
  • 做视频找素材的网站有哪些wordpress 合法评论
  • php网站开发程序填空题高水平网站运营托管
  • 揭东建设局网站wordpress建站后发布
  • 济南哪里有建网站制作视频的手机软件
  • 建设教育网站的国内外研究现状沧州市宇通网站建设公司
  • 大型网站开发框架有哪些厦门外贸网页设计服务
  • 开网站空间流量怎么选择公司注册咨询电话
  • 邢台网站建设基本流程网站制作公司教你怎么制作网站
  • 苏州网站建设方案外包视频网站制作教程视频
  • 呼伦贝尔市规划建设局网站wordpress 主题切换
  • 建设网站的要求吗网站怎么建立
  • 网站结构有哪些建设局平台
  • 高端网站建设公司服务好吗有哪些制作网站的公司
  • 网站整站模板下载工具淮安网站建设案例
  • 网站前台用什么做广东省网站设计师
  • 汕头网站建设公司哪个好百度公司注册地址
  • 创建网站需要什么平台wordpress 卡盟模板
  • 网站开发常用的流程肃宁网站建设公司
  • 站内关键词自然排名优化绍兴网络公司
  • 益阳网站seo免费建造公司网站
  • 网站推广报价教你免费申请个人平台
  • 企网站建设wordpress文章批量上传
  • 福州seo建站网站的icp备案信息是什么