vim编辑器的使用

vim

         vim是一个类似于vi的文本编辑器,不过在vi的基础上增加了很多功能,在早起vimEmacs编辑器打的很火热,在1999年被linuxwork文本编辑分类的优胜者,而vim屈居第二,但2000vim赢得了salashdot beanie的最佳开放源代码文本编辑大奖,此时的Eamcs到第二位,vimEmacs都是非常优秀的文本编辑器。

         viVisual Interface,是一种文本编辑器,所谓文本数据是基于字符编码的文件,。

文本编辑器分类:

         行编辑器:所行编辑器是指一行一行的来编辑处理的工具,如之前讲过的sed

         全屏编辑器:编辑空间占整个屏幕,如nanovi

vimvi improvedvi的增强版,vim是模式化的编辑器

vim的工作模式又三种,编辑模式,输入模式,命令扩展模式

 

vim的使用

         打开文件

         vim  [option]…..filename….

         +n:打开文件后,直接将光标定位只指定的行的行首

         +/parttern:打开文件后,直接将光标定位都第一个被pattern匹配的行首

         vim +filename,直接打开文件,光标在最后一行

         vim –b filename filename二进制方式打开文件

         vim –d file1 file2:比较多个文件

   vim –m filename :只读打开文件,这是不能写入数据。

 

在使用文件存在时,如果文件不存在,文件被打开并的内容

如果文件不存在,就相当于新建了一个文件。

 

模式切换

esc键:从输入模式转换到编辑模式

从编辑模式转换到输入模式,可以使用一下命令

         iinsert,在光标所在处输入

         I:在当前光标所在行的行首输入

         aappend,在光标所在处后面输入

         A:在当前光标所在行的行尾输入

         o:在当前光标所在行的下方打开一个新的行

         O:在当前光标所在行的上方打开一个新的行

命令模式——>扩展命令模式

        

扩展命令模式——>命令模式

         esc

锁定和解锁:ctrl+sctrl+q

 

 

关闭文件

扩展命令模式下推出文本

         :q 退出文件

         :q! 强制保存退出,丢弃做出的修改

         :wq  保存退出

         😡 保存退出

 

命令模式下退出文本

         ZZ 保存退出

         ZQ 不保存退出

 

扩展模式

         按“:”进入Ex模式

         创建一个命令提示符,处于底部的屏幕左侧

         命令

                   w写入磁盘文件

                   wq保存退出

                   x 写入并推出

                   q 退出

                   q!不存盘退出,即使修改的内容,也不会保存

                   r filename 读文件内容到当前文件中

      :r /etc/issue 将文件内容插入到光标所在的位置


                   !command 在命令扩展模式下指定命令

      :!ls /etc/issue

                   r!command 将某个命令执行的记过读入到当前文件中

      r!cat /etc/issue

vim编辑器的使用

vim编辑器的使用


                  

命令模式光标跳转

         字符间跳转

         h:左

         l:右

         j:下

         k:上

记忆小技巧h在哪一排的最左边所以是左,l在最右边就是右,j可以理解成japan,日本在韩国的下边,j就是下,而韩国的首字母是k,韩国在日本上方,k就是上

 

         单词间跳转

         w:下一个单词的词首

         e:当前或下一个单词的词尾,end最后

         b:当前或前一个单词的词首,before        

         #command:有#指定一次跳转的单词数,比如我想跳转3个词,就是3w

 

         当前页跳转

         H:当前页的首部,可以理解成head

         M:页中间,middle

         L:当前页的底部,lower

 

         行首行尾跳转

         ^:跳转至行首的第一个非空白字符

         0:跳转至行首,绝对行首

         $:跳转至行尾

        

         行间移动:

         #G:扩展模式下直接指定跳转的行数如 10跳至第十行

         G:跳转至文件内容的最后一行

         1Ggg:跳转至文件的第一行

        

         句间移动

         “(”:上一句

         “)”:下一句

        

         段落间移动:

         {”:上一段

         }”:下一段

 

命令行模式翻屏操作

         翻屏

         ctrl+f:向下翻一屏

         ctrl+b:向上翻一屏

         ctrl+d:向下翻半屏

         ctrl+u:向上翻半屏

 

