NVim
一、安装
sudo apt install vim neovim
二、vim的四种模式
vim有四种模式: 普通模式、输入模式、命令模式、可视模式
打开文件直接进入的是普通模式
三、分屏操作
操作 | 功能 |
---|
vim -On file1 file2 … filen | 左右分屏 (n为分屏数量)(终端操作) |
vim -on file1 file2 … filen | 上下分屏 (n为分屏数量)(终端操作) |
ctrl+w s | 上下分割当前打开的文件 |
:sp filename | 上下分割,并打开一个新的文件 |
ctrl+w v | 左右分割当前打开的文件 |
:vsp filename | 左右分割,并打开一个新的文件 |
ctrl+w c | 关闭当前窗口 |
ctrl+w q | 如果只剩最后一个窗口,则退出vim |
ctrl+w k/j/h/l | 把光标移动到(上/下/左/右)边的屏 |
ctrl+w w | 把光标移动到下一个屏 |
ctrl+w K/J/H/L | 向(上/下/左/右)移动分屏 |
sp | 水平分屏(多个窗口中显示同一个文件里的内容) |
vsp | 垂直分屏(多个窗口中显示同一个文件里的内容) |
qall | 同时退出多个屏幕 |
wqall | 同时保存退出多个屏幕 |
四、查找
操作 | 作用 |
---|
/string | 从上往下查找string |
?string | 从下往上查找string |
> | 只匹配单词末尾 |
< | 只匹配单词开头 |
:/.*a*.*b* | 从上往下查找既含a又含b的行 |
:/*a*|*b* | 从上往下查找含a或含b的行 |
忽略大小写查找字符串
查找时使用 c
参数 如 :/stringc
注意 c
与字符串之间不要有空格,因为该空格也会被认为是查询的字符串
快速查找
方法一 Shift + *
或 #
查找当前光标对应的单词然后输入,并可通过 n 或 N 进行上一个或下一个的匹配。
方法二 yw
拷贝该单词, 然后输入 :/ (Ctrl + R) 0
, 回车,并可通过 n 或 N 进行上一个或下一个的匹配。
五、普通模式
移动
↑, ↓, ←, →
h, j, k, l
4h 向左4格
4j 下移4行
快捷键 | 作用 |
---|
0 / ^ | 光标移动到行首 |
$ | 光标移动到行尾部 |
gg | 光标移动到文件头 |
G | 光标移动到最后一行的行首 |
nG | 跳转到第n行行首 |
n+回车 | 向下跳转n行 |
w | 跳转到下一个单词的开头 |
b | 跳转到前一个单词的开头 |
ctrl+上下左右 | 跨单词移动 |
caw | 删除当前这个词并进入输入模式 |
cc | 删除当前一行并进入输入模式 |
c4j | 删除下4行并进入输入模式 |
排版
快捷键 | 作用 |
---|
<< | 向左缩进一个shiftwidth |
>> | 向右缩进一个shiftwidth |
:ce(nter) | 本行文字居中 |
:le(ft) | 本行文字靠左 |
:ri(ght) | 本行文字靠右 |
翻页
快捷键 | 作用 |
---|
ctrl d | 向下翻半页 |
ctrl u | 向上翻半页 |
ctrl f | 向下翻页 |
ctrl b | 向上翻页 |
跳转
f{char} 跳转到当前行的某个字符上面,之后再用(;;向后)(,向前)来重复跳转;
eg fr -> 移动到最近的r的位置
删除
快捷键 | 作用 |
---|
x (小写) | 删除光标后边的字符 |
X (大写) | 删除光标前边的字符 |
d0 | 删除当前行光标前的字符串 |
d$ (D) | 删除当前行光标后的字符串 |
dd | 删除光标所在行 |
ndd | 删除n行 |
d | 删除 |
dj | 删除当前行和下一行的内容 |
dfr | 删除到r为止的内容 |
撤销
快捷键 | 作用 |
---|
[n] u | 取消一(n)个改动 |
:undo 5 | 撤销5个改变 |
ctrl + r | 反撤销 |
U | 取消当前行中所有的改动 |
:earlier 4m | 回到4分钟前 |
:later 55s | 前进55秒 |
u | 撤销 |
复制和粘贴
快捷键 | 功能 |
---|
p | 粘贴到光标所在行的下边 |
P | 粘贴到光标所在行的上边 |
y | 复制 |
yw | 复制整个单词 |
yy | 复制光标所在行 |
nyy | 从光标所在行向下复制 n 行 |
y4j | 复制了包含当前行在内的4行内容 |
yfr | 复制到r为止的内容 |
六、输入模式
快捷键 | 功能 |
---|
i | 从光标前边开始输入 |
a | 从光标的后边开始输入 |
o | 在光标下边创建新行, 在新行中输入 |
s | 删除光标后边的字符(盖住的字符), 从删除的字符位置开始输入 |
I | 从当前行行首开始输入 |
A | 从当前行行尾开始输入 |
O | 在光标上边创建新行, 在新行中输入 |
S | 删除当前行, 在当前行开始输入 |
七、命令模式
命令模式下输入的命令 | 功能 |
---|
q | 退出, 如果退出的时候文件没有保存, vim会提示是否要保存 |
q! | 直接退出, 不保存 (强制退出) |
w | 保存, 不退出 |
wq | 保存退出 |
x | 保存退出 |
:n | 光标跳转到第n行 |
文本替换
:{作用范围}s/{替换目标}/{替换内容}/{替换的标志}
s:当前行替换
%s:全文替换
n1,n2s:指定行替换,替换n1:n2间所有行的目标。
‘<,’>s:指定区域替换
g:表示一次替换作用范围内所有的目标。
空标志:只替换作用范围内,每行第一次出现的目标。
i:不敏感查找,不区分大小写。
I:敏感查找,区分大小写。(默认状态)
c:表示替换前需进行确认。
:n1,n2s/zempty/handsome/g 替换掉n1到n2行的所有 zempty为handsome
命令模式下的命令行打开文件
:edit ~/file_1 打开对应文件
:edit % 自动显示整个路径
执行shell命令
// 在命令模式下执行需要的shell命令,在执行shell命令之前需要在前边加上一个叹号!
:!shell命令
八、可视模式
从普通模式进入可视模式
快捷键 | 进入模式 | 模式讲解 |
---|
按小写v进入 | 字符选择模式 | 选中光标经过的所有字符 |
按大写V进入 | 行选择模式 | 选中光标经过的所有行 |
按Ctrl+v进入 | 块选择模式 | 选中一整个矩形框表示的所有文本 |
相关快捷键
快捷键 | 作用 |
---|
o | 在选中区域中的左上和右下角来回切换 |
gv | 改为选中上一次选中的目标区域 |
快捷键 | 作用 |
---|
. | 点命令重复执行上一次执行过的命令(普通模式和可视模式均适用) |
f{char} | 跳转到当前行的某个字符上面,之后再用(;;向后)(,向前)来重复跳转 |
$ | 从当前位置选择到行尾 |
^ | 从当前位置选择到行首 |
x或d | 剪切,(d只删除选中的字符,而D删除选中字符所在行的所有字符) |
y和Y | 复制,(y只复制选中的字符,而Y复制选中字符所在行的所有字符) |
p或P | 粘贴,(p 粘在光标所在字符后面,P 粘在前面) |
r字符 | 所有字符替换为新字符 |
c字符 | 修改选中的文本 |
I字符 | 在选中文本前插入 |
A字符 | 在选中文本后插入 |
u U ~ | 分别是所有字母变小写、变大写、反转大小写 |
J字符 | 将高亮显示的文本内容合并为一行,同时以空格来分隔各行 |
>和< | 将选中字符右移或左移 shiftwidth位置 |
可视模式下的底行命令
- 可视化模式下,按下
:
键就可以对选定范围进行操作。底行命令行中会自动填充‘<,’>
操作 | 作用 |
---|
‘<,’>write block.txt | 将文本块写入block.txt中 |
‘<,’>sort | 对选中的文本进行排序 |
‘<,’>s/{替换目标}/{替换内容}/{替换的标志} | 在选中的区域内进行批量替换 |
可视模式下的注释
// 可视模式下注释多行代码
(1) Ctrl + v进入块选择模式
(2) 向上或向下移动光标选择多行
(3) 移动光标到行的起始位置(或输入指令^)
(4) 然后按大写 I 进入行首插入模式
(5) 插入注释符
(6) 按Esc回到命令模式
// 可视模式下取消多行注释
(1) Ctrl + v进入块选择模式
(2) 向上或向下移动光标,选择要删除的注释符号
(3) 按d键删除