neovim

etc

Language Server Protocol (LSP)

在 Neovim 中运行 :PackerSync 命令来安装或更新插件:

布局,搜索,点命令,寄存器,宏,撤销,折叠。。。一些有用的思想,当然,我觉得vim最本质的优点是函数式编写

移动

搜索移动

/ 进入搜索模式 n下一个N上一个
f 单字母搜索

以行为单位的移动

^ 移动到行首第一个词的首字母。
| 移动到行首第一个字符。
$ 移动到行尾。
j 移动到下一行。
k 移动到上一行。
:10 移动光标到文件第 10 行。可以 :set number 来让 vim 显示行号。
gg 移动到文件首行。
G 移动到文件尾行。

以屏幕为单位的移动

H 移动到当前屏的首行。
L 移动到当前屏的尾行。
M 移动到当前屏的中间行。
zt 光标所在字符不动,将当前行移动到屏幕顶部,通常用来查看完整的下文,比如函数、类的定义。
zz 光标所在字符不动,将当前行移到屏幕中间。
zb 光标所在字符不动,将当前行移到屏幕底部。
ctrl-f 向下翻页,移动一整个屏幕。
ctrl+d 下移半页
ctrl-b 向上翻页,移动一整个屏幕。
ctrl-e 屏幕向下滚动一行。
ctrl-u 上移半页
ctrl-y 屏幕向上滚动一行。

后面几个 Ctrl 开头的命令是 Unix 命令行的惯例,比如在 man 和 less 里也适用。

标记移动

m 打标记,小写字母是当前文件,大写字母是nvim全局
'a 移动至标记处的行首
`a 移动至标记的具体行列
:marks列出所有标记

单词移动

w: 将光标移动到下一个单词的开头
b: 将光标移动到前一个单词的开头
e: 将光标移动到下一个单词的词末
E: 移动到单词的结尾(忽略标点符号)
ge: 将光标移动到上一个单词的词末
2w: 指定移动的次数

文本块移动

(:移到当前句子的开头
): 移到下一个句子的开头
{: 移到当前一段的开头
}:移到下一段的开头
[[: 移到当前这一节的开头
]]: 移到下一节的开头

etc

gg 光标移动到文件开头
G 光标移动至文件末尾

bB 光标移动至上一个单词的单词首
wW 光标移动至下一个单词的单词首

fx 光标移动至当前行中下一个 x 字符处
Fx 光标移动至当前行中上一个 x 字符处
0Home:光标移动到本行开头

告别鼠标手,尽快选vim.
现在感觉vim单独使用比较好,和IDE的快捷键太容易冲突了,我会在虚拟机上单独vim,虚拟机就是为了从无到有体验编程的存在。

插入

插入—普通模式 在插入模式中使用Ctrl + o 来进入该模式。该模式运行用户暂时回到普通模式,然后在执行一条普通模式的命令之后自动回到插入模式中。

删除

插入模式下删除:
Ctrl + h: 删除光标前一个词(与退格键相同)
Ctrl + w: 删除光标前一个单词
Ctrl + u: 删除至行首
x 快速删除一个字符

替换

复制粘贴

ggvGy复制全文
y复制选中的文本
yy复制当前行
d 剪贴文本
p (小写)新起一行粘贴文本
P 在当前位置粘贴文本