命令模式操作

         字符编辑:

         x:删除光标处的字符

         #x:删除光标处的#个字符

         xp:交换光标所在处的字符及其后面字符的位置,也就是后面的一个字符,换到前面的一个字符的位置

         ~:转换大小写,原本是大写转换成小写,原本是小写,转换成大写

        

         命令替换(replace

         r:替换光标所在处的字符

         R:切换成REPLACE模式

        

         删除命令

         d:删除命令,可结合光标跳转字符(wbe),实现范围删除

         d$:删除到行尾

         d^:删除到非空行首

         d0:删除到行首

         dw:删除到下一个单词的词首   

         de:删除到下一个单词的词尾

         db:删除至上一个词的词尾

         #command3dw

         dd:删除光标所在的行 3dd

         D:从光标处一直删除到行尾,留空行等同于d$

        

         复制命令(yank

         y:复制,跟d类似

         y$:从当前位置复制到行尾

         y0 从当前行复制到行首

         y^:从当前位置复制到非空白行首

         yw:从当前位置复制一个单词词首

         ye:从当前位置复制一个单词词尾

         yb:从当前位置复制单词的词尾

         yy:复制行 3yy

         y:复制整行

        

         粘贴命令(paste

         p:缓冲区如果为整行,粘贴当前光标所在行的下面,否则,粘贴至光标所在处的后面

         P(大写):缓冲区如果为整行,粘贴当前光标所在行的上面,否则,粘贴至光标所在处的前面

        

         改变命令(change

         c:修改后切换成插入模式

         命令模式——>插入模式

         c$:从光标的当前位置到行尾的内容删除,用户可新添加内容

         c^:从光标的当前位置到行非空白字符行首的内容删除,用户可新添加内容

         c0:从光标的当前位置到行绝对行首的内容删除,用户可新添加内容

         cb:从光标的当前位置到上个单词的词首删除,用户可新添加内容

         ce:从光标处到下个词的词尾删除,用户添加新内容

         cw:从光标的当前位置到下个词的词首删除,用户添加新内容

         #command

         cc:删除当前行并输入新内容 3cc

         C:删除当前光标到行尾,并切换成插入模式

 

命令模式

         10"xiaoesc粘贴‘xiao1o

         y复制,d删除,gU变大写,gu变小写(移动光标才会改变)

        

扩展模式:地址定界

         :start,end

         #: 具体第#行,例如2表示第2行;

#,#: 从左侧#表示行起始,到右侧#表示行结尾

#,+#: 从左侧#表示的行起始,加上右侧#表示的行数

2,+3 表示25

         “.” :当前行

         $:最后一行

         : .,$-1当前行到倒数第二行

         %:全文,相当于1,$

         /part1/./part2/

         从第一次被part1模式匹配到的行开始,到第一次被part2匹配到的行结束

    :/root/,/abc/

         #/part/ #行到被模式第一次被part匹配到的行结束

         /part/,$ 从第一次被模式匹配到的行到最后一行

         使用方式:后跟一个编辑命令

         d:删除

         y:复制

         w /path/to/file 将范围匹配到的行写到指定的文件中

         r file:在指定位置插入指定文件的内容

        

         查找

         /pattern:从当前光标所在处向文件尾部查找

         pattern:从当前光标所在处向文件首部查找

         n:向下翻页

         N:向上翻页

 

         查找替换

         s:在扩展命令模式下完成查找替换操作

         格式: s/要查找的内容/替换的内容/修饰符

         要查找的内容:可以使用模式

         替换的内容:不能使用模式,但可以使用\1,\2….等后向印象引用符号;还可以使用“&”引用前面查找时找到的整个内容

         修饰符:

         i:忽略大小写

         g:全局替换;默认情况下,每一行只替换第一次出现

         gc:全局替换,每次替换前询问

 

         查找替换中的分隔符/可替换为其他字符,例如

         s@/root@/var@g

         s#/boot#/#i

 

         撤销更改

         u撤销最近的更改

         #u:撤销之前多次更改

         U:撤销光标落在这行后所有此行的更改

         ctrl –r 重做最后的撤销更改

         .重复前一个操作

         n.重复前一个操作n

        

vim寄存器

      26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享。用ab,…,z表示,寄存器表示,放在数字和命令之间

如:3"tyy 表示复制3行到t寄存器中"tp 表示将t寄存器内容粘贴未指定,将使用无命名寄存器有10个数字寄存器,用019表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到22转存到3,以此类推。数字寄存器不能在不同会话间共享。

 

 

 

编辑二进制文件

         以二进制方式打开文件

         vim –b  /bin/bash

扩展命令模式下,利用xxd命令转换为刻度的十六进制

         %!xxd

编辑二进制文件

扩展命令模式下,利用xxd命令转换回二进制

保存退出

3.jpg

 

 

可视化模式

         允许选择地文本

         v:面向字符

         V:面向行

         ctr –v 面向块

         可视化键可用于移动键结合使用

         w, ), {,方向键等

         突出显示的文字可以被删除,复制,变更,过滤,搜索/替换等

        

 5.jpg

多文件模式

         vim file1 file2 file3 file4

         next 下一个

         prev 上一个

         first 第一个

         last 最后一个

         wall保存所有

         qall 退出所有

         wqall 保存退出所有

   

vim编辑器的使用

vim编辑器的使用

      

使用多个窗口

         vim –o|-O file1 file2

         -o:水平分割

         -O:垂直分割

         在窗口间切换ctrl+w 左右键

         单个文件窗口分割

         ctrl+w,ssplit,水平分割

         ctrl+w,vvertical,垂直分割

         ctrl+wq取消相邻窗口

         ctrl+w,o:取消全部窗口

         wqall退出

 8.jpg

 9.jpg

vim配置文件

         全局:/etc/vimrc

         个人:~/.vimrc

        

         扩展模式:当前vim进程有效

         显示行号

         set number简写为set nu

         取消行号 set nonu

        

vim编辑器的使用

vim编辑器的使用

         括号成对匹配        

         set showmatch简写set sm

         取消         set nosm

 

         自动缩进

         启用set ai

         取消set noai

       13.jpg 

         高亮搜索

         启用: set hlsearch

         取消: set nohlsearch

        14.jpg

         语法高亮

         启用:syntax on

         取消:syntax off

        

         忽略字符的大小写

         启用:set ic

         取消:set noic

         

         文件格式

         启用 fileformat=unix     

         不忽略:fileformat=dos

        

         设置文本宽度

         set textwidth=60

         set wrapmargin=10

 

         help option-list 获取帮助列表

         set or setall 显示set相关的命令

        

vim内置帮助

         help

         help topic    

         vimtutor(执行命令进入帮助文档)

 

      练习

复制/etc/profile/tmp/目录,用查找替换命令删除/tmp/profile文件中的行首的空白字符

 cp /etc/profile  /tmp    

   vim profile

    :s@^[[:space:]]@@g'

 

 复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首添加一个#

cp /etc/rc.d/init.d/functions /tmp

vim funtions

:s@^[[space:]]@#&@g'

        

原创文章,作者:fszxxxks,如若转载,请注明出处:http://www.178linux.com/32125