文本编辑工具之vim使用介绍

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本编辑工具之vim使用介绍相关的知识,希望对你有一定的参考价值。

1、文本编辑器:

纯文本编辑器,ascii码(127个字符),unicode(全球统一编码)


2、文本编辑器分类:

行编辑器:sed

全屏编辑器:nano、vi、vim


3、vim编辑器模式介绍:

    编辑模式:(也叫命令模式)

    输入模式:

    末行模式:内置命令行接口

4、vim编辑器模式之间转换:

    编辑模式-->输入模式

        i:insert;在光标所在处输入

        a:append;在光标所在处后方输入

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

        I:在光标所在行行首输入

        A:在光标所在处行尾输入

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

    输入模式-->编辑模式

        ESC键

    编辑模式-->末行模式

        :

    末行模式-->编辑模式

        ESC键

    

5、vim新建或打开文件

格式:  

    vim [options] [file ..]

    vim [options] -

    vim [options] -t tag

    vim [options] -q [errorfile]

option:

    +#: 打开文件后,光标直接处于第#行的行首,如果不加#,+则代表处于文件尾行行首;

    +/PATTERN:打开文件后,直接让光标处于被模式PATTERN匹配的第一次匹配的字符行的行首

    

6、vim退出

    ZZ: 在编辑模式下,输入两个大写Z

    q:不保存退出,在末行模式下输入q

    q!:强制不保存退出,末行模式下

    wq:保存退出,末行模式下

    x:保存退出,末行模式下

    w /path/to/somefile :保存至指定路径文件,末行模式下



7、编辑模式下(即命令模式)的相关操作

7.1、实现光标跳转:字符间跳转、单词间跳转、行首行尾跳转、行/句间跳转、段间跳转

字符间跳转:

    h:向左跳转一个字符

    l:向右跳转一个字符

    j:向下跳转一个字符

    k:向上跳转一个字符

    #[hjkl]:向相应方向一次跳转#个字符;如2h,向左跳转2个字符一次

单词间跳转:

    w:跳转至下一个单词的词首;

    b:跳转至当前或前一个单词的词首

    e:跳转至当前或下一个单词的词尾;

    #[wbe]:跳转指定的#单词;

行首行尾跳转:

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

    0:零;跳转至行首,绝对行首(包括空白字符)

    $:跳转至行尾,绝对行尾,包括空白字符

行间跳转:

    #G:跳转指定的#行

    1G:跳转至第一行

    G:跳转至最后一行;

    gg:跳转至第一行

