文章目录
- 打开文件
- 模式
- vim模式的切换
- 命令模式--> 插入模式
- 三种模式切换
- 扩展模式:
- 命令模式
- 光标跳转
- 命令模式下删除命令
- 命令模式下的复制命令
- 命令模式下的粘贴命令
- 命令模式下的撤销命令
- 扩展命令模式下的地址定界
- 扩展命令模式下的模式匹配
- 扩展命令模式下的查找
- 扩展命令模式下的查找替换
- 自定义vim特性
打开文件
命令:vim [OPTION]... FILE...
[OPTION] | 作用 |
+# | 打开文件后,让光标处于第#行的行首,+默认行尾 |
+/PATTERN | 打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首 |
–b file | 二进制方式打开文件 |
–d file1 file2… | 比较多个文件 |
-m file | 只读打开文件 |
如果该文件存在,文件被打开并显示内容
如果该文件不存在,当编辑后第一次存盘时创建它
模式
击键行为是依赖于vim的的“模式”
三种主要模式:
1、命令(Normal)模式:默认模式,移动光标,剪切/粘贴文本
2、插入(Insert)或编辑模式:修改文本
3、扩展命令(extended command )模式:保存,退出等
Esc键退出当前模式
Esc键Esc键总是返回到命令模式
三种模式的转换:
vim模式的切换
命令模式–> 插入模式
按键 | 作用 |
i | insert, 在光标所在处输入 |
I | 在当前光标所在行的行首输入 |
a | append, 在光标所在处后面输入 |
A | 在当前光标所在行的行尾输入 |
o | 在当前光标所在行的下方打开一个新行 |
O | 在当前光标所在行的上方打开一个新行 |
三种模式切换
模式转换 | 使用的按键 |
插入模式--------> 命令模式 | ESC键 |
命令模式--------> 扩展命令模式 | : |
扩展命令模式--------> 命令模式 | ESC键,enter键 |
扩展模式:
按“ : ”进入Ex模式
创建一个命令提示符: 处于底部的屏幕左侧
命令 | 作用 |
q | 退出 |
q! | 强制退出,丢弃做出的修改 |
w | 写(存)磁盘文件 |
wq | 保存退出 |
x | 保存退出 |
r filename | 读文件内容到当前文件中 |
w filename | 将当前文件内容写入另一个文件 |
!command | 执行命令 |
r !command | 读入命令的输出 |
命令模式
组合 | 作用 |
ZZ | 保存退出 |
ZQ | 不保存退出 |
光标跳转
字符间跳转:
h: 左l: 右j: 下k: 上
#COMMAND:跳转由#指定的个数的字符
单词间跳转:
w:下一个单词的词首
e:当前或下一单词的词尾
b:当前或前一个单词的词首
#COMMAND:由#指定一次跳转的单词数
当前页跳转:
H:页首M:页中间行L:页底
行首行尾跳转:
^: 跳转至行首的第一个非空白字符
0: 跳转至行首
$: 跳转至行尾
行间移动:
#G、扩展模式:# :跳转至由#指定行
G:最后一行
1G, gg: 第一行
命令模式下删除命令
删除命令 | 作用 |
d | 删除命令,可结合光标跳转字符,实现范围删除 |
d$ | 删除到行尾 |
d^ | 删除到非空行首 |
d0 | 删除到行首 |
dd | 删除光标所在的行 |
#dd | 多行删除,#即代表几行 |
D | 从当前光标位置一直删除到行尾,留空行,等同于d$ |
命令模式下的复制命令
复制命令(y, yank) | 作用 |
y | 复制,行为相似于d命令 |
y$ | 从光标处开始复制本行剩余的内容 |
y0 | 从本行第一个内容开始复制到光标的前一个内容 |
y^ | 从本行第一个内容开始复制到光标处的前一个内容,同y0 |
ye | 从光标处开始复制本行剩余的内容,同y$ |
yw | 从光标处开始复制本行剩余的内容,同y$ |
yb | 从本行第一个内容开始复制到光标处的前一个内容,同y0 |
yy | 复制行 |
#yy | 复制多行,#即代表几行 |
Y | 复制整行 |
命令模式下的粘贴命令
粘贴命令(p, paste):
p:缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面
命令模式下的撤销命令
u撤销最近的更改
#u撤销之前多次更改(#代表的是数字,即我们如果撤销3步的话,命令就是“3u”)
扩展命令模式下的地址定界
地址定界
:start_pos,end_pos
命令 | 作用 |
# | 具体第#行,例如2表示第2行 |
#,# | 从左侧#表示起始行,到右侧#表示结尾行 |
#,+# | 从左侧#表示的起始行,加上右侧#表示的行数 |
2,+3 | 表示2到5行 |
. | 当前行 |
** $** | 最后一行 |
.,$-1 | 当前行到倒数第二行 |
% | 全文, 相当于1,$ |
扩展命令模式下的模式匹配
模式形式 | 作用 |
/pat1/,/pat2/ | 从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束 |
#,/pat/ | 从#行开始进行模式匹配 |
/pat/,$ | 模式匹配直到最后一行 |
使用方式:可以后跟一个编辑命令
d:删除
y:复制
w file: 将范围内的行另存至指定文件中
r file:在指定位置插入指定文件中的所有内容
扩展命令模式下的查找
/PATTERN:从当前光标所在处向文件尾部查找
?PATTERN:从当前光标所在处向文件首部查找
n:与命令同方向
N:与命令反方向
我们可以在输入了要查找的内容并且查找到了之后想要继续向下查找只需要按键n或者N即可按照正反方向进行查找
扩展命令模式下的查找替换
s: 在扩展模式下完成查找替换操作
格式:s/要查找的内容/替换为的内容/修饰符
要查找的内容: 可使用模式
替换为的内容: 不能使用模式,但可以使用\1, \2, …等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容
修饰符:
i: 忽略大小写
g: 光标所在行全局替换;默认情况下,每一行只替换第一次出现
gc:光标所在行全局替换,每次替换前询问
%s:整个脚本中全局替换
查找替换中的分隔符/可替换为其它字符,例如
s@/etc@/var@g
s#/boot#/#i
自定义vim特性
配置文件:永久有效
全局:/etc/vimrc
个人:~/.vimrc
扩展模式:当前vim进程有效
(1) 行号
显示:set number, 简写为set nu
取消显示:set nonumber, 简写为set nonu
(2) 括号成对匹配
匹配:set showmatch, 简写为set sm
取消:set nosm
(3) 文件格式
启用windows格式:set fileformat=dos
启用unix格式:set fileformat=unix
(4) 设置文本宽度
:set textwidth=65 (vimonly)
:set wrapmargin=15