neovim系列(一) 操作命令

当前neovim系列,neovim的配置

neovim插件设置的命令

命令 意思
TAB 补全代码,借助coc-vim插件
Shift+TAB 在最小化,关闭之间切换
ctrl+l 打开coc-vim补全
enter 对补全进行确定
“g[“和”[g” 对错误行进行切换
gd 查找函数的定义
ctrl+o 对查找过的函数返回查找地方
‘\’+r 对函数进行重定义,这个命令在之后会和vim-visual-multi配合使用
‘’+h 对函数参考文档查看

插入模式

按键 含义
i 在光标的前边进入插入模式
I 在光标所在行的行首进入插入模式
a 在光标的后边进入插入模式
A 在光标所在行的行尾进入插入模式
o 在光标所在行的下方插入空行并进入插入模式
O 在光标所在行的上方插入空行并进入插入模式
s 删除光标指定的字符并进入插入模式
S 将光标所在行清除并进入插入模式
  • 以前我所使用的方法仅仅是i,a,没有系统学习,在这里我觉得常用的方法是使用I在所在行首行,他对应的A在行尾进行插入,这两个命令则可以和对应的小写比较,大写对应着行,小写对应着字。

  • s和S和这些类似,因为s对应着自己的字删除,S对应着行的删除。

  • 最后是o和O,这个命令和下面的其他模式有类似的意思,但是这个命令o是向下插入空行,O是向上插入空行。

  • 退出命令

命令 意义
:wq 保存退出
shift+zz 保存退出
:q 不修改退出
:q! 强制退出
:wq! 强制保存退出
  • 在修改文件要注意查看文件是否为管理员权限的文件,如果是,使用sudo进入,不然无法修改。

  • 删除

  • 在insert模式之中使用Backspace或者Delete删除,但是建议不要,因为这样不如直接使用vscode。


普通模式

  • 光标移动命令
  • 特殊命令,使用x进行删除光标所在的位置字符
按键 含义
0 (大写)将光标定位到行首的位置
^ 同上
$ 将光标定位到行尾的位置
b 将光标定位到光标所在单词的起始处
e 将光标定位到光标所在单词的结尾处
w 将光标定位到下一个单词的起始处(注意,是光标所在单词的下一个单词噢^_^)
gg 将光标定位到文件的开头
G 将光标定位到文件的末尾
h 向左移动一格光标
3h是向前三个格子,类似有j,k,l的命令。
  • 更多删除命令
    • 删除一般使用d命令
按键 含义
d0 删除光标从当前位置(不包含)到该行行首的所有字符
d^ 同上
d$ 删除从光标当前位置(包含)到该行行尾的所有字符
db 删除从光标当前位置(不包含)到单词起始处的所有字符
de 删除从光标当前位置(包含)到单词结尾处的所有字符
dw 删除从光标当前位置(包含)到下个单词起始处的所有字符
dh 删除光标前面一个字符
dl 删除光标指定的字符
dj 删除光标所在行以及下一行的所有字符
dk 删除光标所在行以及上一行的所有字符
dd 删除光标所在行的所有字符
dgg 删除光标所在行(包含)到文件开头的所有字符
dG 删除光标所在行(包含)到文件末尾的所有字符
jdd 删除下一行
  • 使用d3h删除前三个格子中内容,如此有jkl等其他方法。

  • 撤销命令

    • 小写u是撤销最后一次命令,而大写U是撤销所有命令。
    • 撤销撤销的命令,类似于套娃,ctrl+r。

  • 粘贴命令
    • p命令将==最后一次删除的内容粘贴==,和之前的其他命令类似,小写是光标之后,大写则是光标之前。
    • p命令如果粘贴整行,会在光标下一行开始,如果是部分,则是光标之后。

  • 拷贝命令
    • 拷贝命令是使用y进行拷贝,3yy表示拷贝三行,y$表示从光标所在位置拷贝到行尾的所有字符,yG表示从光标所在行拷贝到文件末尾航的所有字符。完成之后直接使用p命令粘贴。
    • y命令和d命令相同,都有对应的motion,可以参照d命令来查看y命令的motion。

  • 替换命令
    • r命令是在光标所指的位置进行插入
    • r命令无需进入插入模式,同时r命令可以在命令中使用数字+r进行更改。
    • 替换模式
      • 进入R
      • 在替换模式中backspace被设置为如果左边内容被替换过,恢复到原来样子,若未替换,则简单向左移动。

  • 修改命令
    • c进入,会自动进入插入模式
    • 格式为c[number]motion
    • motion和数字是可选择的
按键 含义
c0 删除光标从当前位置(不包含)到该行行首的所有字符,并进入插入模式
c^ 同上
c$ 删除从光标当前位置(包含)到该行行尾的所有字符,并进入插入模式
cb 删除从光标当前位置(不包含)到单词起始处的所有字符,并进入插入模式
ce 删除从光标当前位置(包含)到单词结尾处的所有字符,并进入插入模式
cw 删除从光标当前位置(包含)到下个单词起始处的所有字符,并进入插入模式
ch 删除光标前边一个字符,并进入插入模式
cl 删除光标指定的字符,并进入插入模式
cj 删除光标所在行以及下一行的所有字符,并在光标下一行进入插入模式
ck 删除光标所在行以及上一行的所有字符,并在光标下一行进入插入模式
cc 删除光标所在行的字符,并进入插入模式

文件信息、跳转、定位括号和缩进

  • 文件信息
    • crtl+g快速解决,在有nvim插件情况之下可以不使用

  • 跳转
  • 跳转常用的命令是行号+G或者是:行号

  • 定位括号
  • 在任意一半括号之上使用%进行跳转。

  • 代码缩进
  • 我设置了nvim插件coc-nvim中的coc-rust-analyzer缩进,他会在文件保存进行自动缩进,但是使用vim就必须要学会手动缩进
  • VIM 可以使用尖括号(< 或 >)来控制缩进,我们常用的就是两个同方向的尖括号表示将光标所在的语句进行缩进和反缩进操作。很明显 >> 表示缩进,而 << 则表示反缩进。
  • 进入可视化(v)然后选中进行缩进,这只需要一个<或者是>。

搜索命令

  • 使用/或者?进入搜索模式,这时下方会出现(:),你可以进行搜索。

  • 搜索之后,然后使用n或者N进行切换上一个和下一个搜索。

  • /从光标位置向后,?从光标位置向前

搜索方向 /
n 向后搜索下一个
N 向前搜索下一个
搜索方向
n 向前搜索下一个
N 向后搜索下一个
  • 在搜索命令中,.、*、[、]、^、%、/、?、~$ 这 10 个字符有着特殊意义,所以在使用这些字符的时候要在前面加上一个反斜杠**(\)**,比如你要搜索问号,则输入 /?
  • 退出搜索模式高亮:使用:nohl

替换命令

  • 需要和搜索命令相结合
  • 通过搜索功能,我们将光标定位到目标位置,如果你确定这个目标是可恶的,需要被替换的,你可以输入 :s/old/new,这样即可将光标所在行的第一个 old 替换为 new;你如果输入的是 :s/old/new/g,则表示将光标所在行的所有 old 替换为 new。
  • 输入 :%s/old/new/g表示替换整个文件中每个匹配的字符串。
  • 输入 :%s/old/new/gc替换的时候进行询问。
    • 这个时候会提示 (y/n/a/q/l/^E/^Y),需要判断
      • y 表示替换
      • n 表示不替换
      • a 表示替换所有
      • q 表示放弃替换
        l - 表示替换第一个并进入插入模式
      • ^E 表示用 Ctrl+e 来滚动屏幕
      • ^Y 表示用 Ctrl+y 来滚动屏幕
  • 替换某几行的,如5:13行的:
    - :5,13s/old/new/g

和shell相互结合

  • vim允许和shell相互结合使用,因为vim有!
  • 在输入冒号(:)进入命令行模式,输入感叹号(!),在其后便可以加上 shell 命令。此后 VIM 将临时跳转回 shell,并执行命令。再次按下 Enter 键回到 VIM。

  • 文件另存为
    • 使用 :w test2将现有的test文件转换为test2保存。
    • 可视模式局部文件内容另存为
      • 使用V进入,然后使用hjkl进行选中,最后用:w test2保存

  • 合并文件
    • 使用:,然后输入r 文件名,就可以将文件内的内容复制到光标的下一行之中

  • 打开多个文件

  • 使用-o或者是-O进行选择,-o是垂直排列,-O是水平排列

  • vim -o test1.c tst2.c

  • 使用 ctrl + w + w 将光标切换到下一个文件;或者使用 ctrl + w + 方向(方向键或 h、j、k、l)。

    • 对于垂直并排的文件:使用 ctrl + w + 上、下方向,表示上、下切换文件;
    • 对于水平并排的文件:使用 ctrl + w + 左、右方向,表示左、右切换文件。
  • 退出使用标准退出如:q或者其他

  • 其他方法,直接退出所有文件:

    • 只需在原来退出命令的后边加上小写 a,则表示退出动作是针对所有的(ALL):qa、qa!、wqa

关于vim使用插件markdown

  • 安装的插件为:instant-markdown
  • 需要的插件为npm nodejs,这些在arch linux的官方库中存在。
  • 安装方法,使用:
1
Plug 'instant-markdown/vim-instant-markdown', {'for': 'markdown', 'do': 'yarn install'}
  • 然后使用npm安装插件instant-markdwon-d,:
1
[sudo] npm -g install instant-markdown-d
  • 最后使用的是配置文件,添加到init.vim即可
1
2
3
4
5
"configure the markdown'
"configure the script to run
let g:instant_markdown_allow_unsafe_content = 1
"configure the latex math to the markdown
let g:instant_markdown_mathjax = 1
  • 最后将他添加到配置文件中即可。
下一章,neovim的配置