vim 食用方式
最后我还是没有用 vim 太多常用按键冲突
大部分来自小甲鱼的超入门 vim
移动光标
- h 左
- l 右
- k 上
- j 下
普通模式 和 插入模式
VIM 具有 6 种基本模式和 5 种派生模式。
基本模式:
普通模式、插入模式、可视模式、选择模式、命令行模式和 Ex 模式
派生模式:
操作符等待模式、插入普通模式、插入可视模式、插入选择模式和替换模式
进入插入模式的各种方法
按键 | 含义 |
---|---|
i | 在光标的前边进入插入模式 |
I | 在光标所在行的行首进入插入模式 |
a | 在光标的后边进入插入模式 |
A | 在光标所在行的行尾进入插入模式 |
o | 在光标所在行的下方插入空行并进入插入模式 |
O | 在光标所在行的上方插入空行并进入插入模式 |
s | 删除光标指定的字符并进入插入模式 |
S | 将光标所在行清除并进入插入模式 |
退出 vim 的方法
- ZZ(两个大写字母Z,也就是Shift+z+z)
- :wq(这是一个组合命令,如果是 :w 表示保存,而 :q 表示退出)
motion 操作范围指令
按键 | 含义 |
---|---|
0 | 将光标定位到行首的位置 |
^ | 同上 |
$ | 将光标定位到行尾的位置 |
b | 将光标定位到光标所在单词的起始处 |
e | 将光标定位到光标所在单词的结尾处 |
w | 将光标定位到下一个单词的起始处(注意,是光标所在单词的下一个单词噢_) |
gg | 将光标定位到文件的开头 |
G | 将光标定位到文件的末尾 |
删除
-
x
在普通模式下,删除单一字符可以用x
命令。跟在插入模式按下Delete
键一样,x
命令是删除光标指定的字符。 -
d
的删除命令的格式是d motion
删除的组合按键
按键 | 含义 |
---|---|
dd | 删除光标所在行的所有字符 |
d0 | 删除光标从当前位置(不包含)到该行行首的所有字符 |
d^ | 同上 |
d$ | 删除从光标当前位置(包含)到该行行尾的所有字符 |
db | 删除从光标当前位置(不包含)到单词起始处的所有字符 |
de | 删除从光标当前位置(包含)到单词结尾处的所有字符 |
dw | 删除从光标当前位置(包含)到下个单词起始处的所有字符 |
dh | 删除光标前面一个字符 |
dl | 删除光标指定的字符 |
dj | 删除光标所在行以及下一行的所有字符 |
dk | 删除光标所在行以及上一行的所有字符 |
dgg | 删除光标所在行(包含)到文件开头的所有字符 |
dG | 删除光标所在行(包含)到文件末尾的所有字符 |
数字的奥义
普通模式下按一下
h
按键是将光标向左移动一格,而在其前面输入数字 3,即3h
则是将光标向前移动 3 格,依此类推3j
则是将光标向下移动三行,3w
则是将光标跳到三个单词后的开始位置……同样的,
d3h
表示删除光标前的 3 个字符,d3j
表示删除光标所在行以及下面 3 行的所有字符,而d3w
则表示向后删除当前光标到后面第三个单词前的所有字符。
撤销和恢复命令
-
u
表示撤销最后一次修改 -
U
表示撤销对整行的修改 -
Ctrl + r
快捷键可以恢复撤销的内容
特大备注
这上面所有的“删除”操作并不是真的删除,它们事实上是存放在 VIM 的一个缓冲区(VIM 把它称之为寄存器)中,相当于 Windows 的剪切功能!!!
粘贴命令
- p 命令可以将最后一次删除的内容粘贴到光标之后。
- P 则是粘贴到光标之前
拷贝命令
-
y
命令实现拷贝。语法跟删除的d
命令一样:y motion
其中的
motion
同样是用来表示操作范围的指令,即yy
表示拷贝当前行,3yy
则表示拷贝 3 行;y$
表示从光标所在的位置拷贝到行尾的所有字符;yG
则表示从光标所在行拷贝到文件末尾行的所有字符。
替换命令
- 替换命令:r 命令。
r 用于替换光标所在的字符,做法是先将光标移动到需要替换的字符处,按一下 r 键,然后输入新的字符。注意,全程无需进入插入模式,也不会进入插入模式。
- 数字 + r 可能会产生一些物理反应。先输入【数字】再输入 r,最后输入新字符,说明从当前光标的位置开始,替换【数字】个新字符。
AAA // 在第一个 A 处,按下 3r 键,再按下 H 键
HHH // 修改后的结果
替换模式
对于需要替换多个字符,更好的方案是直接进入替换模式。按下大写的 R 键,屏幕左下角出现 -- REPLACE -- 字样,说明你已经处于替换模式。此时输入字符可以连续替换光标及其后边的内容。注意:退格键(Backspace)在替换模式中被解释为如果左边内容被替换过,则恢复到原来的样子;如果没有被替换过,则简单的向左移动。修改完毕后,按下 Esc 回到普通模式。
修改命令
c [number] motion
按键 | 含义 |
---|---|
c0 | 删除光标从当前位置(不包含)到该行行首的所有字符,并进入插入模式 |
c^ | 同上 |
c$ | 删除从光标当前位置(包含)到该行行尾的所有字符,并进入插入模式 |
cb | 删除从光标当前位置(不包含)到单词起始处的所有字符,并进入插入模式 |
ce | 删除从光标当前位置(包含)到单词结尾处的所有字符,并进入插入模式 |
cw | 删除从光标当前位置(包含)到下个单词起始处的所有字符,并进入插入模式 |
ch | 删除光标前边一个字符,并进入插入模式 |
cl | 删除光标指定的字符,并进入插入模式 |
cj | 删除光标所在行以及下一行的所有字符,并在光标下一行进入插入模式 |
ck | 删除光标所在行以及上一行的所有字符,并在光标下一行进入插入模式 |
cc | 删除光标所在行的字符,并进入插入模式 |
文件信息
- 快捷键
ctrl + g
显示/隐藏 当前的文件信息,比如文件名,文件状态,文件的总行数,以及光标所在的相对位置。
跳转
将光标跳转到指定的位置:
行号 + G
:行号
定位括号
找到你的另一半
-
%
键。将光标移动到() [] {}
中的任何一半括号上,按下%
键,便可看到此时光标已经跳转到另外一半的括号上了。
缩进
-
>>
表示缩进 -
<<
表示反缩进
但是这样一次只能缩进一行,一行行来也挺麻烦,因此你想到了数字的奥义:先输入数字 2 在输入 >> 表示将光标所在行以及下一行共两行同时插入一个缩进。
不过行数一多……到底要缩进多少行就成了一个问题……
这时,你可以按一下 v 进入可视模式(左下角出现 -- VISUAL -- 字样),然后通过 h、j、k、l 或 其他 motion 来移动你的光标,此时光标所到之处必被一道亮光所包围(表示被选中),选择好需要缩进的目标后,只需按一下 > 即可完成任务。
搜索命令
可以使用正则
/
在普通模式下按下斜杠(/)也是进入命令行模式,此时该字符和光标均出现在屏幕的底部,这跟冒号(:)一样。
-
?
反向搜索
替换命令
-
:s/old/new
,这样即可将光标所在行的第一个 old 替换为 new - 你如果输入的是
:s/old/new/g
,则表示将光标所在行的所有 old 替换为 new。 -
:%s/old/new/g
表示替换整个文件中每个匹配的字符串。 -
:5,13s/old/new/g
5 表示开始替换的行号,13 表示结束替换的行号 -
:%s/old/new/gc
每次替换前都咨询一下- y 表示替换
- n 表示不替换
- a 表示替换所有
- q 表示放弃替换
- l 表示替换第一个并进入插入模式
- ^E 表示用 Ctrl+e 来滚动屏幕
- ^Y 表示用 Ctrl+y 来滚动屏幕
取消高亮
nolh
shell 命令
-
!
,在其后便可以加上shell
命令
!ls /
(vsCode 不可用)
文件另存为
:w test2
局部内容另存为
- 在可视模式 键入
:
屏幕左下方出现:'<,'>
- 现在请输入
w test2
即可保存到test2中
合并文件
-
:
进入命令行模式,然后输入r 文件名
即可将指定文件的内容读取并置入到光标的下一行中
打开多个文件
-
–o
垂直排列 或–O
水平排列 选项打开多个文件,例如vim -o lesson4 lesson5 lesson6