更新日志

2024-04-06

常用键位更新


Vim 键位备忘录

键位 功能
v 可视模式
SHIFT + v 块可视模块
u 撤销前次操作
CTRL + r 恢复前次操作
G 最后一行
gg 第一行
w 移动到下一个单词(word)
b 移动到上一个单词(before)
(n)dd 删除n行(剪切整行,不写n默认为1)
dw 删除当前单词
cw 改变当前单词(change word)
yy 复制整行
yw 复制单词(yarn word)
y 复制
p 粘贴
u 撤销操作(重做)
m + 标签
~ 当前字符转化大小写

1. 配置目录结构

Github链接:

1.1 不同系统的配置目录:

  • C:\Users\*\AppData\Local\nvim>(Windows)

  • ~/.config/nvim(Linux)

1.2 目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
├─init.lua

├─lua
│ ├─core:
│ │ keymaps.lua
│ │ options.lua
│ │
│ └─plugins:
│ autopairs.lua
│ bufferline.lua
│ cmp.lua
│ comment.lua
│ gitsigns.lua
│ lsp.lua
│ lualine.lua
│ nvim-tree.lua
│ plugins-setup.lua
│ telescope.lua
│ treesitter.lua

└─plugin
packer_compiled.lua

init.lua是Neovim的启动文件,它会自动选择lua/为其代码目录。

2. 配置详情

2.1 init.lua文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
require("core.options")
require("core.keymaps")

-- packer 插件管理器 --
require("plugins.plugins-setup")

require("plugins.lualine")
require("plugins.nvim-tree")
require("plugins.treesitter")
require("plugins.lsp")
require("plugins.cmp")
require("plugins/comment")
require("plugins/autopairs")
require("plugins/bufferline")
require("plugins/gitsigns")
require("plugins/telescope")

if vim.g.vscode then
-- VSCode extension
print("VSCode extension for Neovim...")
else
-- ctrl + f down, ctrl + b up
-- ordinary Neovim
print("Original Neovim ...")
end

​ 选择packer 作为插件管理器,最后是判断启动vscode的Neovim插件还是原始的Neovim。载入相关文件(模块)只需按上所述,如core文件夹下的键位映射模块keymaps.lua,只需require("core.keymaps")或者require("core/keymaps")

2.2 packer管理插件

插件安装在lua/plugins/plugins-setup.lua:25-76

2.3 快捷键映射(mapping)

快捷键配置在 lua/core/keymaps.lua:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
-- ---------- 主键 空格 -----------
vim.g.mapleader = " "
local keymap = vim.keymap

-- ---------- 插入模式 ---------- ---
-- i表示插入模式,"jk"表示键位,<ESC>表示原来键位
-- 表示由insert模式转化为normal只需
keymap.set("i", "jk", "<ESC>")

-- ---------- 视觉模式 ---------- ---
-- 单行或多行移动,按住<SHIFT> + j/k即可上下移动
keymap.set("v", "J", ":m '>+1<CR>gv=gv")
keymap.set("v", "K", ":m '<-2<CR>gv=gv")
-- 无效?
-- keymap.set("v", "<C-/>", "gc")

-- ---------- 正常模式 ---------- ---
-- 窗口, split herizental/vertical
keymap.set("n", "<leader>sh", "<C-w>v") -- 水平新增窗口
keymap.set("n", "<leader>sv", "<C-w>s") -- 垂直新增窗口
-- 取消高亮,搜索时取消高亮
-- 输入"/word + <ENTER>"显示内容,输入"n"跳转下一条匹配结果
keymap.set("n", "<leader>nh", ":nohl<CR>")
-- 正常模式下输入9到行尾,0到行首
keymap.set("n", "9", "$")

-- ---------- 插件 ---------- ---
-- nvim-tree, <空格> + t(tree)
keymap.set("n", "<leader>t", ":NvimTreeToggle<CR>")

-- 切换buffer, <SHIFT> + H/L
keymap.set("n", "<C-l>", ":bnext<CR>")
keymap.set("n", "<C-h>", ":bprevious<CR>")
-- 无效?
-- keymap.set("n", "<C><leader>", "gcc")

主键为<Space> 空格键

2.3.1 Insert模式

键位 功能
jk 退出Insert模式,进入Normal模式

2.3.2 Visual模式

键位 功能
J 选中单行或多行移动,向下移动1行
K 选中单行或多行移动,向上移动2行
gc 多行做单行注释
gbc 多行块注释

2.3.3 Normal模式

键位 功能
0 行首
9 行尾
/word 搜索word,回车后按n下一条
SPACE +nh 取消高亮(no highlight)
SPACE+sh 水平新建窗口(split horizontal)
SPACE+sv 垂直新建窗口(split vertical)
SPACE+t 打开或关闭文档树,a+文件名新建文件
SPACE+l 切换buffer,下一个
SPACE+h 切换buffer,上一个
SPACE+ff telescope文档检索,按<CTRL>c退出
gcc 单行注释

3. Reference