vim文本编辑器:程序员
简介:正则表达式
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被普遍使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。编程
基本上vi共分为三种模式,分别是『 通常模式 』、『 编辑模式 』与『 指令列命令模式 』。 这三种模式的做用分别是:vim
通常模式 :app
以vi 打开一个档案就直接进入通常模式了(这是预设的模式)。 在这个模式中, 你能够使用『上下左右』按键来移动游标,你能够使用『删除字元』或『删除整行』来处理档案内容, 也能够使用『复制、贴上』来处理你的文件资料。 编辑器
编辑模式 :ide
在通常模式中能够进行删除、复制、贴上等等的动做,可是却没法编辑文件内容的! 要等到你按下『 i, I, o, O, a, A, r, R 』等任何一个字母以后才会进入编辑模式。 注意了! 一般在Linux中,按下这些按键时,在画面的左下方会出现『 INSERT或REPLACE 』的字样,此时才能够进行编辑。 而若是要回到通常模式时,则必需要按下『 Esc 』这个按键便可退出编辑模式。 spa
命令模式 :3d
在通常模式当中,输入『 : / ? 』三个中的任何一个按钮,就能够将游标移动到最底下那一行。 在这个模式当中, 能够提供你『搜寻资料』的动做,而读取、存档、大量取代字元、离开vi 、显示行号等等的动做则是在此模式中达成的!blog
打开VIM的方式
# vim [options] [/path/to/somefile]
# vim filename :打开或新建文件,并将光标置于第一行首
# vim +n filename :打开文件,并将光标置于第n行首
# vim + filename :打开文件,并将光标置于最后一行首
# vim +/pattern filename:打开文件,并将光标置于第一个与pattern匹配的串处
# vim -r filename :在上次正用vi编辑时发生系统崩溃,恢复filename
# vim filename....filename :打开多个文件,依次进行编辑
next 打开下一个文件;
last 打开最后一个文件;
first 打开第一个文件;
prev 打开前一个文件;
-O : 垂直分割窗口 Ctrl+w --> 光标 左 右跳转文件
-o : 水平分割窗口 Ctrl+w --> 光标 上下 跳转文件
模式转换:
通常模式 --> 编辑模式:
i: insert,实如今当前光标所在处前面转换为输入模式;
a: append,实如今当前光标所在处后面转换为输入模式;
o: 实如今当前光标所在行的下方新建一个空白行并转换为输入模式;
I: 在当前光标所在行的行首转为输入模式;
A: 在当前光标所在行的行尾转为输入模式;
O: 在当前光标所在行的上方新建一行,并转为输入模式;
编辑模式 --> 通常模式:
按下Esc键;
通常模式 --> 命令模式:
键入: / ?
命令模式 --> 通常模式:
Esc,Esc
光标跳转:
字符间跳转
h: 左
l : 右
j : 下
k : 上
#h : 向左侧跳#个字符;
单词间跳转:
w : 后一个单词的词首
e : 跳当前或下一个单词词尾;
b : 跳至当前或前一个单词词首;
句子间跳转:
) : 下一句;
( : 前一句;
段落单跳转:
}: 下一段;
{: 前一段;
行间跳转:
1G,gg :
G:
#G:
行内跳转:
^ : 行首的第一个非空白字符
$,End : 行尾
0,Home : 绝对行首
关闭文件:
在命令模式下:
: w 保存
: q 退出
: ! 强制
: wq 保存退出
: q! 强制退出
: x 保存退出
: qall 退出全部编辑的文本
在通常模式下:
ZZ: 保存退出;
通常模式命令:
x : 删除单个字符
#x :删除#个字符
d: 删除命令
dw: 删除后一个单词
db: 删除前一个单词
de:
d^
d$
dd: 删除光标所在行;
#dd : 删除光标所在行向下#行 例如: 2dd
在命令模式下使用的命令
末行模式地址定界:
起始地址,结束地址
$: 最后一行;
. : 当前行
%: 全文
例:
1,7d : 删除光标所在的第1到第7个行
1,$-2d : 删除除最后两行的全部行
.,+3d : 删除当前行到下面3行
通常模式下撤销操做:
u: vim默认会最近50次的操做,u命令可逐一撤销此前的编辑操做;
撤销此前的撤销:Ctrl+r :
粘贴操做:
p :paste, put
在通常模式下删除的整行:
p: 在当前光标所在行的下方粘贴 ;
P: 在当前光标所在行的上方粘贴 ;
在通常模式下删除的字符:
p:在当前光标所在处字符的后方粘贴 :
P:在当前光标所在处字符的前方粘贴 :
复制:
y: yank
yy
#yy 例如:2yy
y$
y^
在通常模式复制的是整行:
p: 在当前光标所在行的下方粘贴 ;
P: 在当前光标所在行的上方粘贴 ;
在通常模式复制的不是整行:
p:在当前光标所在处字符的后方粘贴 :
P:在当前光标所在处字符的前方粘贴 :
翻屏:
Ctrl+f :向文件尾部翻一屏;
Ctrl+b:向文件首部翻一屏;
Ctrl+d:向文件尾部翻半屏;
Ctrl+u:向文件首部翻半屏;
文本搜索:
/keyword : 从当前光标所在处向文件尾部查找
?keyword:从当前光标所在处向文件首部查找
n:下一个,跟查找命令相同的方向
N:前一个,跟查找命令相反的方向
模式
/\<d[[:alpha:]]\{2\}n\>
正则表达式参考:http://osrun.blog.51cto.com/608651/1345153中表达符集
vim可视化模式
visval模式
v : 选中光标划过的字符
V : 选中光标划过的行,整行选取
Esc,Esc : 回到编辑模式
同一文档窗口分割:
Ctrl+w,s : 水平分割
Ctrl+w,v : 垂直分割
Ctrl+w, 箭头 : 跳转
q : 退出分割
vim窗口属性定义:
显示行号:
set number, set nu
set nonumber, set nonu
自动缩进
set autoindent, set ai
set noai
不区分字符大小写
set ignorecase, set ic
set noic
获取帮助:
set
显示匹配的括号:
set showwatch, set sm
set nosm
语法着色:
syntax on
syntax off
搜索高亮显示
set hlsearch
set nohlsearch
vim的配置文件:
上述的经常使用vim可添加到下面配置文件中,每次打开就能够很舒服的操做了
全局:/etc/vimrc
我的:~/.vimrc
查找替换:
:地址定界s/查找模式/替换成的内容/gi
:地址定界s@查找模式@替换成的内容@gi
s后的“/”能够是任意符号,要搜索的内容中没有便可。
g : global 全局
i : ignorecase 忽略大小写
例如:
全文中匹配 锚写d后面任意2个或2个以上字母后面再跟上n 如 daaan dbbn这样的内容 替换为what
: 1,$s/\<d[[:alpha:]]\{2\}n\>/what/g
全文中匹配/dev/null 的内容 替换为/tmp/a.txt
方法一 :%s/\/dev\/null/\/tmp\/a.txt/g
方法二 :%s#/dev/null#/tmp/a.txt#g
全文中匹配 d开头后面跟任意两个字母现跟n的字符串 把开头的d 和结尾n替换成大写,例如:down替换为DowN, doon替换为DooN
%@\<d<([[:alpha:]]\{2\}\)n\>@D\1N@g
全文中匹配Dev 或DEV 或 dEV 或 dev的字符串后面添加ice ,例如:Device,DEVice,dEVice,device
方法一 :%s/\([dD][eE][Vv\)]/\1ice/g
方法二 :%s@\([dD][eE][Vv\)]@\1ice@g
方法三 :%s@\([dD][eE][Vv\)]@&ice@g
删除行首开头的#:
%s/^#//
删除行首开头的#及后面紧跟的空白字符:
%s@^#[[:space:]]*@@
为空白字符开头的行的行首加上#:
%s@^[[:space:]]@#&@
为当前行至再加9行以空白字符开头的行的行首加上#:
.,+9s@^[[:space:]]@#&@
删除文件中行首的空白符;
%s/^[[:space:]]*//
%s/^[[:space:]]\{1,\}//
替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;
%s/id:3:/id:5:/g
删除某文件中的空白行;
%s/^$//g
删除某文件中的开头的#号;
%s/^#//g
删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;
%s/^#[[:space:]]\{1,\}//g
为指定范围内的行的行首添加#;
1,10s@^@#@g
vim操做图片