1,三种切换模式
insert 、 command、 normal
2,normal模式
2.1 移动光标
hjkl:方向键
H(大小):光标快速定位到页面的顶部
M(大小):光标快速定位到页面的中部
L(大小):光标快速定位到页面的低部
0 :数字零,到行头
^ :到本行第一个不是blank字符的位置(所谓blank字符就是空格,tab,换行,回车等)
$ :到本行行尾
g_ : 到本行最后一个不是blank字符的位置。
这几个符号都是需要按住shift键操作的。
2.2 编辑
x:删除光标所在位置的字符
dd:删除当前行,并把删除的行存到剪贴板里
yy:复制当前行到剪贴板
ye:复制整个单词,使用w回到单词的首
p: paste,粘贴剪贴板里的东西
v (可视化的选择):v以后,按照移动光标的方式,就可以选择了,然后y就复制到剪贴板上,p粘贴搞定。
2.3撤销操作
u : undo,这是一个很大的操作,会返回很多不步。
ctrl+r : redo,这也是一个很大的操作,会redo很多不步。
单步的?
2.4 快速到达
:number,直接到达某一行
number,增量式到达某一行
gg → 到第一行
G → 到最后一行
w (word)→ 到下一个单词的开头
b(begin)→到上一个单词的开头
e (end)→ 到下一个单词的结尾
% : 匹配括号移动,包括 (, {, [,你需要把光标先移到括号上
* 和 #: 匹配光标当前所在的单词,移动光标到下一个(或上一个)匹配单词(*是下一个,#是上一个),这个就是匹配单词的。
2.5 查找到某一个位子
fa (find a)→ 到下一个为a的字符处,你也可以fs到下一个为s的字符。这个可以和v(可视化合作使用,快读到达想要选择的地方),只能在本行内定位!!!
3fa → 到第3个为a的字符处,你也可以2fs到第2个为s的字符。
Fa向前查找。
ta(till a) 向前查找上一个字符a的地方。(有问题,不能实现)
2.6 区域选择
区域选择 <action>a<object> 或 <action>i<object>
action可以是任何的命令,如 d (删除), y (拷贝), v (可以视模式选择)。
object 可能是: w 一个单词, W 一个以空格为分隔的单词, s 一个句字, p 一个段落。也可以是一个特别的字符:"、 '、 )、 }、 ]。
2.7 重复命令
. (小数点) : 可以重复上一次的命令
N.: 重复N次上一次某个命令
3,insert的进入
i:在光标前插入
a :在光标后插入
o :在当前行后插入一个新行
O : 在当前行前插入一个新行
cw :替换从光标所在位置后到一个单词结尾的字符,就是删除一整个单词
4,command
:w →存盘
:q →quit
:saveas test.txt →另存为文件test.txt
:e <path/to/file> → 打开一个文件
:q! → 退出不保存
:qa! 强行退出所有的正在编辑的文件,就算别的文件有更改。
:bn 和 :bp → 你可以同时打开很多文件,使用这两个命令来切换下一个或上一个文件。(:n=next,再linux下使用,windows下都是分开打开的。
5,查找
:/ 向后查找内容,查到后会高亮显示。按住n向后,N向前。
:?向前查找内容,查到后会高亮显示。按住N向后,n向前。
6,替换
s/foo/bar/g: 替换该行的左右foo为bar
7,标记
m+ [a-z],文件内标记
m+[A-Z],全局的标记
·(1旁边的符号)+[a-z]/[A-Z]就可以跳转到标记的位置
·.回到刚才标记的位置
8,宏的定义和使用
q+[a-z]:使用q+一个字母,定义一个宏变量,也就是标示一个宏。
@+[a-z]:使用@+一个字母,使用之前定义的一个宏。
@@:使用刚刚使用过的一个宏。(不能使用)