Neovim-from-scratch-Notes
neovim 中使用 require
加载文件时, 默认会在配置文件所在目录下的 lua
目录下找. 配置文件所在目录由环境变量 VIMCONFIG
来指定, 即默认查找 $VIMCONFIG/lua
, 如:
1 |
|
则会加载 $VIMCONFIG/lua/test.lua
文件.
文件的层次可以通过 .
区分, 如:
1 |
|
则会加载 $VIMCONFIG/lua/test/haha.lua
文件.
require
查找的路径实际上为变量 package.path
的值.
P2 基础选项配置-Setting options
组织 lua
目录下的文件时可以创建子目录.
注意, 如:
1 |
|
与:
1 |
|
等价.
设置 vim 的选项 (option) 用:
1 |
|
开头.
如:
1 |
|
运行 vim 的命令用:
1 |
|
如:
1 |
|
P3 定制你的键盘映射-Custom Keymaps
键盘映射使用 vim.api.nvim_set_keymap
函数, 如:
1 |
|
上面就是把 jk
映射为 <ESC>
的写法.
模式包括:
n
, normali
, insertv
, visualx
, visual blockt
, termc
, command
设置 leader
:
1 |
|
P4 了解vim插件体系 - Plugin Deep Dive
packer.nvim
插件使用, 在用 nvim 打开一个文件是, 其就会开始下载插件.
site/pack/packer
目录下的两个目录:
opt
代表 optionalstart
代表一打开 nvim 就运行
plugins/packer_compiled.lua
文件可能会加快插件的打包速度.
插件默认放在 start
目录下, 若要放在 opt
目录下, 需添加 opt = true
, 如:
1 |
|
还有其他可选关键字, 如 run
用来运行命令, branch
用来指定分支等.
有些插件除了用 packer
安装以外, 还需要 require().setup{}
.
P5 主题配色以及如何配置- Colorschemes and how t
一个技巧, 在加载一个插件时检测其是否还存在, 这样在你移除后可以避免报错, 如:
1 |
|
pcall
函数带两个参数:
- 第一个, 函数名
- 第二个, 函数的参数 (这是一个变长参数)
_
相当于一个占位符.
P6 自动补全 - Completion Tutorial
使用插件为 nvim-cmp
.
Super 键, 也就是 Win 键, 映射的时候使用如: <S-t>
.
formatting
就是配置补全时旁边显示的东西.
source
好像是补全显示的顺序.
nvim-cmp
是可扩展的, 扩展用的插件可以在 github 上面找, 也就是 source. 安装好插件后将其添加到 source
下面.
P7 多语言语法支持- LSP Setup Tutorial
关于很多插件都有 require(name).setup()
解析, 应该是一种约定俗称的函数, 在返回的模块中有一个成员函数叫做 setup()
, 其完成一些设置.
使用 Mason
下载 LSP 之后在配置文件中启用.
lspconfig
这个插件中可以找到各种语言的 language server 的配置方式.
可以给 LSP 传递一些参数配置. 设置的参数就可以在 nvim-lspconfig
这个插件中找.
gd
快捷键还可以跳转到光标下的路径的文件.
gr
用 quickfix 查找光标下的单词. (r 是 reference)
P8 查找(文件或字符等)插件Telescope - a highly extendable fuzzy finder
telescope 是一个 fuzzy finder.
使用示例, :Telescope find_files
用于查找文件. :Telescope live_grep
用于查找字符.
:Telescope planets
可以查看行星.
可以设置打开的 menu 的主题, 如 :Telescope find_files theme=ivy
, 其会在底部打开 Telescope 而不是 float.
dropdown
主题会将预览放在上方. cursor
主题打开的窗口比较小.
在使用 Telescope
时, 可以进入 normal 模式, 这样就可以用 j
和 k
来控制.
可以在 Telescope
中预览图片. 需要 Telescope-media-files.nvim
插件. 这是一个 neovim 插件, 同时也是 Telescope
的插件, 需要卸载 Telescope
的配置中.
P9 语法高亮插件 - Treesitter Syntax Highlighting
可以用 :TSDisableAll highlight
来关闭 Treesitter
插件的高亮作用.
Treesitter 也有很多插件, 这些插件的配置信息写在 Treesitter 的配置文件里, 如 p00f/nvim-ts-rainbow
playground
插件可以显示出语法树和高亮代码的联系.
可以制作自己的 colorscheme.
P10 符号配对插件 - Autopairs automatically close () [] {} ‘’ _
<M-e>
快捷键.
P11 注释插件 - Comments
gcc
和 visual 模式下的 gc
P12 git插件 - Gitsigns Powerful Git Plugin
可以查看很多内容.
P13 树形文件浏览器插件- NvimTree File Explorer
a
即 add 可以添加文件.
r
即 renane 可以修改文件名.
d
即 delete 可以删除文件.
P14 Buffer插件以及Buffer 和 Tab以及Windows之间的对比 - Bufferline Buffers
BufferLinePick
可以跳转.
buffer 就是加载到内存中的文件.
vim 的 hidden 选项可以让 buffer 留在内存中。
vim 可以创建 tab, window, buffer.
tab 有点像 collection of windows.
P15 格式化与Lint插件 - Null-LS Formatting, Linting
null ls 插件用来格式化代码. 使用 :lua vim.lsp.buf.formatting_sync()
来触发.
lua 的格式化依赖于 stylua
这个二进制文件.
添加一个语言的格式化将其添加到 null ls
的配置文件中.
支持的语言和 source 可以在其安装目录的 lua/null-ls/built-in
目录下找.
diagnostic 和 linter 差不多
NullLsInfo
可以查看信息.
lsp 内置的 Formatting 和 null ls 冲突, 查看 handler 文件.