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 即可! (常用)
n //就是继续搜寻下一个关键字
: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的环境参数
下面在鸟哥书上面截取的一个图