打开文件
vi 文件名:打开文件(如果文件不存在则创建文件)
注意刚刚进入时是命令模式,在此模式下是不能编辑文本的。
命令模式、拓展模式与输入模式的切换
转换 | 方法 |
---|---|
输入模式->命令模式 | ESC |
命令模式->拓展模式 | : |
拓展模式->命令模式 | 在:后面的命令执行完之后会自动从拓展模式到命令模式 |
命令模式->输入模式的方法有很多种:
按键 | 说明 |
---|---|
i | 在光标的前面增加 |
I(大写i) | 在这行的最前面增加 |
a | 在光标的后面增加 |
o | 在光标的下面 新增一行 |
r | 替换光标这个字母 但是并不进入输入模式 |
退出与保存
注意不要在输入模式下,要在命令模式下退出(不然不会退出会把这些写进去呀)
也即在打下面的命令之前要先按ESC
命令 | 说明 |
---|---|
:wq | 保存并退出 |
:x | 保存 |
:q! | 强制退出不保存 |
:q | 什么都不改的情况下退出 |
命令模式下的一些命令
光标移动
命令(按键) | 说明 |
---|---|
h | 光标向左移一个space |
l(小写L) | 光标向右移一个space |
j | 光标向下移一个space |
k | 光标向上移一个space |
w | 跳到这个单词后面 |
b | 跳到这个单词的最前面 |
e | 跳到这个单词最后一个字母 |
ctrl+f | 向下一个屏幕 |
ctrl+b | 向上一个屏幕 |
ctrl+u | 向上半个屏幕 |
ctrl+d | 向下半个屏幕 |
$ | 把光标移动到这行的最后面 |
^ | 把光标移动到这行的最前面(有内容的最前面) |
0 | 把光标移动到这行的最前面(最左端 空格也可以) |
注意上面的很多都是可以加数字的,例如5w、5k 等,代表的是移动多少个单词/行数/格数。
删除
命令 | 说明 |
---|---|
x | 删除当前光标下字符 |
X | 删除光标前的一个字符 |
dw | 删除当前整个单词 |
dd | 删除当前行 |
d$ | 删除当前光标到这一行结尾的内容 |
d0 | 删除当前光标到这一行开头的内容 |
复制和粘贴
命令 | 说明 |
---|---|
yy | 复制当前一行 |
y$ | 复制当前光标到末尾的内容 |
yw | 复制当前光标到此单词末尾 |
p | 在光标后面粘贴 |
P | 在光标前粘贴 |
自由复制:v-上下左右选中(hjkl)-y
其他
命令 | 说明 |
---|---|
u | undo最后一个操作 |
S | 替换整行 |
s | 替换当前光标 |
Ctrl+r | 取消最近一次undo操作 |
拓展模式下的一些命令
字符串搜索
命令 | 说明 |
---|---|
:/要搜索的字符串 | (按n可以看下一个位置) 从光标开始的位置向下搜索 |
:?要搜索的字符串 | 向上搜索 按n查看上一个位置 |
示例:
g/s1/s//s2/ 全局搜索s1并且将每行第一个s1用s2进行替换
g/s1/s//s2/g 全局搜索并全局替换
编辑多个文件
①vi filename1 filename2……
默认是编辑第一个
命令 | 说明 |
---|---|
:next | 切换至下一个文件 |
:prev | 切换至前一个文件 |
:last | 切换至最后一个文件 |
:first | 切换至第一个文件 |
:q | 退出当前文件 |
:qa | 全部退出 |
②:sp(上下分屏 ,:vsp 左右分屏
e:文件名
ctrl+w 切换
e、w、r
e:编辑
命令 | 说明 |
---|---|
:e filename | 关闭当前编辑的文件,并开启新的文件。 如果对当前文件的修改未保存,vi会警告 |
:e! filename | 放弃对当前文件的修改,编辑新的文件 |
:e+filename | 开始新的文件,并从文件尾开始编辑 |
:e+n filename | 开始新的文件,并从第n行开始编辑 |
w filename
w>>filename 写到文件中的最后一行
例如(,表示几行和几行之间
:20,$ w newfile 则这个文件从20行到末尾会被copy到新的文件中
:20,$ w >> newfile 追加到末尾不覆盖,如果是前面的那个就会被覆盖
r代表读
设置行号
:set number
另:看到一篇比较全的博客,以后有问题也可以去看看.