vim浅谈

        在Linux的世界里,绝大部分的配置文件都是以ASCII的纯文本形式存在的,所以作为一名优秀的Geek,熟练掌握一种文本编辑辑器是非常重要的。

        Linux世界中的文本编辑器有很多,比如:Emacs,pico,nano,vim等。

        但是vi是所以类Unix系统都会内置的文本编辑器,功能强大,且具备一定的程序编写能力,(其他文本编辑器则不一定存在哦!)所以下面我们重点介绍vim。

        我们可以把vim视为高版本的vi。

        好了,下面我们说下vim的具体用法吧!

    vim打开一个文件非常简单:

            #vim [option]… [FILE]     例如: #vim /etc/hosts    

QQ截图20150422134441.png

      

QQ截图20150422134349.png

    这样就可以打开文本文件了。

    vim也可以什么都不跟,直接就敲vim,可以查看版本等信息。  

QQ截图20150422134651.png

   

}OM0[YCPITT)YU{T0KST7@P.png

    vim有三种工作模式,分别是:编辑模式(也叫命令模式)、输入模式、末行模式。下面我们分别介绍下! 

        编辑模式:我们先拷贝/etc/rc.d/init.d/functions到/tmp/下,然后在用vim打开function文件。

    

QQ截图20150422135745.png

    

QQ截图20150422135900.png

 QQ截图20150423163425.png

QQ截图20150424143704.png

        这样我们就用vim打开一个文本文件了!当然打开文件不是目的,目的是对文件进行修改配置。

        下面我们就细述下vim。

        

        vim有三种工作模式:编辑模式(也叫命令模式),输入模式,末行模式。我们先谈下三种模式的作用与转换关系。

            编辑模式:用vim打开文件时默认的模式,在这种模式下,键盘的操作常被理解为编辑命令,我们可以移动光标和做删除复制的操作。

            输入模式:可以对文件进行修改和编写,如果想退回编辑模式就要按下【Esc】键了。

            末行模式:vim内置的命令接口,执行vim的内置命令。

        下面用张图展示个人理解三者之间的转换关系:

    

     QQ截图20150424231527.png

                                            男                                     媒人                                女

            如图所示,我们可以把这种相亲,男放有问题需要找媒人沟通,而不能直接找女方,女方同理,编辑模式即起到纽带的作用。

            下面我们介绍下编辑模式下我们可以用到的命令:

                    i:在光标所在处的前方转换为输入模式

                    a:在光标所在处的后方转换为输入模式

                    o:在光标所在处的下方新建一个空白行并转换为输入模式

                    R:转换为输入模式并一直替换光标所在处的字符

                    I:在光标所在行的行首转换为输入模式

                    A:在光标所在行的行尾转换为输入模式

                    O:在光标所在行的上方新建一个空白行并转换为输入模式

         那么当我们编辑完怎样退出呢?

            退出文件:

                    在末行模式下

                    :q!不保存退出

                    :wq 保存退出       

                    :x 保存退出

                    :wq!强制保存并退出

                    :w!若文件属性为“只读”,强制写入。

                    

            光标的移动:

                    h:光标向左移动一个字符

                    j:光标向下移动一行

                    k:光标向上移动一行

                    l:光标向右移动一个字节

                个人习惯了用上下左右键,但是这些键还是有必要知道的。

            单词间的移动:

                    w:下一个单词词首

                    e:当前单词或下一个单词词尾

                    b:当前单词或下一个单词词首

                这里支持#w,#e,#b的是用,#代表数字,比如:3w:后面的第三个单词的词首。

            行内移动:

                    ^:移动到行首(这里指的行内第一个非空白字符)

                    0:绝对行首

                    $:绝对行尾

            

            编辑命令:

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

                #x:删除从光标所在处向右的#个字符

            删除命令d:

                    可以结合w,b,e,$,0,^一起使用

                        例如:

                          dw:删除一个单词

                          dd:删除光标所在行

                          #dd:删除光标所在行及下面的#-1行

                          D:=d$删除光标所在处到行尾

            复制命令:

                y:yank,复制

                同理也可以结合w,b,e,$,0,^来使用

                #yy:复制#行,包括光标所在的行

                Y:=yy

            粘贴命令:

                p:past,粘贴

                    行级别:

                        p:粘贴于当前行下方

                        P:粘贴于当前行上方

                    小于行级别:

                        比如:3yw

                        p:粘贴于当前光标所在处的后方

                        P:粘贴于当前光标所在处的前方

                    修改命令:

                        c:change

                            先删除,再转换为输入模式

                                同理也可以结合光标跳转字符使用w,e,b,$,0,^,修改跳转范围内的字符 2cw

            在我们编辑过程中难免会有操作失误的时候,这里vim同样提供给我们撤销命令。

                    撤销命令:

                        u:在编辑模式下按u键即可,就好比我们在windows下习惯用的Ctrl+z

                        #u:撤销最近的#次操作

                    如果我们不想启用刚刚的撤销操作呢,想返回撤销之前的样子呢?

                        按下Ctrl+r即可

            末行模式:

                在末行模式下也可以锁定行

                    :# 敲回车后直接跳转到第#行

                    

                    :$ 跳转到最后一行

                内容锁定:

                       格式:starpos,endpos

                        #:第#行

                        .:当前行

                        $:最后一行

                        %:全文,相当于1,$

                        例:10,$-1:第十行到倒数第二行

                        c,

d,y等命令可以直接附加在地址范围后使用

                上图说明:

QQ截图20150425093326.png

QQ截图20150425093502.png

QQ截图20150425093546.png

QQ截图20150425093629.png

                内容锁定还支持将选定范围内的内容保存到另一个文件中和将指定文件中的内容读取到指定位置

                   w /path/to/somefile:将选定范围内的内容保存至某文件中 (.,$w /tmp/text.txt)

QQ截图20150425093326.png

QQ截图20150425094925.png

QQ截图20150425095122.png

            将/etc/issue中的内容保存在function中

                

QQ截图20150425095621.png

QQ截图20150425095808.png

QQ截图20150425095846.png

            vim还支持搜索替换

                格式为:s/查找模式/要替换成的内容/gi

                    查找模式:可以使用正则表达式

                    要替换成的内容:不能使用正则表达式,仅能使用引用

                        %s/file/FILE

                        g:global,全局替换

                        i:模式匹配不区分字符大小写

                例如:替换/tmp/functions文件中的/etc/sysconfig/init为/var/log

                    

QQ截图20150425101150.png

QQ截图20150425101215.png

                文本查找:

                    /PATTERN

                    ?PATTERN

        

QQ截图20150425102332.png

                n:搜索文本中的下一个etc单词

                N:搜索上一个

                用?ect大小写n的作用相反

            多文本模式:

                :next 下一个

                :previous 上一个

                :last 最后一个

                :first 第一个

        上图说明:

QQ截图20150425102953.png

QQ截图20150425103131.png

QQ截图20150425103150.png

QQ截图20150425103213.png

QQ截图20150425103228.png

                多文本编辑完后可以按wqall保存并退出。

                

                翻屏操作:

                    Ctrl+f:向文件尾部翻一屏

                    Ctrl+b:向文件首部翻一屏

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

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

                    j:向文件尾部翻一行

                    k:向文件首部翻一行

                多窗口模式:

                    vim

                        -o:水平分割

                        -O:垂直分割

                        Ctrl+w:切换窗口

                        Ctrl+w后按s:水平分割

                        Ctrl+w后按v:垂直分割

                如图:

QQ截图20150425104205.png

QQ截图20150425104337.png

QQ截图20150425104452.png

QQ截图20150425104701.png

             窗口属性定义:

                :set nu 显示行号

                :set nonu 取消行号

                :set ai 自动缩进(提示:同志们写脚本/代码时特别有用哦!)

                :set noai

                :set ic 忽略字符大小写

                :set noic

QQ截图20150425105323.png

                    其他定义还请同志们自行实验。

                语法高亮:

                    :syntax on | off

QQ截图20150425105553.png

QQ截图20150425105621.png

                    搜索高亮:

                        :set hlsearch

                        :set nohlsearch

QQ截图20150425105925.png

QQ截图20150425110001.png

            这些定义的属性都可在配置文件中设置

                全局:/etc/vimrc

                用户:~/.vimrc

            好了vim的常用命令就讲到这里了,有更丰富的用法和讲述不正确的地方还请同志们指正出来!

            谢谢大家!

            

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

(0)
水蒸气水蒸气
上一篇 2015-04-27
下一篇 2015-04-27

相关推荐

  • 推荐-使用Ansible部署LAMP环境

    使用Ansible部署LAMP环境 使用Ansible部署LAMP环境 前言 实验环境 实验步骤 配置ssh公钥认证 安装ansible 配置host iventory 创建YAML文件 运行Ansible-Playbook并测试 总结 前言 这两天学习了Ansible, 在部署实验环境真的很好用, 今天向大家分享如何使用Ansible部署LAMP环境, 本…

    Linux干货 2016-04-10
  • 配置LAMP实现WordPress

    配置LAMP实现WordPress 在同一台主机上实现LAMP(Linux + Apache + MariaDB + PHP) CentOS 7.3、Apache 2.4.6、MariaDB 5.5.52、PHP 5.4.16 1 安装LAMP 采用yum方式进行安装httpd、MariaDB、php、php-mysql,php-mysql用来进行php和M…

    2017-06-06
  • vsftpd 配置文件的一些设置

    ftp:File Transfer protocol 文件传输协议 两个连接: tcp:命令连接 tcp:数据连接 主动模式:服务器端通过20端口主动连接客户端,客户端监听在于服务器端的建立连接的端口+1上,服务器工作在tcp/20 被动模式:客户端使用自己与服务器端建立端口+1上连接客户端的随机端口 防火墙上连接追踪 数据要流失化文本:文件流二进制 c/s…

    Linux干货 2017-09-10
  • 文件查找、压缩、归档

    一、文件查找 非实时查找(数据库查找)locate;实时查找find locate:从系统上预建的文件索引数据库 /var/lib/mlocate/mlocate.db查找,但是依赖于事先构建的索引; 索引的构建是在系统较为空闲时自动进行,管理员手动的更新数据库(updatedb),得用updatedb命令跟新数据库,才能快速查找,也要根据权限搜索…

    Linux干货 2016-11-27
  • 网络知识点

    1. 实现异地搭建局域网的方法1>. 让运行商拉专线,这是相当昂贵的。2>.  VPN (Virtual PrivateNetwork)  虚拟专用网络 2. VPN的隧道协议主要有三种:PPTP、L2TP和IPSec。其中PPTP和L2TP协议工作在OSI模型的第二层,又称为二层隧道协议;IPSec是第三层隧道协议。 2. …

    Linux干货 2016-09-01
  • 软件包管理 — rpm & yum

    软件包管理 包管理器     二进制应用程序的组成部分:         二进制文件、库文件、配置文件、帮助文件     程序包管理器:      &…

    Linux干货 2016-08-24

评论列表(2条)

  • stanley
    stanley 2015-04-27 21:41

    内容丰满,少了些层次

    • 水蒸气
      水蒸气 2015-04-27 21:45

      @stanley谢谢老师指点!下次改进!