neovim 的自定义:安装与键位备忘

安装

1
2
3
git clone https://github.com/jungheil/my-nvim.git $HOME/.config/nvim
sudo chmod +x $HOME/.config/nvim/install.sh
$HOME/.config/nvim/install.sh

键位

其中带 *` 表示为自定义键位!

全局

命令 说明
:h(elp) [keyword] 帮助
:sav(eas) [filename] 另存为
:clo(se) 关闭当前窗口
:ter(minal) 打开终端
<C-t> * 在新窗口打开终端
K 打开光标所在单词的 man 页面

移动光标

命令 说明
h 左移光标
j 下移光标
k 上移光标
l 右移光标
<C-j> * 快速下移光标
<C-k> * 快速上移光标
<C-d> 向下滚动半屏 (down)
<C-u> 向上滚动半屏 (up)
<C-b> 向上滚动一屏
<C-f> 向下滚动一屏
w, W 下一个单词开头 (大写含标点)
e, E 下一个单词结尾 (大写含标点)
b, B 上一个单词开头 (大写含标点)
ge, gE 上一个单词结尾 (大写含标点)
f+{character} 定位到下一个 character
F+{character} 定位到前一个 character
t+{character} 定位到下一个 character 之前
T+{character} 定位到前一个 character 之前
; 重复之前的 f, t, F, T 操作
, 反向重复之前的 f, t, F, T 操作
0 移动到行首
^ 移动到行首的非空白字符
$ 移动到行尾
g_ 移动到行尾的非空白字符
A 移动到行尾的非空白字符并进入插入模式
I 移动到行首的非空白字符并进入插入模式
gg 移动到文件第一行
G 移动到文件最后一行
[num]gg or [num]5G 移动到第 num
} 移动到下一个段落
{ 移动到上一个段落
zz 移动屏幕使光标居中

普通模式

命令 说明
r 替换当前字符
R 替换多个字符
J 合并下一行并插入空格
gJ 合并下一行
cc 删除当前行并进入插入模式
C 删除光标以后并进出插入模式
s 删除字符并进入插入模式
S 删除当前行并进入插入模式 (cc)
u 撤销
U 恢复撤销
. 重复执行上一条命令
>> 向右缩进
<< 向左缩进
yy 复制当前行
yw 复制当前单词
dd 剪切当前行
dw 剪切当前单词
x 剪切当前字符
p 光标后粘贴
P 光标前粘贴
<C-s> * 保存
<C-1> * 退出窗口
<C-M-q> * 强制退出窗口

插入模式

命令 说明
i 从光标前开始插入字符
I 从行首开始插入字符
a 从光标后开始插入字符
A 从行尾开始插入字符
o 在当前行之下另起一行,开始插入字符
O 在当前行之上另起一行,开始插入字符
<Esc> 退出插入模式
<C-h> * 左移光标
<C-j> * 下移光标
<C-k> * 上移光标
<C-l> * 右移光标
<C-BS> * 删除单词

可视化模式

命令 说明
v 进入可视化模式
v 进入可视化模式 (行选择)
<C-v> 进入可视化模式 (块选择)
o 切换光标到选择区开头 / 结尾
O 切换光标到选择区的角
I 多行插入 (仅块选择)
aw 选择当前单词
ab 选择被 () 包裹的区域 (含括号)
aB 选择被 {} 包裹的区域 (含括号)
at 选择被 <> 包裹的区域 (含括号)
ib 选择被 () 包裹的区域 (无括号)
iB 选择被 {} 包裹的区域 (无括号)
it 选择被 <> 包裹的区域 (无括号)
y 复制
d 剪切
~ 互换大小写
u 切换小写
U 切换大写

多文件

命令 说明
:e filename 打开 filename
:bn 下一个缓冲区
:bp 上一个缓冲区
:bd 关闭缓冲区
<C-right> * 下一个缓冲区
<C-left> * 上一个缓冲区
<C-down> * 关闭缓冲区
<C-w>s 水平分割窗口
<C-w>v 垂直分割窗口
<C-w>w 切换窗口
<C-w>k 切换到上窗口
<C-w>j 切换到下窗口
<C-w>h 切换到左窗口
<C-w>l 切换到右窗口
<leader>k * 向上创建窗口
<leader>j * 向下创建窗口
<leader>h * 向左创建窗口
<leader>l * 向右创建窗口
<M-k> * 移动光标至上方窗口
<M-j> * 移动光标至下方窗口
<M-h> * 移动光标至左方窗口
<M-l> * 移动光标至右方窗口
<M-k> * 移动光标至上方窗口
<M-j> * 移动光标至下方窗口
<M-h> * 移动光标至左方窗口
<M-l> * 移动光标至右方窗口
<M-K> * 向上移动窗口分割线
<M-J> * 向下移动窗口分割线
<M-H> * 向左移动窗口分割线
<M-L> * 向右移动窗口分割线
<leader>tn * 新建标签
<leader>tc * 删除标签
<leader>tl * 向后切换标签
<leader>th * 向前切换标签
<leader>tt * 将窗口转为标签

查找与替换

命令 说明
/pattern 查找 pattern
?pattern 向上查找 pattern
\pattern 正则查找 pattern
n 查找下一个
N 查找上一个
:%s/old/new/g 替换全部
:%s/old/new/gc 逐个替换

寄存器

命令 说明
:reg[isters] 显示寄存器内容
"ay 复制内容到寄存器 a
"Ay 追加内容到寄存器 a
"ap 粘贴寄存器 a

特殊寄存器:

寄存器 说明
0 上次复制
" 未命名寄存器,上次复制或删除
% 当前文件名
# 轮换文件名
* 剪贴板内容 (X11 primary)
+ 剪贴板内容 (X11 clipboard)
/ 上次搜索的 pattern
: 上次执行的命令
. 上次插入的文本
- 上次剪切的短于一行的文本
= 表达式寄存器
_ 黑洞寄存器

LeaderF

命令 说明
<leader>ff * 搜索当前目录下的文件
<leader>fb * 搜索当前的 Buffer
<leader>fl * 搜索当前文件中有的某个单词
<leader>fm * 搜索最近使用过的文件
<leader>fc * 搜索当前文件的函数
<Tab> 在检索模式和选择模式之间切换
<C-r> 在模糊匹配和正则式匹配之间切换
<C-f> 在全路径搜索和名字搜索之间切换
<C-p> 预览结果

NERDCommenter

命令 说明
<leader>cc * 注释当前选择的行或文本
<leader>cf * 同 <leader>cc ,强制嵌套
<leader>cs * 用块格式注释
<leader>c<space> * 切换注释状态
<leader>cu * 取消注释

hop

命令 说明
<M-/> * 字符跳转 (Char1 模式)
<M-?> * 字符跳转 (Word 模式)

其他

命令 说明
ff * 打开文件管理器
<C-j> *snippets 跳转下一条
<Leader>tt * 翻译
]g * 下一处错误
[g * 上一处错误
gd * 跳转到定义
gy * 跳转到类型定义
gi * 跳转到实现
gr * 跳转到引用
K * 展示文档
<Leader>ff * 格式化代码
<Leader>aa *codeAction 列表
<Leader>ac * 应用 codeAction
<Leader>qf * 自动修复问题
<C-R> * 选择区域
<M-a> * 列出所有问题
<M-o> *Outline

参考文章

https://vim.rtorr.com/lang/zh_cn