咱们经常使用的文本编辑软件有MS WORD,国人的WPS也不逊色,最近也推出了linux版的WPS,而与之相对应的是处理ASCII编码的文本处理工具,最经常使用的当属vi /vim了,今天咱们介绍vim(Visual Interface inproved,可视界面加强版)。linux
为了练手,咱们将一些复杂的文本文件保存到用户家目录下正则表达式
例如我把cp /etc/httpd/conf/httpd.conf ~cyb/ 咱们把httpd的配置文件复制到家目录下练手。vim
vim [options][/path/to/somefile]bash
例如咱们要在当下路径建立一个a.txt的文本,咱们使用以下命令app
# vim a.txtide
Vim 有三种模式:1,编辑模式(命令行模式)2,输入模式 3,末行模式工具
首先,咱们说明,3者之间是如何转换的编码
编辑模式---------à输入模式spa
1, iinstert:在当前光标所在处前面插入命令行
2, aappend:z在当前光标所在行后面插入
3, o,在当前光标所在行的的下方新建一个空白行,而且转为输入模式
4, I 光标跳转至光标所在行首并改成输入模式
5,A 光标跳转至光标所在的行尾处并改成输入模式
6, O光标跳转至光标所在行的上一行,并改成输入模式
输入模式转为编辑模式
按ESC键便可
编辑模式转为末行模式
键入:
末行模式转为编辑模式:
按两次ESC键
光标跳转
字符间的跳转:
K(上)
H(左) L(右)
J(下)
还有 #h 能够调准#个字符,先按住#(例如3)向左跳转3个字符
This is the main Apacheserver configuration file.It containsthe
光标在’s’处,而后按住3,再按h,光标到’T’处
咱们来看但此间跳转,
咱们以此段话为例
咱们来看句间跳转
):下一句,
(:前一句按(
默认以 . 做为分隔符
段落间跳转
{ 上一段
} 下一段
行间跳转
gg 或者 1G 跳转至行首
G,跳转至行尾
#G,跳转至第#行的行首
行内跳转
^ :行首的第一个非空白字符
$ :绝对行尾
0 :绝对行首
咱们来看怎么关闭文件
在末行模式下:
:q 退出
:w 保存
:!强制
:wq 保存并退出
:q!强制退出
:x 等价于wq 保存并退出
在编辑模式下
ZZ 保存并退出
qall 退出所有(由于有时候可能会一次打开多个文件去编写)
打开文件
vim –[options][file]
-o 打开多个文件时,上下屏显示
-O 打开多个文件时,左右屏幕显示
左屏幕到右屏幕 ctrl+w
若是不加
咱们同时打开多个文件时,须要文本间跳转,在末行模式下,输入如下命令
:next 下一个
:last最后一个
:first 头一个
:prev 前一个
编辑命令
x 删除单个字符
#x:删除#个字符
dw 删除光标所在处的单词
db: 删除光标所在处的前一个单词
de: 删除光标所在处及下个单词
d^: 从行首删除到当前光标所在处
dd 删除所在行
d$ 当前位置删除到光标所在行尾
在末行模式下能够地址定界,使用d命令能够更加灵活
起始地址,结束地址
$:最后一行
.当前光标所在行
%,全文
1,7d ,第一行到第七行所有删除
%d 删除全文
1,$d 从第一行到最后一行所有删除
1,+6d 从第一行,到1+6行所有删除
1, $-2d 从第一行到当前光标所在行数-2所在的行删除
.,+3 d从当前行到之后+3行全部的行所有删除
撤销此前的操做
U, vim会保存最近50次的操做,U命令可逐一撤销此前编辑的操做
咱们还能够撤销此前的撤销 ctrl+r
--à(此前一步操做)----à(如今操做)
(撤销u)<--------
-------à(撤销撤销ctrl+r)
复制
yy 复制当前行
#yy 复制当前行所在的向下3行,
y$ 复制光标所在处至行尾
y^ 复制当前行到行首(光标自动跳转到行首)
yw ,复制当前单词
粘贴
p在光标所在处的后方粘贴
P在光标所在出的前方粘贴
vim的options
-# 默认打开后光标所在处为#行的行首
咱们介绍翻屏
Ctrl+f 向文件尾部翻一屏
Ctrl+d 向文件首部翻一屏
Ctrl+d 向文件尾部翻半屏
Ctrl+u 向文件首部翻半屏
Vim支持文本搜索
/keyword:从当前光标所在处向文件尾部查找
?keyword:从当前光标所在处向文件首部查找
n:下一个,跟命令查找方向相同
N:前一个,跟命令查找方向相反;
固然能够支持模式搜索,支持正则表达式
窗口属性的定义
Set number,set nu显示行号
查找和替换
:地址定界s/查找模式/替换成的内容/gi
: 地址定界s@查找模式@替换成的内容@gi
一、删除/etc/grub.conf文件中行首的空
%s@^[[:space:]]\{1,\}@@
二、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
%s@id:3:@id:5:@g
三、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
%s@^#[[:space:]]\{1,\}@@
四、为指定范围内的行的行首添加#;1,10s@^@#@g