一、概念解释
何为文本编辑器:文本编辑器是处理纯文本ascii数据,对对数据本身没有任何修饰功能的编辑器。而字处理是有类似特效的东西的,比如加深,更改颜色等。
二、编辑模式
1、命令模式
2、编辑模式
3、末行模式
三、常见命令
打开文件
1、在vi编辑器里,直接读取另一个文件,当前正在编辑的文件会退出,所以要求提前做好保存。
:e /etc/my.cnf
2、将文件追加到当前编辑的文件光标处。
:r /etc/my.cnf
保存文件
1、将文件另存到指定位置
:w /root/newpath.conf
光标移动
h:向左移动
l:向右移动
j:向下移动
k:向上移动
单词间跳转
w:下一个单词词首
b:上一个单词词首
句子间跳转
):下一句
(:前一句
段落间跳转
}:下一段
{:前一段
行内跳转
^:行首
$:行尾
行间跳转
1G:跳到第一行
#G:指定跳到第几行
删除命令
x:删除一个字符
dd:删除光标所在行
#dd:光标所在行及向下#行。
d^:光标所在位置到行首
d$:光标所在位置到行尾
dw:删除一个单词
u:恢复操作
ctrl+r:撤销此前的撤销
练习:
删除命令:
1,7d:删除1-7行
%d:全文
1,$d:到最后一行
粘贴操作
删除的是整行:
p:在当前光标所在行的下面粘贴
P:在当前光盘所在行的上面粘贴
复制操作
yy:复制一行
#yy:复制多行
y^:行首
y$:行尾
输入模式
进入输入模式的方法:
i (insert):在当前光标所在处切换到输入模式
o:在当前光标所在行的下面新建一个空白行。
a(append):在光标后面切换为输入模式。
I:光标所在行行首
A:光标所在行行尾
O:在当前光标上面建立一个新行。
末行模式
进入末行模式:键入:
返回到编辑模式:esc
:w 保存
:q 退出
:wq 保存退出
:q! 不保存退出
常用命令
1、显示文件的每行行号
:set number
2、设置支持鼠标定位(视版本而定)
:set mouse=a
3、开启查找关键字时跳过收尾查找功能
:set wrapscan
4、查找时忽略大小写
:set ic(ignorecase)
5、高亮显示查找结果
:set hlsearch
6、实时追踪正在查找的关键字,也就是说在输入字符的同时,光标就开始了查找关键字。
:set incsearch
练习:
1、设定变量file的值为/etc/passwd
2、一次向/etc/passwd中的每个用户问好,并显示对方的shell ,比如,hello!root,your sehll is /bin/bash
3、统计一共有多少个用户。
翻屏操作
ctrl+f:向下翻一屏
ctrl+b:向上翻一屏
ctrl+d:向下翻半屏
ctrl+u:向首部翻半屏
vim编辑器的查找和替换功能
搜索文本
/keyword:向下搜索
?keyword:向上搜索
n:下一个
N:前一个
查找替换功能
格式:
地址界定s/查找内容/替换内容/[g i]
&:表示对前面提到的内容的再次引用
/:作为分隔符,这个字符可以任意定,只要前后的分隔符相同即可。
1、地址界定符位置为空,表示当前光标所在行,尾部为空表示只替换第一个匹配的字段。
替换当前行的第一个出现的user为username。
:s/user/username/
2、区域性查找替换(n,ms)
将当前行的所有的逗号替换为句号。
:s/\,/\。/g
将所有行的a替换为%
:%s/a/%/g
替换第3行到第十行的user,替换为tom,(#表示文本的最后一行,3,#表示从第三行到文本的结尾)
:3,10s/user/tom/g
删除行首开头的#及后面跟随的空白字符
: %s/^#[[:sapce:]]*//g
为空白字符开头的行的行首添加上#,空白字符保留
:1,9s/^[[:;space]]/#&/g (&具有保留空白字符的意义)
要删除这些每行后面多余的空格
:%s/\s\+$//
命令前面指明范围是 “%”,所以这会作用于整个文件。”substitute” 命令的匹配模式是“\s\+$”。这表示行末($)前的一个或者多个(\+)空格(\s)。替换命令的 “to” 部分是空的:”//”。这样就会删除那些匹配的空白字符
"%” 范围前缀表示在所有行中执行替换。
"g” 标记表示替换行中的所有匹配点
如果最后没有加"g",表示仅仅匹配第一个匹配到的字符。
3、谨慎替换
当替换的东西较多又需要人工参与的时候,使用询问的方式进行替换,方法是在结尾使用"c"。
比如:3,10s/#//gc
询问的处理方式:
y:直接替换,并查找下一个
n:不替换,并查找下一个
a:替换所有的。
q:退出不执行。
l:只替换当前查找的第一个字段并退出。
四、窗口操作
vim编辑器可以将vim窗口分成两个,方便对文本的编辑工作。
1、上下分割当前窗口(:split)
将当前编辑的文本分为上下内容相同的两个部分。
:split
也可以在当前窗口直接输入new来同时创建一个新的上下结构的窗口,并新建一个空白文档。
:new
在当前文本中打开一个指定的文件
:new /etc/my.cnf
同时打开多个文本文件 -o
vim -o /etc/my.cnf /etc/httpd/conf/httpd.conf /etc/php.ini
2、左右分割当前窗口(:vsplit)
3、切换窗口
在多个窗口间进行切换,可以使用ctrl+w来完成。
4、关闭窗口
同一个窗口的命令是一样的,对于新文件使用wq /path/来保存退出
如果要仅仅保留当前窗口,其他窗口在未修改的情况下直接关闭,使用”only“即可。
5、vim可视化模式:
visual模式:
v:选中光标所经过的字符。
V:选中光标所经过的行,整行选取。
通过键盘操作选择文本,并通过快捷命令删除选择内容。
6、使用shell命令并导入
在vim的编辑中,如果需要了解系统其他内容,涉及到使用shell命令,可以通过!来完成。
:!ls /us/local/
将shell命令的显示结果导入到当前编辑的文本中。
:r !ls /etc/
五、定制自己的vim编辑器
通过修改vim的配置文件来设置自己的特色vim编辑器,比如高亮显示、显示行号、不区分大小写等。
vim的配置文件
全局:/etc/vimrc
局部(个人):~/.vimrc
注意:
双引号"表示注释掉当前行。
六、vim的灾难恢复
vim自身带有由于突发事件造成数据丢失的应急方法,就是创建filename.swp文件,用了保存尚未保存的文件
打开恢复文件
vim -r . a.swp
如果编辑的文件正在被另一个用户使用,或者有数据损失的情况造成swap文件存在的话,就会有以下提示:
o:以只读方式打开。
e:不恢复,继续编辑文本。不建议。
r:恢复上次没有保存的内容,此方法是知道恢复后结果是什么的情况下,谨慎。
q:退出
a:丢弃,和退出类似。
d:删除交换文件,可以确定交换文件没有用的情况下使用。
本文转自 blackstome 51CTO博客,原文链接:http://blog.51cto.com/137783/1895567,如需转载请自行联系原作者