也可建立vi到vim的符号连接(即实际调用的是vim)

 

# mv /bin/vi /bin/vi.bak

 

# ln -s /usr/bin/vim /bin/vi

 

 

 

进入vi的命令:

 

vi  直接进入编辑并创建新文件

 

vi filename  编辑文件(不存在则创建文件),并将光标置于第一行首

 

vi +n filename  打开文件,并将光标置于第n行首

 

vi + filename   打开文件,并将光标置于最后一行首

 

vi +/pattern filename  打开文件,并将光标置于第一个与pattern匹配的串处

 

vi -r filename   在上次正用vi编辑时发生系统崩溃,恢复文件

 

vi file1....filen   打开多个文件,依次进行编辑

 

vi -o aaa bbb   水平窗口打开aaa,bbb两个文件

 

vi -O aaa bbb   垂直窗口打开aaa,bbb两个文件(Ctrl+W两次可在多个文件间切换)

 

多文本编辑的按键:

:n  编辑下一个文件

:N  编辑上一个文件

:files  列出目前这个vi的打开的所有文件

 

多窗口情况下的按键功能:

:sp [filename]  打开一个新窗口,如果有加filename,表示在新窗口打开一个新文件,否则表示两个窗口为同一个文件内容(同步显示)

 

[ctrl]+w+j

[ctrl]+w+↓   按键的按法是:先按下[ctrl]不放,再按下w后放开所有的按键,然后再按下j(或向下箭头键),则光标可移动到下方的窗口

 

[ctrl]+w+k

[ctrl]+w+↑    同上,不过光标移动到上面的窗口

 

[ctrl]+w+q    其实就是:q结束离开。例如,想要结束下方的窗口,那么利用[ctrl]+w+↓移动到下方窗口后,按下:q即可离开,也可以按下[ctrl]+w+q

 

块选择的按键意义:

v  字符选择,将光标经过的地方反白选择

 

V  行选择,将光标经过的行反白选择

 

Ctrl + v  块选择,可以用长方形的方式选择数据

 

y  将反白的地方复制起来

d  将反白的地方删除

 

 

恢复命令:

 

u  恢复最后一个指令之前的结果

.  继续最后一个指令的执行结果

 

ctrl+r  撤销恢复

 

U  恢复光标该行之所有改变

 

 

 

移动光标命令:

 

h   光标左移一个字符

 

l   光标右移一个字符

 

space  光标右移一个字符

 

Backspace  光标左移一个字符

 

k或Ctrl+p  光标上移一行

 

j或Ctrl+n   光标下移一行

 

Enter   光标下移一行

 

w或W   光标右移一个字至字首

 

b或B   光标左移一个字至字首

 

e或E   光标右移一个字至字尾

 

)   光标移至句尾

 

(   光标移至句首

 

}  光标移至段落开头

 

