vi编辑器是一个处理ASCII数据的文本工具。大多数linux发行版都已经默认安装了vi编辑器。vi是visual interface的缩写vim是 visual interface improved即增强版的vi,vim默认支持代码命令加亮,这样使得文本更易看懂。vi有两种配置文件一种是全局配置文件 /etc/vimrc,全局配置文件的设置对所有用户都生效。另一种是用户配置文件,这个配置文件需要自己手动去创建,如 touch ~/.vimrc,创建在用户家目录,并把它创建为隐藏文件,在这里的设置,只针对当前用户自己生效。
1、vi的模式和模式之间的转换
vi有三种模式,命令模式(command mode)也叫编辑模式、插入模式(Insert mode)和底行模式(last line mode)也叫末行模式,各个模式之间的关系如下图所示:
vi默认打开就是编辑模式,编辑模式是不能对文本进行任何写操作的。
(1)编辑模式---->输入模式:可以如下操作
直接键入 i: insert,实现在当前光标所在处转换为输入模式
I: 在当前光标所在行的行首转为输入模式
a:append,实现在当前光标所在处字符后面转换为输入模式
A:在当前光标所在行的行尾转为输入模式
o:实现在当前光标所在行的下方新建一个空白行并转换为输入模式
O:在当前光标所在行的上方新建一行,并转化为输入模式
(2)输入模式----->编辑模式:
按键盘的Esc键
(3)编辑模式----->末行模式
键入 :
(4)末行模式----->编辑模式
连续按两下Esc键
2、编辑模式进行的操作
(1)光标的跳转:
a)光标在字符间跳转
h:左 #h 向左侧跳#个字符
l:右
j:下
k:上
b)光标在单词间跳转
w:后一个单词的词首
e:跳至当前或下一个单词词尾
b:跳至当前或前一个单词词首
c)光标在句子间跳转
):下一句
(:前一句
d)光标在段落间跳转
}:下一段
{:前一段
e)光标在行间跳转:
1G,gg:跳到行首
G:行尾
#G:第n行,#表示行数
f)光标在行内跳转:
^:行首的第一个非空白字符
$:绝对行尾
0:绝对行首
(2)翻屏操作
ctrl+f:向文件尾部翻一屏相当于Pagedown操作
ctrl+b:向文件首部翻一屏相对于Pageup操作
ctrl+d:向文件尾部翻半屏
ctrl+u:向文件首部翻半屏
(3)复制操作,也叫y(yank)操作
yy:表示复制光标所在行
#yy:表示复制包括光标所在行及以下#行,#表示数字
y$:表示复制光标所在处至行尾
y^:表示复制光标所在处至行首
(4)粘贴操作,也叫p(paste ,put)操作
复制的是整行:
p: 在当前光标所在行的下方粘贴;
P:在当前光标所在行的上方粘贴
复制的不是整行:
p: 在当前光标所在处字符的后方粘贴;
P:在当前光标所在处字符的前方粘贴;
(5)删除操作,(x,d)
x:删除光标后面的单个字符
#x:删除光标后面的#个字符,#表示数字
dw:删除光标所在的单词
db:删除光标所在处之前的单词
de:删除光标所在处之后的单词
d^:删除光标所在之前的所有字符单词
d$:删除光标所在之后的所有字符单词
dd:删除光标所在处的整行
#dd:删除包含光标处的下面几行,#表示数字
(6)撤销操作
如果对之前失误操作进行撤销可按u键,撤销之前的操作,默认可以撤回之前的50次操作。当你觉得之前的撤销操作也需要撤销,则按crtl+u键,对撤销进行撤销。
(7)查找操作,直接在编辑模式下输入/或者?,然后接你要查找的字符
/keyword: 从当前光标所在处向文件尾部查找
?keyword:从当前光标所在处向文件首部查找
n: 下一个,跟查找命令相同的方向
N:前一个,跟查找命令相反的方向
3、输入模式进行的操作
当在编辑模式下键入(i,I,a,A,o,O)后,文件下方会有-- INSERT -- 字样,表示现在处于输入模式,输入模式对输入的任何字符都会直接输入到文件中。
4、末行模式进行的操作
(1)保存退出的操作
:w 保存
:q 退出
:x 保存退出
:wall 所有的都保存,一般应用在同时打开多个页面
:qall 所有的都退出,一般应用在同时打开多个页面
:w! 强制保存
:q! 强制退出
:wq! 强制保存退出
:x! 强制保存退出
(2)删除的操作,在末行模式进行操作可以支持定界
语法格式 开始行,结束行d
:. 表示当前光标所在行
:1 表示第一行
:# 表示第#行,#表示数字
:$ 表示最尾行
:% 表示整个文本
:1,$d 删除第一行到最后一行
:.$d 删除当前光标直到最尾行
:%d 删除整个文本
:1,+3d 删除第一行和后面的三行,第一行也包括,所以是删除四行
(3)查找操作,查找操作和在编辑模式下的查找操作一样,支持模式匹配
/keyword: 从当前光标所在处向文件尾部查找
?keyword:从当前光标所在处向文件首部查找
n: 下一个,跟查找命令相同的方向
N:前一个,跟查找命令相反的方向
(4)修改替换操作,也支持模式匹配
语法格式
:地址定界s/查找模式/替换成的内容/gi
/表示分隔符,可以为@、#等特殊容易区别的符合
g global全局的,i ignore 不区分大小写
eg:
删除行首开头的#: :%s@^#@@ 删除行首开头的#及后面紧跟的空白字符; :%s@^#[[:space:]]*@@ 为空白字符开头的行的行首加上#; :%s@^[[:space:]]@#&@ 把down改成up; :%s@down@up@g 为指定范围内的行的行首添加#; :1,10s@^@#@g
5、窗口属性定义,在末行模式 :(在末行模式直接输入set可以看set的帮助命令),no代表取反的意思
显示行号:
set nu
set nonu
自动缩进:
set autoindent,set ai
set noai
不区分大小写
set ignorecase, set ic
set noic
显示匹配的括号
set showmatch,set sm
set nosm
语法着色
syntax on
syntax off
搜索高亮显示
set hlsearch
set nohlsearch
可以直接把窗口定义的属性写到vim的配置文件中。
6、vim其它的支持
(1)vim可视化模式
visual模式
v: 选中光标划过的字符
V:选中光标划过的行,整行选取
Esc, Esc:回到编辑模式
(2)同一文档窗口分割:
Ctrl+w,s: 水平分割 Ctrl+w, 箭头(上下),表示切换
在末行模式下输入q退出
Ctrl+w,v: 垂直分割 Ctrl+w, 箭头(左右),表示切换
在末行模式下输入q退出
======博主所学知识来着于恩师马哥的亲授======
马哥教育“2014夏令营”开始啦!!!马哥教育是目前性价比最高的Linux培训,国内好评度排名第一,并被网友称为Linux界的"黄埔军校",全部课程采用Centos6.5x86_64讲解,经过几期网络班的总结和锤炼,逐渐完善的课程体系,学员学习进度监督和优质的考试系统检验学员掌握程度,活跃的在线答疑环节,名师陪伴,牛人指点,精彩不容错过。
详情猛戳:http://www.magedu.com/
课程内容:http://www.magedu.com/mentuqc
网络班一体化服务:http://mageedu.blog.51cto.com/4265610/1379598
联系方式:客服QQ
2813150558 客服QQ 1661815153
============================================
linux 强大的编辑器之vi,布布扣,bubuko.com
原文地址:http://blog.csdn.net/mage_linux11/article/details/31027351