vim文本编辑器:

简介:

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。和Emacs并列成为类Unix系统用户最喜欢的编辑器。


基本上vi共分为三种模式,分别是『 一般模式 』、『 编辑模式 』与『 指令列命令模式 』。 这三种模式的作用分别是:


一般模式 :

以vi 打开一个档案就直接进入一般模式了(这是预设的模式)。 在这个模式中, 你可以使用『上下左右』按键来移动游标,你可以使用『删除字元』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件资料。


编辑模式 :

在一般模式中可以进行删除、复制、贴上等等的动作,但是却无法编辑文件内容的! 要等到你按下『 i, I, o, O, a, A, r, R 』等任何一个字母之后才会进入编辑模式。 注意了! 通常在Linux中,按下这些按键时,在画面的左下方会出现『 INSERT或REPLACE 』的字样,此时才可以进行编辑。 而如果要回到一般模式时,则必须要按下『 Esc 』这个按键即可退出编辑模式。


命令模式 :

在一般模式当中,输入『 : / ? 』三个中的任何一个按钮,就可以将游标移动到最底下那一行。 在这个模式当中, 可以提供你『搜寻资料』的动作,而读取、存档、大量取代字元、离开vi 、显示行号等等的动作则是在此模式中达成的!


打开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操作图片

vim_g.jpg