
零基础 vim 配置
文章平均质量分 87
介绍 vimscript 到现代 neovim 的lua配置,从0开始配置属于自己的vim
aluluka
这个作者很懒,什么都没留下…
展开
-
nvim番外之将配置的插件管理器更新为lazy
在很久以前我写过关于nvim配置的文章,里面推荐使用作为插件管理器。但是在一年多以前,packer的仓库中出现这么一段文字而且nvim相关的开源社区已经出现了这样的配置。之前曾今考虑过更换自己的配置,但是秉持着代码能跑就不动的传统,一直没有动手。但是这个周末我游戏也不太想玩,学习elisp的动力也没那么足,那就决定来捣鼓一下之前使用的配置把。原创 2025-01-06 11:16:27 · 869 阅读 · 0 评论 -
从零开始配置vim(32)——最后再说两句
很抱歉我决定结束这个系列的内容了。原本我打算介绍markdown、orgmode相关的配置,甚至还打算介绍如何在vim中使用emacs的org-agenda来进行日常的任务管理。但是出于一些原因我打算放弃了。首先如果将markdown 理解为另一种类似于HTML的标记语言的话,我们在介绍LSP的时候已经介绍过该如何新增新的编程语言的支持,再另外介绍Markdown的配置就显得多余了。而且本系列也并不打算事无巨细的带领大家从零开始配置一套完整的配置,我仅仅希望通过这一系列的内容介绍一下vimscript。原创 2023-02-04 11:31:46 · 722 阅读 · 0 评论 -
从零开始配置vim(31)——git 配置
很抱歉又拖更了这么久了,在这个新公司我想快速度过试用期,所以大部分的精力主要花在日常工作上面。但是这个系列还是得更新下去,平时只能抽有限的业余时间来准备。这就导致我写这些文章就慢了一些。废话不多说,咱们正式开始有关git相关的配置。这些配置都是根据我自身使用习惯来定义的,不一定符合各位的习惯,各位可以根据自身的习惯来调整。原创 2023-02-01 14:30:42 · 1053 阅读 · 0 评论 -
从零开始配置vim(30)——DAP的其他配置
很抱歉这么久才来更新这一系列,主要是来新公司还在试用期,我希望在试用期干出点事来,所以摸鱼的时间就少了。加上前面自己阳了休息了一段时间。在想起来更新就过去一个多月了。废话不多说了,让我们开始进入正题。在前一章,我们谈论了如何在neovim中使用cpptools这个DAP的适配器对代码进行调试,目前针对编译型和解释型语言来说我们都有了对应的方法来配置调试器对其进行调试。本节将要介绍关于dap的其他一些功能,主要包括repl窗口和gdb的集成。原创 2022-12-30 16:57:31 · 2302 阅读 · 1 评论 -
从零开始配置vim(29)——DAP 配置
首先给大家说一声抱歉,前段时间一直在忙换工作的事,包括但不限于交接、背面试题准备面试。好在最终找到了工作,也顺利入职了。多的就不说了,我们正式进入vim的配置吧上一节通过配置python的调试环境,我们大概了解了配置dap的基本步骤。首先需要一个dap的客户端负责在编辑器上显示各种调试信息,并且与用户进行交互。然后需要一个服务端,与客户端通信并完成调试的实际步骤。然后需要配置两个东西,用来配置如何启动调试器,用来配置如何将当前项目加载到调试器上。本篇我们进一步配置dap。原创 2022-11-18 11:43:22 · 3417 阅读 · 1 评论 -
从零开始配置vim(28)——代码的编译、运行与调试
在前面几个章节,我们逐渐为Vim配置了语法高亮、代码的跳转和自动补全功能。现在的Vim已经可以作为代码编辑器来使用了。但是想将它作为日常发开的主力编辑器来用还需要很长一段路要走,其中一个就是要为它配置代码的一键编译与运行功能。这里我们仍然以C和Python为例。一个是需要编译运行的一个是直接就可以运行的,这两个语言应该能代表大多数语言的情况。原创 2022-10-24 17:05:29 · 4606 阅读 · 0 评论 -
从零开始配置vim(27)——代码片段
虽说这些插件预定义了大量的代码片段。但是他们都是通用型的代码片段,总有那么些时候无法满足我们的需求。一个明显的例子就是不同的公司有不同的代码和注释的风格。这个时候就需要我们自定义了。本篇也准备将重点放在如何自定义代码片段上。如果小伙伴们已经有了在vscode上自定义代码片段的经历,那么请跳过本篇以节省各位的时间。原创 2022-10-18 10:26:22 · 1475 阅读 · 0 评论 -
从零开始配置vim(26)——LSP UI 美化
之前我们通过几个实例演示如何配置其他语言的lsp服务,相信各位小伙伴碰到其他的编程语言也能熟练的配置它对应的lsp服务。本篇讲作为一个补充,我们来优化一下LSP 相关的显示。原创 2022-10-14 14:03:11 · 2254 阅读 · 3 评论 -
从零开始配置vim(25)——关于 c++ python 的配置
从9月份到国庆这段时间,因为得了女儿,于是回老家帮忙料理家事以及陪伴老婆和女儿。一时之间无暇顾及该系列教程的更新。等我回来的时候发现很多小伙伴私信我催更。言归正传,让我们开始吧之前我们根据lua语言配置了基于lsp的代码高亮、自动跳转、自动补全等等功能,那个时候我们安装了很多插件,像 nvim-lspconfig、nvim-lsp-installernvim-cmp等等,每个插件都在干嘛,虽然我们配置好了 lua相关的内容,但是可能仍然有小伙伴有疑问,碰到其他语言该如何配置,是不是要重新下载对应的插件呢。原创 2022-10-09 12:52:24 · 2187 阅读 · 0 评论 -
从零开始配置vim(24)——自动补全
neovim 自带的代码补全的效果并不好,而且它分为好多类,如果需要人为的去判断使用路径补全、使用当前buffer中的单词补全、亦或者使用include 来进行补全,那样使用起来就很不方便了。针对代码的补全我们可以基于 lsp的配置使用插件来完成,这里我推荐使用 nvim-cmp插件。原创 2022-09-08 09:32:02 · 3737 阅读 · 2 评论 -
从零开始配置vim(23)——lsp基础配置
上一章,我们初步认识了lsp,并且对 nvim-treesitter插件进行了配置,为编辑器提供了代码着色、自动格式化以及增量选中功能。算是初步体验了 lsp的相关功能。从这篇开始我们通过lsp的功能,进一步提升代码编辑、查阅等功能的体验。原创 2022-09-07 10:02:13 · 2651 阅读 · 0 评论 -
从零开始配置vim(22)——lsp简介与treesitter 配置
过去的编辑器包揽了诸如代码高亮、语法分析、跳转等功能,这样就导致了所有编辑器都有自己专有的一套显示、跳转等方案。而第三方编辑器想要达到完全相同的效果几乎是不可能的。但是微软提出的 lsp() 确改变了这一格局。lsp最重要的就是将语法分析、跳转、自动补全功能这些语言的核心功能和最终呈现效果分开。即server端主要提供了语法分析、补全、跳转的核心功能,而在客户端要做的就是调用服务端提供的这些功能来展示以及通过快捷键或者其他用户接口以便用户使用。而且语言服务器是以进程的方式单独运行,并不会影响客户端的运行。原创 2022-09-06 10:00:36 · 2739 阅读 · 1 评论 -
从零开始配置vim(21)——会话管理
很多代码编辑器都有这么一个功能,重新进入编辑器之后能恢复上次打开的所有文件,窗口布局,有的甚至是上次设置的一些配置。那么vim是否也可以实现这样的功能呢?答案是肯定的。使用vim自带的会话管理和viminfo可以实现恢复上次打开文件和布局以及重置上次的配置它们二者分别保存了不同的内容,一般会将它们联合起来使用。viminfo看起来很好像显的很杂一样,但是我觉得这些都不是需要记忆的,我们只需要知道使用使用viminfo和session可以恢复所有我们关心的内容即可,无需分辨哪些内容保存在哪个位置。原创 2022-09-05 13:46:16 · 951 阅读 · 0 评论 -
从零开始配置vim(20)——模糊查询
在讲解vim的基础功能的时候,介绍过了vim的各种查询技巧,在同一个文件中进行搜索的话,那些技巧很有用。在多个文件中我们介绍了使用vim自带的 :grep命令进行搜索,使用quickfix 列表进行跳转,但是比起其他代码编辑器来说,总归有那么一些繁琐光是输入参数都已经很麻烦了,我想要像其他代码编辑器那样直接输入内容它就能基于工程来进行匹配。本篇文章我们将要来对它进行优化,达到这一目的。本次我们要介绍的是神级插件telescope,一般只要介绍neovim。原创 2022-09-01 17:50:44 · 2248 阅读 · 0 评论 -
从零开始配置vim(19)——终端配置
在 packer 中我们使用如下语句来进行安装use {如果我们用的是 7.0及以上的neovim,可以使用它的 v2版本,否则版本这里应该写上 v1接着我们还是按照之前的惯例,新增一个配置文件并且在init.lua中引用})之后我们可以使用来打开一个新终端使用自定义终端可以让我们在某些时候快速打开一些有特定用途的终端,例如git命令、htop命令或者python、node等的交互式窗口。这里我们以python和htop为例来介绍如何自定义这些自己的终端窗口。...原创 2022-08-31 11:52:02 · 2189 阅读 · 0 评论 -
从零开始配置 vim(18)——终端模式
在进入下一个配置之前,先了解一下如何在neovim中使用它内置的终端。我们之前说过在命令模式中可以使用!来执行shell命令。但是终归来说,执行和使用上不是那么方便,特别是混合使用vim命令和shell命令的时候。两个揉在一起显得那么混乱。好在从早期的neovim和 8.0以后版本的vim已经内置了一个终端。...原创 2022-08-30 10:14:21 · 1989 阅读 · 0 评论 -
从零开始配置 vim(17)——快捷键提示
之前我们定义了各种各样的快捷键,有为了增强功能自定义的,有针对插件的。数量一多有的时候就不那么容易记忆了。要是每次要去配置文件找我定义了哪些快捷键肯定会影响使用的。本篇将要介绍一个插件,它是快捷键的一个词典,可以快速找到我们想要的快捷键。...原创 2022-08-19 10:19:33 · 1368 阅读 · 0 评论 -
从零开始配置 vim(16)——启动界面配置
中间部分表示的是它显示为这块的内容。我们可以使用来定义是一个table。它的每个部分对应着一条显示。每条显示和功能我们可以使用如下字段来进行定制icon: 当前显示图标desc:某个功能的描述信息,后面会原样显示出来shortcut:快捷键action:在某项位置回车时执行的命令我们按照官方给出的截图上的功能进行定义{其他地方的功能我们先不管,暂时在action这个字段上填上空,我们先实现最后打开个人配置文件那个位置的代码,我们在action中填入。再次打开,我们发现它已经可以显示这些内容了。...原创 2022-08-18 10:04:26 · 2851 阅读 · 1 评论 -
从零开始配置 vim(15)——状态栏配置
vim下侧有一个状态栏,会显示当前打开的文件等一系列内容,只是我们很少去关注它。而且原生的vim也支持对状态栏进行自定义。这篇文章主要介绍如何自定义状态栏。原创 2022-08-17 09:53:48 · 2430 阅读 · 2 评论 -
从零开始配置 vim(14)——目录管理插件
我们在介绍vim目录管理的时候提到 vim自带一个 叫做 netrw的工具来管理目录。但是它自身的功能有限,而且样式也丑。今天我们将使用其他强大的插件来替代 netrw,增强目录管理功能。原创 2022-08-16 14:46:20 · 1786 阅读 · 0 评论 -
从零开始配置 vim(13)——标签页插件
原始的vim中标签页已经足够好用了。你完全可以使用原始 vim 提供的功能,但是使用插件可以让它更好看。这里我比较喜欢使用bufferline这个插件。原创 2022-08-12 10:51:05 · 1042 阅读 · 0 评论 -
从零开始配置 vim(12)——主题配置
在我们进一步增强vim的功能之前,我们先为vim准备一个漂亮的主题,毕竟对着一个丑陋原始的界面多少有点提不起劲来进行编程。长时间对着丑陋的界面多多少少会产生抑郁情绪的。下面推荐几款我觉得还不错的主题插件。...原创 2022-08-11 10:11:37 · 2348 阅读 · 0 评论 -
从零开始配置 vim(11)——插件管理
之前我们介绍了基础配置部分和快捷键配置部分。如果你配置了这两个部分,vim已经算是比较好用了。但是作为代码编辑器来讲还是显的比较简陋,用这些配置来完成日常的编码任务会显得力不从心。vim比较强大的一点是它拥有丰富的插件系统。大量高手在上面为它开发各种形式的插件。今天我们将从插件管理开始,利用前人的成果丰富我们的vim功能。...原创 2022-08-10 09:29:52 · 1261 阅读 · 0 评论 -
从零开始配置 vim(10)——快捷键配置
之前我们对neovim进行了基础的配置,这篇主要介绍我比较常用的快捷键配置。到这篇开始我们的配置已经可以为两个大的模块——基础配置和快捷键配置。我们的目录也应该按照模块来进行组织。在正式配置之前让我们先规划一下目录结构。当前我打算采用如下的目录格式├── 📂 lua│ ├── 🌑 basic.lua # 用来存储基础配置│ ├── 🌑 keybindings.lua # 用来存储快捷键配置└── 🌑 init.lua # 配置文件入口,主要用来加载其他配置文件。...原创 2022-08-09 09:38:22 · 1618 阅读 · 0 评论 -
从零开始配置 vim(9)——初始配置
虽然本系列文章叫做从0开始配置vim,似乎我们从一开始就要写vimrc配置文件,但是我们并没有这么做。我们先经过几篇文章了解了下面的几个内容这些既有vimscript的东西,也有vim自身一些特性的描述。拥有这些基础知识之后,在阅读其他人写的配置或者自己配置将会变得更加容易。当然关于vim我们还有很多内容没有讲,例如该如何自定义命令,如何弹出一个窗口,以及到最后如何编写自己的插件。...原创 2022-08-08 13:19:53 · 1149 阅读 · 0 评论 -
从零开始配置 vim(8)——文件类型检测
在vim中可以使用来打开文件类型检测,而在neovim中已经默认打开了这些属性,因此我们可以不设置这些。我们可以使用:filetype来查看打开的状态。它会返回如下的内容我们发现它包含了三个部分。它打开了三个东西,文件类型检测,针对文件类型相关的插件,针对文件类型相关的缩进和隐藏代码块的格式。下面我们依次来介绍这些东西vim可以根据文件后缀和文件内容来决定文件类型。如果无法决定也可以使用set ft来设置,或者在文件头部添加注释vim: ft=来知名类型。...原创 2022-08-05 10:15:14 · 1193 阅读 · 0 评论 -
从零开始配置 vim(7)——自动命令
这篇我们来谈论vim一个相当重要的东西——自动命令。从编程的角度来看,自动命令有点类似于事件响应,或者回调函数之类。当外部发生某些事件的时候,自动执行事先定义好的一组命令。定义一个自动命令的格式如下autocmdjsfunctiontypepatterncmd说了这么多,我们以一个例子来说明:当我们使用vim打开一个不存在的文件,如果直接退出,我们会发现它并没有被保存。因为打开一个不存在的文件时vim并没有真的在磁盘中创建这么一个文件,它仅仅新开了一个缓冲区,当执行写命令的时候才真正会创建文件。...原创 2022-08-04 11:12:56 · 1268 阅读 · 0 评论 -
从零开始配置 vim(6)——缩写
翻译成中文的意思大概是缩写。但是仅仅以缩写来描述这个特性,似乎是不够的,但是也找不到准确的中文来描述,暂时就采用这个名称吧。它的这个特性允许我们将输入的一段内容自动更新为新的内容我们先来体验一下它的基本用法。在命令中输入我们输入mian(后它会自动将内容替换为main(。这样即使我们手误将main写成了mian,vim能自动帮我们更新。再也不用怕编辑器报找不到main函数了我们发现了它的第一个用途——纠正笔误。但是基于这一特性,我们还可以使用几个简单的字符来快速展开成常用的长文本。例如通过输入。...原创 2022-08-03 10:22:17 · 441 阅读 · 0 评论 -
从零开始配置 vim(5)——本地设置与全局设置
在前面的一系列文章中,我们介绍了使用noremap进行键盘映射,使用set来设置选项和vim的变量。并且已经在配置文件中对他们进行了相关配置。在介绍设置那一篇文章中我们提到了,lua提供的函数有全局设置、窗口设置和缓冲区设置。当初有小伙伴在评论区问到相关问题,现在我们就来详细的解释这些之前被搁置的内容。.........原创 2022-08-02 11:09:17 · 630 阅读 · 0 评论 -
从零开始配置 vim(4)——键盘映射的一些技巧
通过前面的学习,我们已经知道了如何进行键盘映射,并且也知道了在任何场合应该使用非递归版本的映射。这篇再介绍一些使用关于快捷键映射的内容作为收尾。原创 2022-07-15 11:18:20 · 1528 阅读 · 1 评论 -
从零开始配置 vim(3)—— 键盘映射进阶
严格意义上来说,快捷键的绑定应该是键盘映射,将某些键映射为另一些键。在上篇我们介绍了基本的键盘映射操作,知道了如何 :map、:imap、:vmap、:nmap这些命令来映射键盘快捷键。它们很方便,也很简单,但是有一个致命的缺点。他们是递归的,我们先来讨论什么是递归让我们先来执行下面的命令这里我们原本是想 jj来实现 J的功能,更加快速的实现合并行的功能,但是我们按下之后发现,它只是将光标移动到下一行了。这并不是我们想要的。到底发生什么了呢?因为这些命令是递归的。如何理解递归呢?我们以函数的思想来考虑,每原创 2022-07-13 11:38:13 · 1349 阅读 · 0 评论 -
从零开始匹配vim(2)——快捷键绑定
如果说 vim有什么最吸引人,我想vim允许你自由的定义各种快捷键算是一个原因吧。你可以通过绑定各种快捷键来使经常使用的功能更加便利。通俗的讲,快捷键映射就是我按下某个键,我想让vim将它当成另一个键,例如我按下 ,我想让vim把它当做 来使用(当然这么映射会把人逼疯)我们使用 命令来进行快捷键的映射,例如我们输入如下内容通过这个命令,我们将 映射为 ,也就是说现在我们按下 就可以删除光标所在行了。针对功能键,例如 、、 等,在 中使用 的形式,其中 是按键名称,下面列举出一些常用的原创 2022-07-11 16:26:35 · 1343 阅读 · 0 评论 -
从零开始匹配vim(1)——选项设置
前面我们算是对 做了一个入门,并且实现了一个 输出 的语句。现在我们继续进行 的学习。之前在介绍 基础的时候,我们说要开启或者关闭某个属性,并且给出了相关的配置代码。那个时候已经接触了 语句了。例如我们使用 来显示行号。这里我们可以知道 set的第一个用法:其中这个 是一个属性名称,用于开启/关闭属性。一般在程序设计中将开启或者关闭某个特性的变量设置为 值。在 中也是如此,但是它的特殊性在于它并不是将这个变量设置为 或者 而是设置为 或者 的样子。举个例子,设置显示行号使用 设原创 2022-07-11 14:42:42 · 933 阅读 · 0 评论 -
从零开始匹配vim(0)——vimscript 简介
通过之前一系列的文章,相信各位小伙伴应该已经对vim产生了浓厚的兴趣,可能不少小伙伴通过慢慢的使用变的跟我一样,离开vim就不会写代码了。如果你希望继续长时间使用vim,甚至将vim作为主要的代码编辑器,那么花一定的时间来学习vim的配置是很有用的。如果你只是因为 平台默认安装了 ,平时又主要用它改改匹配文件,临时用用,那么还是赶紧退出这个文章,免得耽误时间吧。标题上说从零基础打造vim多少有点标题党,要理解后面一系列文章的内容至少要了解vim里面的一些基本概念,我认为在阅读本系列专栏之前,你应该了解以原创 2022-07-06 10:40:56 · 1500 阅读 · 0 评论