大小写敏感
这是一个你不需要使用鼠标,不需使用小键盘,只需要使用大键盘(87)就可以完成很多复杂功能文本编辑的编辑器
配置vs code vim以禁用其某些快捷键,能够能好得使用它vimconfig
模式
-
[ESC]→ Normal ,可以使用快捷键命令,或按:输入命令行。 -
i,I,o,O,a,A→ Insert ,插入模式,可以输入文本 -
v→ Visual ,可视模式,移动光标可以选择文本-
V→ Visual line , 可视行模式, 总是整行整行的选中 -
<C-v>→ Visual block ,可视块模式,可以完成多行同时操作
-
-
R→ Replace 替换模式,正常模式下,按R进入。
-
:wq→ 存盘 + 退出 (:w存盘,:q退出) (:w 后可以跟文件名 -
.→ 重复上一个命令 -
3.→ 重复 3 次上一个命令,在很多情况下都可以使用数字重复执行命令 -
:help <command>→ 显示相关命令的帮助。你也可以就输入:help而不跟命令。(退出帮助需要输入:q)
各种进入插入模式的方式
-
i→ 在光标前插入 -
I→ 行首插入 -
a→ 在光标后插入 -
A→ 行尾插入 -
o→ 在当前行后插入一个新行 -
O→ 在当前行前插入一个新行 -
s→ 删除光标所在处字符,并进入插入模式 -
S→ 删除光标所在的行,并进入插入模式
复制 粘贴
-
yy或Y→ 拷贝当前行 -
<line>yy→ 拷贝从 光标所在行 到 第n行 的内容 -
p→ [paste] 粘贴剪贴板 (p是表示在当前光标之后,P表示在之前) -
2p→ 粘贴文本2次 -
3iword[ESC]→ 会写下"wordwordword", 重复3次world
ri
在vs code vim中可以通过设置
"vim.useSystemClipboard":true使用系统的剪贴板 (默认使用vim自己的临时缓冲区)
删除文本
删除的内容将会存到剪贴板里
-
x→ 删当前光标所在的一个字符 -
dd→ 删除当前行 -
2dd→ 删除2行 -
d→ [delete] 在选择模式下,删除选择内容 -
dt<char>→ 删除所有的内容,直到遇到匹配字符,不包括匹配字符 -
dw→ 删除光标所在的字符至单词结束的内容,例如str = (*this)光标在h,将会删除his,更多命令看下面 可视化选择组合 -
c<move>→ 删除并进入插入模式,<move>可以是任何移动光标的命令,如ciw,cf<char> -
<C-h>→ 在插入模式,删除前一个字符 -
<C-w>→ 在插入模式,删除前一个单词 -
<C-u>→ 在插入模式,删除前面一行所有字符
简单的移动光标
-
h,j,k,l→你也可以使用光标键 (←↓↑→) -
0→ 数字零,到行头 -
^→ 到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等) -
$→ 到本行行尾 -
g_ → 到本行最后一个不是blank字符的位置。 -
/<word>→ 搜索 匹配 的字符串, 如果搜索出多个匹配,可按n键到下一个) -
<line>G→ [go to] 到第 n 行 -
gg→ 到第一行。(相当于1G,或 :1) -
G→ 到最后一行。
按单词移动光标
word_moves
-
w和W→ 到下一个单词的开头 -
e和E→ 到下一个单词的结尾 -
b和B→ 到上一个单词的开头
如果你认为单词是由默认方式,那么就用小写的e和w。默认上来说,一个单词由字母,数字和下划线组成(程序变量)
如果你认为单词是由blank字符分隔符,那么你需要使用大写的E和W。(程序语句)
-
%: 匹配括号移动,包括(,{,[你需要把光标先移到括号上 -
*和#: 匹配单词移动 (光标当前所在的单词),移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个)
line_moves
-
0→ 到行头 -
^→ 到本行的第一个非blank字符 -
$→ 到行尾 -
g_→ 到本行最后一个不是blank字符的位置。 -
f<char>→ 到本行下一个 匹配字符处,大写的F为本行上一个,例如fs到下一个为s的字符 -
t<char>→ 到本行下一个 匹配字符前的第一个字符,大写的T为本行上一个
可视化选择组合(重要)
-
<action><move>-
action可以是任何的命令,如d(删除)c,y(拷贝),v(可以视模式选择)。 -
move任何移动光标的命令
当光标在
==之后的blank字符上:
avtion_move
下一个组合
<action><mode><object>可以同时往光标两边扩充,光标可以在选择内容的任意位置上;而当前组合中,光标只能在其中的一端。 -
-
<action><mode><object>-
action与上同,可以是任何的命令 -
mode可以是:-
aattach, 如果<object>是特别的字符的话,那么将会把括号给包含在内,其他情况与i等价 -
iinner, 不包含括号
-
-
-
object可能是: w 一个单词 (a,i等价), W 以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符(能将文字括起来):",',),},],>,(不区分左右符号)当光标在
I上:
可视块操作 向多行插入
-
<C-v><move>I向多行首部添加-
<C-v>进入可视块 -
<move>移动光标选择行,我在这里用的是G, (可使用 j 或 <C-d> 或是 /pattern 或是 % 等……) -
I进入插入模式
-
向行首添加
-
<C-v>G$A向多行尾部添加
向行尾添加
缩进
-
J→ 把所有的行连接起来,变成一行 -
<或>→ 左右缩进 -
=→ 自动缩进
宏录制 把你的命令临时保存起来
-
q<char>→ 开始以<char>为名字进行宏录制 -
q→ 在宏录制时停止录制 -
@<char>→ replay宏<char> -
@@→ 快速replay最新录制的宏
示例
在一个只有一行且这一行只有“1”的文本中,键入如下命令:
-
qaYp<C-a>q -
qa开始录制,名字为a-
Yp复制行 -
<C-a>增加1 -
q停止录制
-
-
@a→ 在1下面写下 2 -
@@→ 在2 正面写下3 -
现在做
100@@会创建新的100行,并把数据增加到 103.
replay
在gif图中,录制宏时也会实际执行,所以会比原文多一个,可能是vs code vim的原因











网友评论