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?

延后设置配置

使用 lua

1
2
3
4
5
vim.schedule(
    function()
        vim.opt.config = "your set"
    end
)

打开:命令历史(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?
  • 永久设置字体

    1
    
    vim.opt.guifont = 'CaskaydiaCove NFM:h12'

lsp 配置

  1. 查找 lsp server 支持

    • :help lsp-configall
  2. 添加推荐的配置到 lspconfig 的配置中 require('mason-lspconfg').setup {} 之前
  3. 重启 nvim

项目管理

telescope-project.nvim 使用

  1. 添加 project

    • <leader>sp C-a
  2. 查找文件

    • C-f, <enter>

跳转

  • C-O: 向后跳转,跳转到历史位置
  • C-I: 向前跳转
  • gd: definition
  • gr: reference
  • ': 历史跳转枚举选择
  • _: 类似 emacs M-m, 第一个非空白符的位置

选择字符跳转

  • f / F: 跳转到字符, F 表示反方向
  • t / T: 选择(till) 到字符, T 表示反方向

recoding

  • 退出方法: <esc>q

marker clipboard 粘贴板

  • command mode 粘贴: <C-R>"

fold

  • zi: toggle 所有的 fold
  • za: toggle 当前的 fold

Messages 错误信息

  • :messages: 类似 emacs *Messages* buffer

获取帮助

  • lua 内部函数的帮助

    • :h lua_function
    • eg:

      • vim.api : :h vim.api
      • vim.api.nvim_eval() : :h nvim_eval()

在 vimscript 中调用 lua

调用手动输入的 lua 代码

  • 在 vimscript 脚本中使用
  • 在 command-mode 中使用

命令:

  • :lua :

    • 单行 lua 代码
  • :lua <<EOF

    • here 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

1
vim.keymap.del("n", "<leader>p") -- 删除 <leader>p 在 normal mode 下的按键绑定

project.nvim

如何添加projet

  1. :cd /path/to/your/project
  2. :AddProject

如何切换 project

  1. <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 ===> 向前查找em
    • Sls ==> 向后查找ls

类似 emacs 切换 major-mode

: set filetype=dockerfile

: set filetype=python

save as

  1. :w new_filename

    • 保存一份作为 new_filename, 但是现在的 buffer 还是原来的文件
  2. :saveas new_filename

    • 另存为 new_filename, buffer 也同时 关联到新的文件名

command (: 命令) 下如何使用 normal-mode 下的命令

  • Ctrl+R : " : 寄存器命令,用于复制
  • Ctrl+W: db: 删除左边单词
  • Ctrl+U: d0: 删除到行首
  • Ctrl+Y: 向上翻页
  • Ctrl+E: 向下翻页

进入命令历史模式

  1. 在 : 编辑过程中,按 Ctrl+F,进入 命令历史模式
  2. 在命令历史模式下,可以查看历史,自动进入 normal mode
  3. 编辑完成后,按 Enter 发送命令

regexp

如何使用 ripgrep 做搜索和替换

nvim 启用现代 regexp 语法的方法

方法:通过 \v 启用现代 regexp(即不使用 vim 内置的regexp 语法)

特点:

  1. 不需要使用\+ 来表示运算法 +

具体用法:

  1. 搜索中:=/\v\w+?\s*=

    • 在vim 内:

      • + –> \+
      • 无法使用*, 因为* 在vim 中被用作了通配符
  2. 替换中:=:%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'

参考:

老版本 Linux, old glic 安装支持