linux中的vim

什么是vim:

    Linux 在命令行下的文本编辑器,很多个别软件的编辑接口都会主动调用vim,所以在 Linux 的系统中使用文字编辑器来编辑你的Linux参数配置文件,在 Linux 的世界中,绝大部分的配置文件都是以 ASCII 的纯文本形态存在,因此利用简单的文字编辑软件就能够修改设置.所有的Unix Like系统都会内置vim文书编辑器,其他的文书编辑器则不一定会存在,vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计;因为程序简单,编辑速度相当快速。

    vim 会依据文件的扩展名或者是文件内的开头信息,判断该文件的内容而自动的调用该程序的语法判断式,再以颜色来显示程序码与一般信息。也就是说,这个vim 是个“程序编辑器”!甚至一些Linux基础配置文件内的语法,都能够用vim来检查。


    vim是一个模式化的编辑器,分为编辑模式,输入模式,末行模式,当然模式的名称每个人都有自己的见解,红帽官方命名为,命令模式,编辑模式,扩展命令模式


    基本模式:又叫编辑模式,命令模式,以vim打开一个文件的时候就直接进入编辑模式了,在这个模式中, 你可以使用“上下左右”按键来移动光标,你可以使用“删除字符”或“删除整列”来处理文件内容, 也可以使用“复制、粘贴”来处理你的文件数据。

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

    末行模式:在编辑模式当中,输入“:”,就可以将光标移动到最下面那一行。在这个模式当中,可以提供你“搜索数据”的动作,而读取、存盘、大量取代字符、离开vim、显示行号等等的动作则是在此模式中达成的!其实就是内置的命令行接口。


使用vim打开文件的正确姿势:直接vim命令后边跟上文件名直接就进入编辑模式了。

  vim [options] [file ..]:在vim后跟上选项可以指定光标所处的位置

    +#:打开文件后,直接让光变处于第#行首

    +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的首blob.png  

        在编辑模式键入相对应的键位可以改变光标所在位置

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

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

            o:在光标所在出下方打开一个新行;

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

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

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


   

关闭文件

    ZZ:保存并退出(在编辑模式)

    :q 退出(在末行模式)

    :q!强制退出,不保存此前的编辑操作(在末行模式)

    :wq保存并退出;(在末行模式)

    :w,q(在末行模式)

    :x保存并退出(在末行模式)

    :w/PATH/TO/SOMEFILE(在末行模式)


光标跳转:(在编辑模式)

    字符间跳转

    h,左

     j,下

     k,上

     l,右

     #cmd:跳转由#指定的个数的字符;

     单词间跳转

     w:下一个单词的词首;

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

     e:当前或后一个单词的词尾

     #cmd:跳转由#指定的个数的单词;