句间跳转:

    ):跳转至下一句(右括号)

    (:跳转至前一句(左括号)

    #[()]:跳转至第#句

段间跳转:

    }:跳转至下一段落

    {:跳转至上一段落

    #[{}]:跳转至第#段落


7.2、翻屏操作:

    ctrl+f:向文件尾部翻一屏;

    ctrl+b:向文件首部翻一屏;

    ctrl+d:向文件尾部翻半屏

    ctrl+u:向文件首部翻半屏

    enter:按行向后翻


7.3、编辑模式下的命令

有如下:字符编辑、替换操作、删除操作、粘贴操作、复制操作、改变操作等命令

字符编辑命令:

    x:删除光标所在处的字符

    #x:删除光标所在处及其后的指定个数#的字符

    xp:将光标所在处的字符与其后的位置字符交换位置

替换命令:replace

    r:替换光标所在处的字符,r后跟要替换的单个字符

删除命令:d

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

    [#]d[hjklweb]:结合光标跳转字符操作

    dd:删除光标所在的行

    #dd:删除光标所在处及其后的共#行;

粘贴命令:p

    p:小写p;缓冲区中的内容如果为整行,则粘贴在当前光标所在处的下行,如果不为整行,则粘贴至当前光标所在处的后方;

    P:大写P;缓冲区中的内容如果为整行,则粘贴在当前光标所在处的上方,如果不为整行,则粘贴至当前光标所在处的前方;


复制命令:yank,y

    y:复制,工作行为相似于“d”命令

    yy:复制一整行

    #yy:复制共#行

    y[^$0web]

改变命令:c

 改变命令c和删除命令d一样,只是比d命令多了模式切换。从编辑模式切换到输入模式。

    c:

    #cc


撤销命令:

    u:撤销此前的操作,默认最多可撤销前50次操作

    #u:撤销此前的#次操作


撤销此前的撤销命令:

    ctrl+r :恢复此前的撤销操作。


重复执行前一次编辑操作:. (点号)

    .


可视化模式:支持上下左右键框选。

    v:小写v;按字符选定

    V:大写V;按行选定;


vim自带的练习教程:vimtutor



8、末行模式操作:

末行模式是内建的命令行接口。

他包括以下:地址界定、查找、查找替换等操作。


8.1、地址界定:可同编辑命令一同使用,实现编辑操作,如:d,y,c,w,r;注意编辑操作直接跟在界定后面,不用再加空格

地址界定格式:

    :start_pos[,end_pos]    //开始位置[,结束位置]

    :#   : 第#行;

         如::5   表示第5行,

    :#,N :指定范围,左侧为起始行,右侧为结束行

         如::9,100 :表示从第9行到第100行

    :#,+# :指定行范围,左侧为起始行绝对编号,右侧为相对左侧的偏移量;

         如::3,+7 :表示从第三行到第10行

    :. :点好表示当前行。

     :$ :最后一行

         如::.,$ :表示当前行到最后一行

    :% :表示全文

       相当于:1,$ 

    :/pattern/ :从光标所在处开始,第一次被模式所匹配的行

        如: :/fstab/ :表示查找第一次匹配到的fstab。

           :/fstab/,$ :表示从光标所在处第一次匹配到的fstab到末行之间的行。

    :/pattern1/,/pattern2/ :第一次被模式1匹配到的和第一次被模式二之间匹配到额行,很少用。

        

地址界定后跟编辑操作:

    :5w /path/to/somefile:把第5行内容写到特定文件中

    :5r /path/from/somefile:在第五行后追加其他文件的内容

    :w /path/to/somefile :将范围内的文本保存到指定的文件中

    :r /path/from/somefile :将指定文件中的文本读取并插入指定位置;


8.2、查找

    :/pattern :从当前光标所在处向文件尾部查找,能够被当前模式匹配到的所有字符串;注意和地址界定中的:/pattern/ 的区别。

    :?pattern :从当前光标所在处向文件首部查找,能够被当前模式匹配到的所有字符串;

    

 注意: /pattern和?pattern可以配合n和N进行定位,n和命令方向相同,N和命令方向相反;


8.3、查找并替换: s

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


    要查找的内容:可使用正则表达式

    替换为的内容:不能使用正则表达式,但是可以引用。

注意:如果“要查找的内容”部分在模式中使用分组符号,在替换为的内容中使用后项引用; 直接引用查找模式匹配到的全部文本,要使用 & 符号。      

   修饰符:

    i:查找时忽略大小写

    g:全局替换。默认为替换每行中的第一个匹配项 

注意:如果分隔符与查找的或替换的内容有冲突,可以将分隔符“/”替换成其他的非常用字符,如@、#

    :[email protected]要查找的内容@替换为的内容@[修饰符]  

    :s#要查找的内容#替换为的内容#[修饰符]          

如::%[email protected]\<t\([[:alpher:]]\+\)\>@T\[email protected]     //匹配到t开头的单词,然后换成T开头的单词

  :%[email protected]\<t[[:alpher:]]\+\)@&[email protected]     //匹配到t开头的单词,在其后加上er

  :%[email protected]#@@    //将#号开头的行替换成空


练习1:复制/etc/grub2.cfg文件至/tmp目录中,用查找替换命令删除/tmp/grub2.cfg文件中以空白字符开头的行的行首空白字符

[[email protected] ~]# cp /etc/grub2.cfg /tmp/

:%s/^[[:space:]]\+//


练习2:复制/etc/rc.d/init.d/functions文件至tmp中,用查找替换命令为/tmp/functions文件中的每个以空白字符开头的行的行首加上“#”

[[email protected] tmp]# cp /etc/rc.d/init.d/functions /tmp/functions

:%s/^[[:space:]]\+/#\1/g


练习3:为/tmp/grub2.cfg文件的前三行的行首加上#

:1,3s/.*/#&/


练习4:将/etc/yum.reposd/centos-base.repo文件中将所有enabled=0替换为enabled=1,所有的gpgcheck=0,替换为gpgcheck=1

[[email protected] tmp]# cp /etc/yum.repos.d/CentOS-Base.repo /tmp/centos-base.repo

:%s/\(enabled\|gpgcheck\)=0/\1=1/g   


9、vim多文件功能

vim file1 file2 ... //依次新建、打开多个文件,默认打开的第一个,在新建的文件中进行切换,在末行模式下输入:next(下一个文件)、prev(上一个文件)、first(第一个文件)、last(最后一个文件)。


退出所有文件,末行模式下输入:

    wqall  :保存退出所有文件

    wall:保存所有文件

    qall:推出所有文件

如:[[email protected] tmp]# vim fstab issue //依次打开fstab、issue文件,如果不存在,则新建。


9.1、vim文件的多窗口功能:

多文件的多窗口显示:

vim -o file1 file2   //小写“o”水平分割同时显示file1和file2

vim -O file1 file2   //大写“o”垂直分割同时显示file1和file2 

文件窗口之间的切换:按住ctrl+w松开后,用上下左右箭头选择需要操作的文本窗口。


单文件的多窗口显示:

打开文件后,按住ctrl+w松开,按s键水平分割;

打开文件后,按住ctrl+w松开,按v键垂直分割;  

关闭展开的窗口,正常退出操作即可。


10、定制vim的工作特性:

末行模式下的设定,仅对当前vim进程有效;

如果要vim特性永久有效,需要修改配置文件:

    全局配置文件:/etc/vimrc

    个人配置文件:~/.vimrc  //可能需要自己创建此文件。

如:vim /root/.vimrc

    set number     //显示行号。


vim特性:(末行模式下设定)

行号:    

    显示行号:set number   简写为set nu

    取消行号:set nonumber 简写为set nonu

括号匹配,高亮显示:

    匹配显示:set showmatch ;set sm

    取消显示:set noshowmatch;set nosm

自动缩进:

    启用缩进:set ai

    停用缩进:set noai

高亮搜索结果:

    启用设置:set hlsearch

    停用设置:set nohlsearch

语法高亮显示:

    启用设置:syntax on

    停用设置:syntax off

忽略字符大小写:(查找替换中的修饰符g)

    启用设置:set ic

    停用设置:set noic


11、末行模式下的帮助命令:

    help

    help 关键字



12、设置vim编辑器中的tab缩进为四个字符

在.vimrc中添加以下代码,实现按tab键产生4个空格

set ts=4 (注:ts是tabstop的缩写,设置tab宽4个空格)

set expandtab


























以上是关于文本编辑工具之vim使用介绍的主要内容,如果未能解决你的问题,请参考以下文章

vim详解

vim详解

Liunx系统——VI文本编辑器之初见

Linux之起航基石“VIM”工具

vim(Linux运维)

vim(Linux运维)