Linux 系统中使用vi的重要性
1.所有的 Unix Like 系统都会内置 vi 文书编辑器,其他的文书编辑器则不一定会存在;
2.很多个别软件的编辑接口都会主动调用 vi;
3.vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计;
4.因为程序简单,编辑速度相当快速
vi 三种模式 一般指令模式 编辑模式 指令列命令模式
一般指令模式 (command mode)
以 vi 打开一个文件就直接进入一般指令模式了(这是默认的模式,也简称为一般模式)。在这个模式中, 可以使用“上下左右”按键来移动光标,可以使用“删除字符”或“删除整列”来处理文件内容, 也可以使用“复制、贴上”来处理你的文件数据。
编辑模式 (insert mode)
在一般指令模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到按下“i, I, o, O, a, A, r, R”等任何一个字母之后才会进入编辑模式。在画面的左下方会出现“ INSERT 或 REPLACE ”的字样,此时才可以进行编辑。而如果要回到一般指令模式时, 则必须要按下“Esc”这个按键即可退出编辑模式。
指令列命令模式 (command-line mode)
在一般模式当中,输入“ : / ? ”三个中的任何一个按钮,就可以将光标移动到最下面那一列。在这个模式当中, 可以提供“搜寻数据”的动作,而读取、存盘、大量取代字符、离开 vi 、显示行号等等的动作则是在此模式中达成的
三种模式
常用按键说明
想多次移动的例如向下移动 30 列,可以使用 "30↓" 组合按键
20<space> 则光标会向后面移动 20 个字符距离
0 或功能键[Home] 这是数字“ 0 ”:移动到这一列的最前面字符处
$ 或功能键[End] 移动到这一列的最后面字符处
G 移动到这个文件的最后一列
nG n 为数字。移动到这个文件的第 n 列。例如 20G 则会移动到这个文件的第 20 列
gg 移动到这个文件的第一列,相当于 1G
n<Enter> n 为数字。光标向下移动 n 列
/word 向光标之下寻找一个名称为 word 的字串
?word 向光标之上寻找一个字串名称为 word 的字串
n 代表“重复前一个搜寻的动作”
N 与 n 刚好相反,为“反向”进行前一个搜寻动作
n1,n2s/word1/word2/g n1 与 n2 为数字。在第 n1 与 n2 列之间寻找 word1 这个字串,并将该字串取代为 word2
dd 删除光标所在的那一整列
yy 复制光标所在的那一列
p 为将已复制的数据在光标下一列贴上,P 则为贴在光标上一列
u 复原前一个动作
[Ctrl]重做上一个动作
:w 将编辑的数据写入硬盘文件中
:w! 若文件属性为“只读”时,强制写入该文件
:wq! 则为强制储存后离开
:set nu 显示行号,设置之后,会在每一列的字首显示该列的行号
:set nonu 与 set nu 相反,为取消行号
vi的缓存
在使用 vi 编辑时, vi 会在与被编辑的文件的目录下,再创建一个名为 .filename.swp 的文件。
由于 vim 的工作被不正常的中断,导致暂存盘无法借由正常流程来结束, 所以暂存盘就不会消失,而继续保留下来。此时如果继续编辑,如果之前man_db.conf的 vim处理动作尚未储存,此时应该要按下“R”,亦即使用 (R)ecover 的项目, 此时 vim会载入 .man_db.conf.swp的内容,让自己来决定要不要储存!这样就能够救回来之前未储存的工作。 不过那个 .man_db.conf.swp 并不会在结束 vim后自动删除,所以离开 vim 后还得要自行删除 .man_db.conf.swp 才能避免每次打开这个文件都会出现这样的警告!如果确定这个暂存盘是没有用的,可以直接按下“D”删除掉这个暂存盘,亦即 (D)elete it 这个项目即可。 此时 vim 会载入 man_db.conf ,并且将旧的 .man_db.conf.swp 删除后,创建这次会使用的新的 .man_db.conf.swp
vim的额外功能
目前大部分的 distributions 都以 vim 取代 vi 的功能了!如果使用 vi 后,却看到画面的右下角有显示目前光标所在的行列号码,那么 vi 已经被 vim 所取代。为什么要用 vim 呢?因为 vim 具有颜色显示的功能,并且还支持许多的程序语法
如果你在文字模式下,输入 alias 时,出现这样的画面:
$ alias alias vi='vim' 这表示使用 vi 这个指令时,其实就是执行 vim
区块选择
区块选择
通过上述的功能,可以复制一个区块,并且是贴在某个“区块的范围”内,而不是以列为单位来处理整份文件
多文件编辑和多窗口编辑
很快速的就将需要的数据复制到正确的文件内
多文件编辑
多窗口编辑
vi的动作记录
如果以 vim 软件来搜寻一个文件内部的某个字串时,这个字串会被反白,再次以 vim 编辑这个文件时,该搜寻的字串反白情况还是存在!当我们重复编辑同一个文件时,当第二次进入该文件时, 光标竟然就在上次离开的那一列上头。记录动作的文件就是: ~/.viminfo
~/.viminfo
vi的环境配置
环境设置参数有很多,如果想要知道目前的设置值,可以在一般指令模式时输入“ :set all ” 来查阅。整体 vim 的设置值一般是放置在 /etc/vimrc 这个文件
环境设置参数
/etc/vimrc