首页 > 代码库 > 08vi使用

08vi使用

基本框架:

a)         Vi的三种工作模式

b)         编辑模式

c)         插入模式

d)         命令模式

 

1、 Vi的三种工作模式

      

             

                    

2、 编辑模式:不能所见即所得

 

l  光标定位

 k              上移;

j              下移;

h              左移;

l              右移。

ctrl+f          在文件中前移一页(相当于page down)。

ctrl+b          在文件中后移一页(相当于page up)。

H               将光标移到屏幕上的起始行(或最上行);

M               将光标移到屏幕中间;

L               将光标移到屏幕最后一行。

gg               文件的开头

G                文件的末尾

0               数字0,左移光标到本行的开始;

$               右移光标,到本行的末尾;

 

l  搜索字符串

/str1               正向搜索字符串 str1

n                   继续搜索,找出 str1 字符串下次出现的位置

?str2               反向搜索字符串 str2

 

l  替换和删除

rc              用 c 替换光标所指向的当前字符

nrc             用 c 替换光标所指向的前 n 个字符

x               删除光标所指向的当前字符

dd              删除光标所在行,并去除空隙

ndd             删除 n 行内容,并去除空隙

其他常用的删除命令是:

d$              从当前光标起删除字符直到行的结束;

d0              从当前光标起删除字符直到行的开始;

dgg             文件开头到当前光标

dG              当前光标到文件尾

J               删除本行的回车符,并和下一行合并。

 

l  剪切和粘贴

小写字母 p       将缓冲区的内容粘贴到光标的后面

大写字母 P       将缓冲区的内容粘贴到光标的前面

yy               复制当前行到内存缓冲区

nyy              复制 n 行内容到内存缓冲区

 

l  撤销和重复

u               撤消前一条命令的结果

.               重复最后一条修改正文的命令

           

3、 插入模式  可以所见即所得

i               在光标左侧插入正文

a               在光标右侧插入正文

o               在光标所在行的下一行增添新行

O               在光标所在行的上一行增添新行

I               在光标所在行的开头插入

A               在光标所在行的末尾插入

 

4、 命令模式

退出命令

: q                 在未作修改的情况下退出

: q!                强制退出,放弃所有修改

:wq                保存退出

另外在编辑模式下可以按大写的ZZ也能保存退出

行号与文件

: n             将光标移到第 n 行

:1,.w file      将第 1 行至当前行写入 file 文件

:1,$w file      将所有内容写入 file 文件,  相当于 :w file 命令

:w file         将当前编辑的内容写到 file 文件里,保持原有文件的内容不变

:e file         编辑新文件

字符串搜索

     跟编辑模式类似

正则表达式

^               放在字符串前面,匹配行首的字;

$               放在字符串后面,匹配行尾的字;

\<              匹配一个字的字头;

\>              匹配一个字的字尾;

.             匹配任何单个正文字符;

[str]           匹配str中的任何单个字符;

[^str]          匹配任何不在str中的单个字符;

[a-b]           匹配a到b之间的任一字符;

*               匹配前一个字符的0次或多次出现;

\               不管后面的字符的特殊含义。

正文替换

:s/str1/str2/       替换当前行中所有出现的字符串 str1

:s/str1/str2/g      替换当前行中首次出现的字符串 str1

:1,$ s/str1/str2    替换全文中所有出现的字符串 str1

删除正文

:d                  删除光标所在行

:3d                 删除第 3 行

:.,$d               删除当前行至正文的末尾

:/str1/,/str2/d     删除从字符串 str1 到 str2 的所有行

选项设置

 如果想要显示行号,首先切换到用户的家目录,然后 vi 任意一个新文件,然后在命令行输入mk,目的是为了生成 .exrc文件,然后在.exrc文件中添加 set number

shell切换

:! command          执行完 command后回到 vi

    另外也可以在vi命令行输入sh,然后就切换到shell环境,在shell环境中输入exit就能退回到vi环境。

 

 

5、 如何进行多窗口的编辑

 

l  打开多文件:

Vim –o filename1 filename2   横向显示多文件

Vim –O filename1 filename2   纵向显示多文件

 

如果已经打开一个文件,可以用:     sp +  文件名   上下多窗口显示

vs +  文件名   左右多窗口显示

也可以用new, vnew 来实现相同的功能

 

l  多窗口间切换:

Ctrl + w+ w 在多窗口间进行切换

也可以通过在命令行输入first,wnext,last使相应的文件切换到当前窗口

 

l  显示当前编辑的文件信息:

:f      打印当前文件名称和状态,如文件的行数、光标所在的行号等

另外跟f命令功能相近的有:args,ctrl + g(在编辑模式下输入)

 

l  退出:

exit, quit(q), close : 关闭一个窗口

wquitall(wqall):  保存并关闭多个文件

 

 

6、其它细节:

zo   展开折叠处

zm   进行折叠

gg=G  代码对齐(在编辑模式下输入)