91 lines
2.0 KiB
Markdown
91 lines
2.0 KiB
Markdown
# neovim notes
|
||
|
||
## API 记录
|
||
|
||
执行系统命令
|
||
|
||
0.10.x 版本之后
|
||
|
||
```lua
|
||
vim.system
|
||
```
|
||
|
||
0.10.x 版本之前
|
||
|
||
```lua
|
||
vim.api.nvim_exec2
|
||
```
|
||
|
||
查看 table
|
||
|
||
```lua
|
||
print(vim.inspect(table))
|
||
```
|
||
|
||
或者 `vim.print`,以可读的方式输打印参数,如:
|
||
|
||
```lua
|
||
vim.print(vim.fn.api_info())
|
||
```
|
||
|
||
```lua
|
||
-- execute system command
|
||
local has_cmd = function(cmd)
|
||
res = vim.system({'which', cmd}, { text = true}):wait() -- ; print(res.code)
|
||
|
||
-- no error, everything is ok
|
||
if res.code == 0 then
|
||
return true
|
||
end
|
||
|
||
-- error
|
||
return false
|
||
end
|
||
```
|
||
|
||
## 插件
|
||
|
||
目前插件体系已经经过了三次重构,从 vimscript 转向 lua 体系,还需要做的是完善 root 用户的 nvim 配置。
|
||
|
||
### 插件管理器
|
||
|
||
插件系列最重要的是有一个插件管理器。
|
||
|
||
#### Vim-Plug
|
||
|
||
Vim 时代的插件管理器,后来使用 neovim 后放弃。
|
||
|
||
#### packer
|
||
|
||
转 neovim 后使用的第一个基于 lua 开发的插件管理器,后来作者停止了维护,转向了 lazy.nvim。
|
||
|
||
#### lazy.nvim
|
||
|
||
目前使用的插件管理器,同样基于 lua 开发。
|
||
|
||
### 编辑器扩展
|
||
|
||
这些插件主要是增强编辑功能,如彩色括号、快速跳转、括号自动补全等。
|
||
|
||
#### 快速跳转
|
||
|
||
现在常见的快速跳转有两种,一种是 `easymotion` 类型,一种是 `sneak` 类型,前者触发后会在可跳转的字符上出现字母标记。
|
||
后者是记住要跳转的字符后进行前缀匹配。个人建议选哪个主要取决于其他 IDE 提供的 vim 插件支持哪个,尽量保证一致的操作体验。
|
||
|
||
#### 括号匹配
|
||
|
||
neovim 有强大的 treesitter,基于此对上下文代码进行解析,实现彩虹括号、自动补全等功能。
|
||
|
||
#### 对齐插件
|
||
|
||
在视觉模式下,选中一些代码库,按照某个字符进行对齐,主要是好看,尤其是写 markdown 表格的时候。
|
||
|
||
#### 注释
|
||
|
||
使用快捷键快速对代码进行注释和取消注释,就像 IDE 一样。
|
||
|
||
### 代码开发类扩展
|
||
|
||
取决于经常使用哪种语言进行开发,vim/neovim 比较适合 Python/C/C++/Rust/Golang/lua 等语言。
|
||
|