1、 vim相对于vi做了哪些提升
- vim支持多级撤销
- vim可以跨平台,vi只能运行于unix内核系统,vim可以运行到windows系统中
- vim支持语法高亮
- vim支持图形界面
2、vim操作模式:
(1)
底行模式:last line mode(有人也称这种模式为命令行模式)
在命令模式下,输入: / ? 三个符号中的任意一个,进入底行模式。 “:”,输入命令,保存、退出重命名等。“/”“?”则是查找,后面跟上要查找的内容。
(2)输入模式:insert mode(有人称这种模式叫做编辑模式)
在命令模式下,输入i,I,a,A,o,O,r,R等任意一个字符,进入输入模式。此时左下方会出现INSERT 的字样,此时对文本可以进行编辑,输入的所有的字符都为真正的字符,而不是对应的命令。按【est】键,退出输入模式,进入到命令模式中。
(3)
命令模式:command mode(有人也称这种模式叫做一般模式)
打开或者创建一个文件的时候默认的是命令模式,可以移动光标、选择内容、删除字符或者删除整行、删除块、也可以复制粘贴等操作。
3、操作命令
(1)底行模式(其实是在一般模式下,输入:/?进入底行模式,再输入w,q等命令,由于命令是连续出现,如:w :q等,因此这里讲的底行模式,其实也是一般模式的操作,因此我们经常会混淆底行模式和一般模式)
下面列举底行模式的常用命令
打开文件、保存、另存为、关闭文件 | |
命令 | 说明 |
:w | //保存文件 |
:w vpser.net | //保存至vpser.net文件 |
:q | //退出编辑器,如果文件已修改请使用下面的命令 |
:q! | //退出编辑器,且不保存 |
:wq | //退出编辑器,且保存文件 |
:w[finename] | 将编辑器的数据保存成为另一个文件 |
:r[filename] | 在编辑的数据中,读入另一个文件的数据,即将filename这个文件内容加到光标所在行后面 |
:n1,n2 w[filename] | 将n1到n2的内容保存为filename文件 |
:! command | 暂时离开vi到命令行模式下执行command的显示结果。例如, :! ls /home 即可在vi当中查看/home下面里ls输出的文件信息 |
查找替换 | |
/word | 从文档开始,向下查找名为word的字符串 |
?word | 从文档末尾向上查找名为word的字符串 |
n | 重复前一个查找的操作,也就是重复上面的/word 或者?word,而不需要再次输入/word 或者?word。例如,查找hello,执行/hello,则从文档末尾查找到一个hello,输入n之后,会继续向上查找hello |
N | 与n相反,例如,输入?hello后,按N是向上查找,输入/hello后,是向下查找 |
:n1,n2s/word1/word2/g | n1和n2为数字,在第n1行与n2行之间寻找word1这个字符串并将它替换为word2. |
:1,$s/word1/word2/g | 从第一行到最后一行查找word1字符串,并将该字符串替换为word2 |
:1,$s/word1/word2/gc | 从第一行到最后一行查找word1字符串,并将该字符串替换为word2。在替换之前,显示提示字符给用户确认是否需要替换。 |
vim行号设置与取消 | |
:set nu | 显示行号,设置之后,会在每一行的前缀显示改行的行号 |
:set nonu | 取消行号 |
(2)插入模式,在一般模式下,输入以下这些命令,即进入插入模式,进入插入模式后,所有字符为输入字符,不再是命令。
插入模式 | |
命令 | 说明 |
a | 在当前光标位置的右边添加文本 |
i | 在当前光标位置的左边添加文本 |
A | 在当前行的末尾位置添加文本 |
I | 在当前行的开始处添加文本(非空字符的行首) |
O | 在当前行的上面新建一行 |
o | 在当前行的下面新建一行 |
R | 替换(覆盖)当前光标位置及后面的若干文本 |
J | 合并光标所在行及下一行为一行(依然在命令模式) |
(3)一般模式,对文件进行光标移动、删除、复制、粘贴等操作
光标移动 | |
命令 | 说明 |
移动字符 | |
h 或左箭头 | 光标向左移动一个字符 |
j 或下箭头 | 光标向下移动一个字符 |
k 或上箭头 | 光标向上移动一个字符 |
l 或右箭头 | 光标向右移动一个字符 |
n<space> | n代表数字,例如30,按下数字后再空格,光标会向右移动这一行的n个字符。 |
0或home键 | 移动到这一行的最前面的字符处 |
$或end键 | 移动到这一行的最后面字符处 |
移动页 | |
ctrl f | 屏幕向下移动一页,pagedown |
ctrl b | 屏幕向上移动一页,pageup |
ctrl d | 屏幕向下移动半页 |
ctrl u | 屏幕向上移动半页 |
移动行 | |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 光标移动到这个文件的最后一行的第一个字符 |
nG | 光标移动到这个文件的第n行的第一个字符 |
gg | 光标移动到这个文件的第一行的第一个字符 |
n[enter] |
删除 | |
命令 | 说明 |
x,X | 一行中,x为向后删除一个字符,相当于delete键;X为向前删除一个字符,相当于backspace键 |
nx,nX | nx为向后删除n个字符,nX为向前删除n个字符 |
dd | 删除当前行 |
ndd | 删除光标所在的向下n行 |
d1G | 删除光标所在到第一行的数据 |
dG | 删除光标所在到最后一行的数据 |
d$ | 删除光标所在行,光标所在位置到该行最后一个字符 |
d0 | 删除光标所在行,光标所在位置到该行第一个字符 |
复制 | |
yy | 复制整行 |
nyy | 复制光标所在的向下n行的数据 |
y1G | 复制光标所在行到第一行的数据 |
yG | 复制光标所在行到最后一行的数据 |
y$ | 复制光标所在行,光标所在位置到该行最后一个字符 |
y0 | 复制光标所在行,光标所在位置到该行第一个字符 |
粘贴 | |
p,P | p为在光标所在位置下一行粘贴,P为在光标所在位置上一行粘贴 |
4、块选择
块选择操作 | |
v | 小v,字符选择,将光标经过的字符进行选择 |
V | 大v,行选择,将光标经过的行进行选择 |
ctrl v | 块选择,可以用长方形的方式进行选择 |
y | 选择的地方复制 |
d | 选择的地方删除 |
5、多文件操作
一个vim命令,可以同时操作多个文件,这样也极大的提高了操作效率,不过对于新手来讲,还是感觉同时操作多个文件有点转不过来啊。
首先,打个多个文件
vim file1 file2 file3
多个文件之间进行切换
多文件编辑 | |
:n | 编辑下一个文件 |
:N | 编辑上一个文件 |
:files | 列出目前这个vim的打开的所有文件 |
以上命令包含了大部分常用命令,这些命令之间有很多的相似或关联关系等。乍一看之下很多命令,其实总结下来却很有规律。尤其对于初学者,需要自己多花些时间去练习去实践,而不能看见一对命令就逃跑、用到时候再去百度。因为很多小技巧,你是不知道要去怎么查的。
以上学习参考了很多资料,由于内容浅显,网上资料很多,同时个人作为初学者,难免有遗漏、错误,欢迎读者指正!