行首行尾跳转(在编辑模式)

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

    0:跳转至行首

    $:跳转至行尾

    行间跳转

    #G:跳转至由#指定的行

    1G:,gg:第一回

    :最后一行

    句间跳转

    )

    (

    段间跳转

    }

    {

翻屏:(在编辑模式)

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

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

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

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

    Enter:按行向后翻


vim的编辑命令

    字符编辑:(在编辑模式)

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

        #x:删除光标所在处起始#个字符

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

    替换命令:

        r:替换光标所在处的字符(后边要跟一个需要换的字符)

        r(char)


    删除命令:(在编辑模式)

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

        d$:

        d^:

        dw:

        de:

        db:

        dd:删除光标所在处的整行

        #cmd:删除光标所在处的行起始的共#行


    粘贴命令:(在编辑模式)

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

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

    复制命令:(在编辑模式)

        y:复制,工作行为相似与d命令;

        y$

        y^

        y0

        ye

        yw

        yb

        #cmd

        yy:复制一整行

        #yy:复制#行


改变命令:编辑模式–>输入模式,实现删除操作;     

    c^

    c$

    c0

    cb

    ce

    cw

    #cmd

    cc:删除光标所在出的行,并转换为输出模式

    #cc


其他编辑操作

    可视化模式:

        v:按字符选定

        V:按行选定

        结合编辑命令;d,c,y

    撤销操作

        u:撤销此前的操作

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

    恢复此前的撤销操作:

        ctrl+r

    重复执行前一个编辑操作

        .


vim末行模式:内建的命令行接口

    (1):地址定界

        :start_pos[,en_pos]

        #:特点的第#行,例如5即第5行

        .:当前行

        $:最后一行

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

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

        .,$-1

        1,$

        %:全文

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

        /pattern1/,/pattern2/:从光标所在处开始,由pat1匹配到的行开始,至第一次由pat2匹配到的行结束之间的所有行和编辑命令

        一同使用,实现编辑作用

        d

        y

        c

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

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


    (2):查找

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

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

        n:下一个,与命令方向相同

        N:上一个,与命令文件相反


    (3):查找并替换

        s:末行模式的命令,使用格式;

        s/要查找的内容/替换为的内容/修饰符

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

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

        如果“要查找的内容”部分在模式中使用分组符号:在“替换为的内容”中使用后向引用;

        直接引用查找模式匹配到的整个文本,使用&符号;

      修饰符:

        i:忽略大小写;

        g:全局替换,意味着一行中如果匹配到多次,则均替换;

        vim自带的练习教程:vimtutor

最后配上摘自鸟哥私房菜关于vim的按键说明,环境配置图和同学分享的VIM键盘图

blob.png

blob.png

blob.png

环境配置图

blob.png

VIM键盘图(这真真是太好了)

vim键盘图高清.png



原创文章,作者:M20-1马星,如若转载,请注明出处:http://www.178linux.com/32290

赞 (0)
M20-1马星M20-1马星
上一篇 2016-08-11 09:39
下一篇 2016-08-11 11:28

相关推荐

  • 马哥教育网络班28期—第1、2天知识点概略

    没做随堂笔记,根据记忆手打,看看自己能记住多少。

    Linux干货 2017-12-03
  • Linux中基础且常用的指令介绍及示例

    首先需要明确的是:Linux中无论是指令还是选项或者参数,请认真对待字母大小写。Linux中通用的命令使用方式是:命令 [选项] [参数] 1. pwd pwd:print name of current/working directory,即打印当前的目录(工作目录),光杆处于哪个目录下就会在终端上输出当前路径的绝对路径。用法示例: [lanti…

    Linux干货 2016-10-30
  • 进程的基本动作机制

    进程 我们知道硬件到用户使用分为:硬件,内核(系统),软件。 硬件也就是我们常见到的计算机等等,就相当于我们的身体,内核就相当于是我们的大脑,软件就相当于我们的动作。而进程就相当于我们怎么去实现这些动作。 进程是程序的一个具体实现,同一个程序可以执行多次,每次都可以在内存中开辟独立的空间来装载,从而产生多个进程。不同的进程还可以拥有各自独立的IO接口。 进程…

    Linux干货 2016-06-01
  • 基于Keepalived实现LVS双主高可用集群

    前言 前面说过基于heartbeat的LVS高可用方案,今天带来另一种解决方案:基于Keepalived实现LVS双主高可用集群。什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了, 也就是所谓的高可用或热备,用来防止单点故障的发生。本文将详细讲述Keepalived工作原理及高可用解决方案的实现。 相关介绍 K…

    Linux干货 2015-06-16
  • 关于大型网站技术演进的思考(十二)–网站静态化处理—缓存(4)

    原文出处: 夏天的森林   上篇我补充了下SSI的知识,SSI是一个十分常见的技术,记得多年前我看到很多门户网站页面的后缀是.shtml,那么这就说明很多门户网站都曾经使用过SSI技术,其实现在搜狐网站也还在用shtml,如下图所示: 由此可见SSI在互联网的应用还是非常广泛的。其实互联网很多网页如果我们按照动静分离策略拆分,绝…

    2015-03-11
  • N22-第八周作业

    第八周 1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。      集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。它工作于OSI(开放系统互联参考模型)参考模型第一层,即“物理层”。    &n…

    Linux干货 2016-10-09