{  光标移至段落结尾

 

nG  光标移至第n行首

 

n+  光标下移n行

 

n-  光标上移n行

 

n$  光标移至第n行尾

 

H   光标移至屏幕顶行

 

M   光标移至屏幕中间行

 

L   光标移至屏幕最后行

 

0  (注意是数字零)光标移至当前行首

 

$  光标移至当前行尾

 

 

 

翻屏命令:

 

Ctrl+u  向文件首翻半屏

 

Ctrl+d  向文件尾翻半屏

 

Ctrl+f  向文件尾翻一屏

 

Ctrl+b  向文件首翻一屏

 

nz  将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部

 

 

 

插入文本、复制与粘贴:

 

i   在光标前插入

 

I   在当前行首插入

 

a  在光标后插入

 

A  在当前行尾插入

 

o  在当前行之下新开一行

 

O  在当前行之上新开一行

 

r  替换当前字符

 

R  替换当前字符及其后的字符,直至按ESC键

 

s  从当前光标位置处开始,以输入的文本替代指定数目的字符

 

S  删除指定数目的行,并以所输入文本代替之

 

ncw或nCW  修改指定数目的字

 

nCC  修改指定数目的行

 

yy  p  复制当前行,并粘贴到下一行

nyy  n为数字。复制光标所在的向下n行,例如20yy,则是复制20行

y1G  复制光标所在行到第一行的所有数据

yG   复制光标所在行到最后一行的所有数据

y0    复制光标所在的那个字符到该行行首的所有数据

y$    复制光标所在的那个字符到该行行尾的所有数据  

 

shift + i  在该行之首插入字符

 

shift + a   在该行末尾输入字符

 

shift + r  改写自光标位置及后面的所有内容

 

shift +o  在光标之上新增一行输入字符

 

 

 

删除命令:

 

ndw或ndW  删除光标处开始及其后的n-1个字

 

d0  删至行首(为数字0)

 

d$  删至行尾

shift + d  剪切至行尾

 

dd  删除一行

 

ndd  删除自光标开始的n行

 

s  删除光标所在之字符,并进入输入模式直到《ESC》

 

S  删除光标所在之该行资料,并进入输入模式直到《ESC》

 

x或X  删除一个字符,x删除光标后的,而X删除光标前的

nx  n为数字,连续向后删除n个字符。如,要连续删除10个字符,则:“10x”

 

Ctrl+u  删除输入方式下所输入的文本

 

 

 

搜索及替换命令:

 

/pattern  从光标开始处向文件尾搜索pattern

 

?pattern  从光标开始处向文件首搜索pattern

 

n  在同一方向重复上一次搜索命令

 

N  在反方向上重复上一次搜索命令

 

:s/p1/p2/  替换当前行第一个p1为p2

 

:s/p1/p2/g  将当前行中所有p1均用p2替代

 

:n1,n2s/p1/p2/g  将第n1至n2行中所有p1均用p2替代

 

:g/p1/s//p2/g  将文件中所有p1均用p2替换

 

: 1,$s/old/new/g  将文件中所有的『old』改成『new』

: 1,$s/old/new/gc  将文件中所有的『old』改成『new』,并在改前提示用户确认

 

: 10,20s/^/ /  将第10行至第20行资料的最前面插入5个空格

 

: %s/^m//g  删除文件中所有的^M符号

 

 

 

选项设置:

 

all  列出所有选项设置情况

 

term  设置终端类型

 

ignorance  在搜索中忽略大小写

 

list  显示制表位(Ctrl+I)和行尾标志($)

 

number  显示行号

 

report  显示由面向行的命令修改过的数目

 

terse  显示简短的警告信息

 

warn  在转到别的文件时若没保存当前文件则显示NO write信息

 

nomagic  允许在搜索模式中,使用前面不带“\”的特殊字符

 

nowrapscan  禁止vi在搜索到达文件两端时,又从另一端开始

 

mesg  允许vi显示其他用户用write写到自己终端上的信息

 

 

 

最后行方式命令:

 

:n1,n2 co n3  将n1行到n2行之间的内容拷贝到第n3行下

 

:n1,n2 m n3  将n1行到n2行之间的内容移至到第n3行下

 

:n1,n2 d   将n1行到n2行之间的内容删除

 

:e filename  打开文件filename进行编辑

 

:e! dd   强制关闭当前文件(不保存)打开新文件dd

 

: e!  放弃修改重新编辑  

 

:q!  不保存文件并退出vi

 

:r fff 在当前位置读入fff文件

 

:set nonu 不显示行号

 

:set nu 显示行号

 

:w  保存输入的内容到当前文件

 

:w eee 另存为eee文件

 

:wq  保存并退出

 

:x  保存当前文件并退出

 

:n1,n2 w eee  将文件中n1行至n2行的内容保存成eee文件

:!command  暂时离开vi到命令行模式下执行command的显示结果。例如,“:! ls /home”即可在vi当中查看/home下面以ls输出的文件信息

 

 

 

寄存器操作:

 

"?nyy  将当前行及其下n行的内容保存到寄存器?中,其中?为一个字母,n为一个数字

 

"?nyw  将当前行及其下n个字保存到寄存器?中,其中?为一个字母,n为一个数字

 

"?nyl  将当前行及其下n个字符保存到寄存器?中,其中?为一个字母,n为一个数字

 

"?p  取出寄存器?中的内容并将其放到光标位置处。这里?可以是一个字母,也可以是一个数字

 

ndd  将当前行及其下共n行文本删除,并将所删内容放到1号删除寄存器中

 

vim操作环境(不建议修改/etc/vimrc文件;建议手动修改~/.vimrc文件)