三种模式:
1.编辑模式
1)进入编辑模式:命令模式按a A I i O o中任意键;
a (append) 由光标之后加入资料。
A 由该行之末加入资料。
i (insert) 由光标之前加入资料。
I 由该行之首加入资料。
o (open) 新增一行于该行之下供输入资料之用。
O 新增一行于该行之上供输入资料之用
2)退出编辑模式:按esc,结束插入模式;输入冒号进入底行模式,
2.命令模式
1)编辑进命令:exc
2)连续按两次大写字母<Z>,保存退出
3.末行模式
1)命令进末行:输入“:”
2):w vi保存当前编辑的文件,但并不退出vi,而是继续等待用户输入命令
3):w a.c(w表示写入了a.c文件)
4):w! <newfile> 把当前文件的内容保存到指定的文件newfile中,如果newfile已经存在,则覆盖原有内容。
5):q 系统退出vi返回到shell。在用此命令时,若编辑的文件没有被保存,则vi在窗口的最末行给出提示信息。
6):q! vi放弃所作修改而直接退到shell下。
7):wq 先保存文件,然后再退出vi返回到shell
8):X 该命令的功能与命令模式下的ZZ命令功能相同
9): 命令
10)/ 查找
11)? 查找
VI环境的设定
set nu: 添加行号显示
set nonu: 取消行号显示
set autoindent: 自动缩进
set noautoindent: 取消自动缩进
noh去除搜索后的高亮显示
搜寻
在vi中可搜寻某一字串,使光标移至该处。
/字串 往光标之后寻找该字符串。
?字串 往光标之前寻找该字符串。
n 往下继续寻找下一个相同的字符串。
N 往上继续寻找下一个相同的字符串。
取消前一动作
即复原执行上一指令前的内容。需要在命令模式下
u 恢复最后一个指令之前的结果。
U 恢复光标该行之所有改变。
末行模式下进行撤消动作:undo
编辑多个文件
vi亦提供同时编辑多个文件的功能,方法如下:
#vi file1 file2 ..
当第一个文件编辑完成后,可利用『:w』将该缓冲区存档,而后再利用 『:n』载入下一个文件, 『:N』载入上一个文件
同时vi多个文件时,CTRL-SHIFT-6回到上一个文件,在本次vi的文件和上次vi的文件之间切换。也可以使用:e#进行切换
字符串搜寻与替换
s(substitute)指令可搜寻某行列范围。
g(global)指令则可搜寻整个编辑缓冲区的资料。
:10,20s/old/new/ 将第10行至第20行资料的“old”改成“new”。替换匹配到第一个字符串
: 10,20s/old/new/g 替换该行匹配到的所有字符串
:%s/old/new/g 将编辑缓冲区中所有的“old”改成“new” 。
vi常使用的快捷键
h 将光标左移一格。
j 将光标下移一格。
k 将光标上移一格。
l 将光标右移一格。
0 把光标移到当前行的第一个字符处。
$ 把光标移到当前行的最后一个字符处
Ctrl + f向后滚一页。
Ctrl + d向后滚半页。
Ctrl + b向前滚一页。
Ctrl + u向前滚半页。
Ctrl + e屏幕向下滚一行。
Ctrl + y屏幕项上滚一行。
命令模式下:nG 将光标移至行号所指定的行的行首
在末行模式下,:n 命令,将光标移动至指定行
命令模式下的文本编辑/文本的删除
字符删除命令:
x
字和行删除命令
db dd <n>dd
删除操作
x:删除光标所在的文字
nx:删除光标后面的n个字符
X:删除光标前面的一个字符
nX:删除光标前面的n个字符
dd:删除光标所在行
ndd:删除光标所在行向下数n行
复制:
命令方式下输入yy或nyy,表示复制当前行或当前行开始的连续n行,n是一个具体的整数。
将光标移到要复制的地方,按p键粘贴
VIM格式设置
命令举例:
1.vi a.c +4 表示希望在进入vi之后,光标处于文件中第4行上,+”表示希望在进入vi之后光标处于文件最末行。