vi编辑器有三种模式:

一般模式、编辑模式、命令行模式

一般模式

vi打开的时候就是一般模式了,可以使用上下左右键来移动光标,你可以使用删除字符删除整行来处理文件内容,也可以使用复制、贴贴来处理你的文件数据。当然你还可以使用选项来移动光标,具体如下:

G                  移动到最后一行的首字母

1G                移动到第一行的首字母

Ctrl+d           往下跳半个屏幕

Ctrl+u           往上跳半个屏幕

当前屏幕下,快速切换光标的位置

H                  光标会跳到当前屏幕的最高一行

M                  光标会跳到当前屏幕的正中间

L                   光标会跳到当前屏幕的最后一行

还可以把命令的输出的内容输入到当前的vi的文档中

例如:输入!!ls –l          //ls –l的内容输入到vi当前文件中

就可以把当前的目录下面的ls –l得到的内容输入到vi的这个文件中去

!!date           //date命令的内容输入到当前vi的文件中

!}sort             //排序将vi的文档进行排序

!}fmt –w60          //段落的宽度变为60

在一般模式下面输入:/?进入命令行模式

替代word,搜寻

/word       //向光标之下寻找一个名称为 word 癿字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用)

//就是继续搜寻下一个关键字

:s/this/that    //把光标所在的行的this替换成that

:1,$s/this/that把第一行到最后一行的this进行替换成that

:1,10s/this/that/g   把第一行到第十行的this进行替换成that

将其他文件写入到当前的文件中,假设当前#vi file1

r file2    //就把file2的内容写在了file1里面了在编辑的数据中,读入另一个档案的数据。亦即将 filename 这个档案内容加到游标所在行后面

:n1,n2 w [filename]  n1 行到 n2 的内容储存成 filename 这个档案。

行号设置

:set nu  显示行号,设定之后,会在每一行癿前缀显示该行癿行号

:set nonu  set nu 相反,为取消行号!

删除、复制与贴上(一般模式下)

x ,X    //在一行字当中,x 为向后删除一个字符 (相当亍 [del] 按键) X 为向前删除一个字符(相当于            [backspace] 亦即是退格键) (常用)

nx       //n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 字符, 10x』。

dd       //删除光标所在的那一整行(常用)

ndd      //n 为数字。删除光标所在的行向下 n 行,例如 20dd 则是向下删除 20 列行(常用)

yy         //复制光标所在的那一行(常用)

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

p,P       //p 为将已复制的内容在光标下一行贴上,大P 则为贴在游标上一行! 举例来说,

           前光标在        第 20 行,且已经复制了 10 行内容。则按下小 p 后, 10 行数据会贴在原

           本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢? 那么原本的第 20 行会被推

            到变成 30 行。 (常用)

u           //复原前一个动作。(常用)

[Ctrl]+r   //重做上一个动作。(常用)

.             //小数点,意思是重复前一个动作的意思。 如果你想要重复删除、重复贴上等等动作,按

              下小数点『.』就好了! (常用)

编辑模式

i I a A o O

按下这六个字母可以进入insert模式就是可以写入的意思

i 为『从目前光标所在处插入』, I 为『在目前所在行的第一个非空格符处开始插入』。 (常用)

a 为『从目前光标所在的下一个字符处开始插入』, A 为『从光标所在行的最后一个字符处开始插入』。(常用)

o这是英文字母 o 的小写。o 为『在目前光标所在的下一行处插入新的一行』; O 为在目前光标所在处的上一行插入新的一行!(常用)

r R这两个字母可以进入取代模式,r只会取代光标所在的那个字符一次;R会一直取代光标所在的文字,直到按下ESCZ为止;

[Esc]  退出编辑模式,回到一般模式中(常用)

按:返回命令行模式

然后

:q   //没有写入内容就离开

:q!  // 写入内容但不想存档就离开

:x   //写入内容并存档

:wq  //写入内容并存档

 

接下来,介绍vim里面的一个多窗口

: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 离开!

vim 的环境设定参数

:set nu :set nonu       //就是设定不取消行号啊!

:set hlsearch :set nohlsearch        //hlsearch 就是 high light search(高亮度搜寻) 这个就是设定是否将搜索的字符串反白的设定值。默认值是 hlsearch

:set autoindent :set noautoindent    //是否自动缩排?autoindent 就是自动缩排。

:set backup//是否自动储存备份档?一般是 nobackup 的, 如果设定 backup 的话,那么当你更改任何一个文件时,则源文件会被另存成一个档名为 filename~ 的档案。 举例来说,我们编辑 hosts ,设定 :set backup ,那么当更改 hosts 时,在同目录下,就会产生 hosts~ 文件名的文件,记录原始 hosts 文件内容

:set ruler  //还记得我们提到的右下角的一些状态栏说明吗? 这个 ruler 就是在显示或者不显示该设定值

:set showmode   //这个则是,是否要显示 --INSERT—之类的字符在左下角的状态栏。

:set backspace=(012)   // 一般来说, 如果我们按下 i 进入编辑模式后,可以利用退格键 (backspace) 来删除任意字符。 但是,某些 distribution 则不许如此。此时,我们就可以透过 backspace 来设定, backspace 2 时,就是可以删除任意值;0 1 时,仅可删除刚刚输入的字符, 而无法删除原本就已经存在的文字

:set all //显示目前所有的环境变数设定值

:set //显示与系统默讣值不同的设定参数, 一般来说就是你有自行变更过的设

定参数

:syntax on :syntax off   //是否依据程序相关语法显示不同颜色? 举例来说,在编辑一个纯文本档时,如果开头是以 # 开始,那么该行就会变成蓝色。 如果你懂得写程序,那么这个 :syntax on 还会主动的帮你除错呢!但是, 如果你仅是编写纯文本档案,要避免颜色对你的屏幕产生的干扰,则可以取消这个设定。

:set bg=dark :set bg=light   //可用以显示不同的颜×××调,预设是『 light 』。如果你常常发现批注的字体深蓝色实在很不容易看, 那么这里可以设定为 dark 喔!试看看,会有不同的样式呢!

# vim ~/.vimrc

set hlsearch

set backspace=2

set autoindent

set ruler

set showmode

set nu

set bg=dark

syntax on

建立的文件会帮我们设定好vim的环境参数

下面在鸟哥书上面截取的一个图