vi:linux下的文本编辑器,所有的linux distribution 都会默认带的。
vim:vi的加强版,它能够根据文件的后缀名或文件开头的信息判断该文件的内容而自动呼叫该程序的语法判断式,再以颜色显示程序代码与一般信息。
vi分为三种模式:指令模式,编辑模式,指令列模式
指令模式:使用vi + 文档名 打开文档后默认进入的模式
可以使用的命令如下:
h : 光标向左移动一个字符
j : 光标向下移动一个字符
k : 光标向上移动一个字符
l :(小写的L)光标向右移动一个字符
30j :光标向下移动30行
ctrl+f :屏幕向下移动一页,相当于Page Down 按键
ctrl+b :屏幕向上移动一页,相当于Page Up 按键
Home按键:光标移动到这一行最前面的字符处
End :光标移动到这一行最后面的字符处
n<Enter>:n为数字,光标向下移动n行。
G : 移动到这个文件的最后一行(最后一行的第一列)
nG :移动到该文件的第n行
gg : 移动到这个文件的第一行(第一行的第一列)
/word : 向光标之下寻找一个名称为word的字符串
?word :向光标之上寻找一个名称为word的字符串
n :这个是指英文字母n,意思是在/word和?word搜索中继续进行下一个字符串匹配
N : 和小n刚好相反,进行向上搜索
x :在一行当中,x是向后删除一个字符,相当于del键
X :在一行当中,X是向前删除一个字符,相当于backspace键
nx :n为数字,连续向后删除n个字符
dd :删除光标所在行
ndd :删除光标所在行向下的连续n行
d1G :删除光标所在行到第一行的所有数据
dG :删除光标所在行到最后一行的所有数据
d$ :删除光标所在处到行末的所有字符
d0 :删除光标所在处到行首的所有字符
yy :复制光标所在行
nyy :复制光标所在行向下的连续n行
y1G :复制光标所在行到第一行的所有数据
yG :复制光标所在行到文件最后一行的所有数据
p :将复制的数据粘贴到光标所在行的下边
P:将复制的数据粘贴到光标所在行的上边
J :将光标所在行和下一行合并为一行
u :复原前一个动作
ctrl+r:重做前一个动作
:n1,n2s/word1/word2/g :n1与n2为数字。在第n1与n2行之间寻找word1这个字符串,并将该字符串取代为字符串Word2!
:1,$s/word1/word2/g :从第一行到最后一行需找word1字符串,并将该字符串取代为word2!
:1,$s/word1/word2/gc :从第一行到最后一行需找word1字符串,且在取代前显示提示符给用户确认(confirm)是否需要取代!
编辑模式下的可用的命令:
i:从光标所在处开始插入
I:从光标所在行的第一个非空字符开始插入
a:从光标所在处的下一个字符开始插入
A:从光标所在行的最后一个字符开始插入
o:在光标所在行的下一行插入新的一行
O :在光标所在行的上一行插入新的一行
r :取代光标所在的那个字符一次
R :连续取代光标所在字符,直到按下Esc键
Esc:退出编辑模式,回到命令行模式
指令列模式下可用的命令:
:w :将编辑的数据写入硬盘文件
:w!:强制写入文件,到底能不能写入与你自身对该文件的权限有关
:q :离开vi
:q!:强制离开,如修改过文件,不会生效
:wq:保存退出
:wq!:强制保存退出
ZZ :若文件没有更动,则不存储离开,若文件更动过,存储离开
:w filename:将编辑的数据存储为另一个文件
:r filename:将filename文件中的内容读取到光标所在行的后面
:n1,n2 w filename:将n1,n2行之间的数据存储到filename文件中
:! command :暂时离开vi到指令列模式下执行command命令的显示结果
:set nu : 显示行号
:set nonu :取消行号
vim编辑的文件恢复:
当我们使用vim编辑时,vim会在被编辑的文件的目录下建立一个.filename.swap文件,
你对filename文件的动作会被记录在.filename.swap文件中,如果你的系统因为某些
原因断线了,导致你编辑的文件还没有存储,可以从.filename.swap文件中恢复。
vim的额外功能:
(1)
在命令行输入alias命令,如果出现 alias vi=vim 表示当你执行vi这个命令时就是在执行vim,alias是别名的意思。
使用vim打开文件时(vim + filename),文档右下角会有光标当前所在行列的指示,会有当前画面占整个文件的百分比,
会有颜色显示,会有文档属性的一般文字说明,如:"/etc/services" [readonly] 11176L, 670293C
(2)
区块选择:使用vim 打开文件后
按下v:字符选择,会将光标经过的地方反白选择。
按下V:行选择,会将光标经过的行反白选择。
按下ctrl+v:长方形选择,
按下y:对反白的地方进行复制。
按下d:将反白的地方删除掉。
按下p:将刚复制的内容在光标处进行粘贴。
(3)多文件编辑:使用vim同时打开多个文件,如:vim 1.c 2.c
在第一个文件中按下:files(冒号的意思是进入指令列模式),可以查看当前使用vim打开了那些文件。
按下:n 可以切换到下一个文件。
按下:N 可以切换到上一个文件。
(4)多窗口功能:
:sp [filename] : 开启一个新的窗口,如果有加filename,表示在新窗口开启一个新的文件,否则表示两个窗口为同一个文件内容。
ctrl + w +j或者向下的箭头 :按键的方法是先按下ctrl不放,再按下w后放开所有按键,然后再按下j或向下的箭头,则光标可以移动到下方的窗口。
ctrl + w + k 或者向上的箭头 :同上,不过光标移动到上方的窗口。
ctrl + w + q :结束打开的新窗口。
(5)挑字补全功能:
ctrl +x -> ctrl +n :透过目前正在编辑的这个文件的内容文字作为关键字,予以补齐。
ctrl +x -> ctrl +o :以扩展名作为语法补充,以vim内建的关键字,予以补齐。
(6)vim环境设定与记录:在用户家目录下会有两个文件 .vimrc(默认不存在,需要自己手动创建)和.viminfo(记录你曾使用vim的各种动作)
在用vim打开的文件的指令列模式输入:
:set all :查看vim的所有设定值
:set nu :显示行号
:set nonu :取消行号
:set hlsearch :高亮度搜寻
:set nohlsearch :取消高亮度搜寻
:set autoindent :自动缩排(所谓缩排就是当你按下Enter键开始新的一行时,光标不会再行首,而是与上一行的第一个非空字符对齐。)
:set noautoindent :取消缩排
:set backup :是否自动存储备份档,一般是nobackup。如果设定backup,那么当你更动任何一个文件时,则源文件会被存储为一个档名为filename~ 的文件。
set ruler :显示右下角状态栏
:set showmode:显示--INSERT--之类的字样在左下角的状态栏
:set :显示与系统默认值不同的设定参数。
:syntax on:是否根据程序相关语法显示不同颜色。
:syntax off:取消相关语法颜色显示。
:set bg=dark :显示不同的颜色色调
:set bg=light:预设是light。