循序渐进的学vim
vim的模式
- normal(普通)模式 (默认)
- insert(插入)模式
- command(命令)模式,:wq 保存退出;:vs 竖分屏;:sp 横分屏;:
- Visula(可视)模式,一般用来块状选择文本,普通模式下使用v进入visual选择,使用大V选择行,使用Ctrl+v进行方块选择
normal模式的使用
- 移动
- 普通移动
- h(左)j(下)k(上)l(右)> >
- w/W 移动到下一个word/Word开头,e/E 下一个word/Word尾
- b/B回到上一个word/Word开头,可以理解为backword
word指的是以非空白符分割的单词,Word以空白符分割的单词
- 行间搜索移动(其实就是搜索一个字符并且移动到该字符)
- 使用f{char} 可以移动到char字符上,t移动到char的前一个字符
- 如果第一次没有搜到,可以用分号(;)/逗号(,)继续 搜索该行下一个/上一个
- 大写F表示反过来搜索前面的字符
- 快速移动到一行的行首或者行尾
- 0移动到行首第一个字符,^移动到非空白字符
- $移动到行尾,g_移动到行尾非空白字符
- 记住常用的0和$就可以满足日常需求
- 在句子(sentence)和段落(paragraph)间移动(不常用)
- 使用括号( )在句子间移动,你可以用:help (来查看帮助
- 使用{}在段落之间移动
- 快速删除
- x删除一个字符
- dw删除一个单词 daw删除单词包括空格 diw删除单词不包括空格
- d0删除到行首,d$删除到行尾
- x,d多可以配合数字重复x,d命令
- 快速修改
- r(replace),c(change),s(substitute)删除并进入插入模式
- 查找
◆使用/或者?进行前向或者反向搜索
◆使用n/N跳转到下一-个或者上一-个匹配
◆使用*或者#进行当前单词的前向和后向匹配
- 搜索替换
- :[range]s[ubstitute]/{pattern}/{string}/[flags]
range表示范围比如:10, 20表示10-20行,%表示全部
Flags有几个常用的标志
◆g(global) 表示全局范围内执行
◆c(confirm)表示确认 ,可以确认或者拒绝修改
◆n(number)报告匹配到的次数而不替换,可以用来查询匹配次数
normal模式进入 insert模式
a append(当前字符后)
i insert(当前字符前)
o open a line below(新行首)
A append after line (行尾)
I insert before line (行首)
O append a line above (上一行)
insert模式的使用
- Ctrl+h 删除上一个字符
- Ctrl+w 删除上一个单词
- Ctrl+u 删除当前行
- Ctrl+a 定位到行首
- Ctrl+e 定位到行尾
- Ctrl+b 前移
- Ctrl+f 后移