neovim
文章目录
cheat sheet
打开文件
:r, :read
- 加载内容到 buffer
- :e, :edit
帮助
:help your-item:h <Ctrl+R> <Ctr + W>- 获取 cursor 下单词的帮助, Ctr+R Ctr+W 会把光标下内容自动复制到 command 行中
配置
配置选项查询
- :help option-list
查看配置
- :opt
单个配置
:set your-option?- eg:
:set number?
- eg:
延后设置配置
使用 lua
| |
打开:命令历史(command mode)
q:
按键
- <CR> : enter 键
折叠行 wrap line
:set wrap,:set nowrap
打开只读模式 read only
:set readonly,:set ro:set noreadonly,:set noro
自动补全
在 command mode 中
- 选定 item:
Ctrl + Y
设置 major-mode, 文件类型
:set filetype=python
窗口
最大化 buffer
:only,:on
最小化
:hidden,:hid
kill buffer
:kdelete,:kdelete
字体设置
gui 字体
:set guifont=*- 提出对话框,设置字体和大小
- 当前字体查看
:set guifont? 永久设置字体
1vim.opt.guifont = 'CaskaydiaCove NFM:h12'
lsp 配置
查找 lsp server 支持
:help lsp-configall
- 添加推荐的配置到 lspconfig 的配置中
require('mason-lspconfg').setup {}之前 - 重启 nvim
项目管理
telescope-project.nvim 使用
添加 project
<leader>sp C-a
查找文件
C-f,<enter>
跳转
C-O: 向后跳转,跳转到历史位置C-I: 向前跳转gd: definitiongr: reference': 历史跳转枚举选择_: 类似 emacsM-m, 第一个非空白符的位置
选择字符跳转
f/F: 跳转到字符, F 表示反方向t/T: 选择(till) 到字符, T 表示反方向
recoding
- 退出方法:
<esc>q
marker clipboard 粘贴板
- command mode 粘贴:
<C-R>"
fold
zi: toggle 所有的 foldza: toggle 当前的 fold
Messages 错误信息
:messages: 类似 emacs*Messages*buffer
获取帮助
lua 内部函数的帮助
- :h lua_function
eg:
- vim.api :
:h vim.api - vim.api.nvim_eval() :
:h nvim_eval()
- vim.api :
在 vimscript 中调用 lua
调用手动输入的 lua 代码
- 在 vimscript 脚本中使用
- 在 command-mode 中使用
命令:
:lua:- 单行 lua 代码
:lua <<EOFhere doc 多行代码
1 2 3 4:lua << EOF local m = 3 print(m) EOF
:luado- return 返回的结果,放入当前 buffer 中
- eg:
:luado return 'hello world'
执行 lua 文件
参考: GitHub - nanotee/nvim-lua-guide: A guide to using Lua in Neovim
:luafile:source:runtime- 不需要指定完整路径,相对 runtimepath 的路径即可
执行 lua expression
参考: GitHub - nanotee/nvim-lua-guide: A guide to using Lua in Neovim lua expression: lua 表达式,放入字符串中的 lua 代码
luaeval('vimscript_code')- vimscript 内建函数
- 可以通过 _A 相代码内部传参
直接调用 _G 中存储的函数
:v:lua:v:.lua.print(3)
lua 访问 vimscript
lua 中访问 vimscipt namespace
使用 lua 中的全局变量 vim
常用:
- vim.inspect
- vim.regex
- vim.api
- vim.ui
- vim.loop
- vim.lsp
- vim.treesitter
输出 lua 中 对象
print(vim.inspect(lua_object))- 麻烦的方法
vim.pretty_print- 方便方法
:lua =object- 类似语法糖
- 方便
lua 中执行 vimscript 代码
参考: GitHub - nanotee/nvim-lua-guide: A guide to using Lua in Neovim
vim.api.nvim_eval('vimscript_code')- 用于一小段代码
- 缺陷: 不能像 :luaeval 一样,向代码内部传参
vim.api.nvim_exec- 用于多行的一大段 vimscript 代码
vim.cmd- vim.api.nvim_exec 的 alias 别名
vim.api.nvim_command('vim_ex_command')- 执行 ex-command
neovim
目录切换
- 上级目录
<backspace>, –><bs> in nvim
FAQ
如何删除 keymap
| |
project.nvim
如何添加projet
:cd /path/to/your/project:AddProject
如何切换 project
<leader>pp,:lua require'telescope'.extensions.projects.projects{}
居中显示类似 emacs Ctrl+l
zz
保存后退出
ZZ, :x, :wq
不保存退出
ZQ,:q!:qa!不保存,退出所有窗口
最大化窗口
当前窗口
:wincmd _,C-w _: 垂直方向最大化:wincmd |,C-w |: 水平方向最大化
Lsp server 安装
LspInstall
打开通知类似 emacs *Messages* buffer
<space>n
leap 跳转插件,类似 emacs avy jump
注意:
- 需要输入两个字符才可以触发
eg:
sem–> (1) s (2) em ===> 向前查找emSls==> 向后查找ls
类似 emacs 切换 major-mode
: set filetype=dockerfile
: set filetype=python
save as
:w new_filename- 保存一份作为 new_filename, 但是现在的 buffer 还是原来的文件
:saveas new_filename- 另存为 new_filename, buffer 也同时 关联到新的文件名
command (: 命令) 下如何使用 normal-mode 下的命令
Ctrl+R:": 寄存器命令,用于复制Ctrl+W:db: 删除左边单词Ctrl+U:d0: 删除到行首Ctrl+Y: 向上翻页Ctrl+E: 向下翻页
进入命令历史模式
- 在 : 编辑过程中,按
Ctrl+F,进入 命令历史模式 - 在命令历史模式下,可以查看历史,自动进入 normal mode
- 编辑完成后,按
Enter发送命令
regexp
如何使用 ripgrep 做搜索和替换
nvim 启用现代 regexp 语法的方法
方法:通过 \v 启用现代 regexp(即不使用 vim 内置的regexp 语法)
特点:
- 不需要使用\+ 来表示运算法 +
具体用法:
搜索中:=/\v\w+?\s*=
在vim 内:
+–>\+- 无法使用*, 因为* 在vim 中被用作了通配符
- 替换中:=:%s/\v\w+\s*good/___\1___/gc=
like emacs C-x C-x
switch between region start and end: o
rocks.nvim
安装
: nvim -u NORC -c "source https://raw.githubusercontent.com/nvim-neorocks/rocks.nvim/master/installer.lua"
使用安装脚本安装,不可以在LazyVim 内部使用 lazyvim 安装
rime.nvim
手动编译: gcc rime.c -o lua/rime.so \ -shared -fPIC \ -L'usr/lib64' \ -I'usr/include/luajit-2.1' -l'luajit-5.1' \ -I'usr/include/rime' -l'rime'
参考:
https://codeberg.org/smeikx/rime.nvim/src/branch/tidy
Manually 部分
- 下载 rime.c 文件到rime.nvim项目根目录
- 使用gcc 编译制作 lua/rime.so 文件
老版本 Linux, old glic 安装支持
文章作者
上次更新 2025-09-24 (360d44c)