天天看点

vim编辑器详解

vi:Visual Interface

vim: vi  iMproved

vim是一种全屏编辑器,也是一种模式化编辑器

vim模式:

    编辑模式(命令模式)

    输入模式

    末行模式

模式转换:默认是在命令模式下

    命令-->输入:

        i:在当前光标所指字符的前面插入,转为输入模式

        a:在当前光标所指字符的后面插入,转为输入模式

        o:在当前光标所指行下方,新建一行,并转为输入模式:

        I:在当前光标所在行的行首,转为输入模式

        A:在当前光标所在行的行尾,转为输入模式

        O:在当前光标所指行上方,新建一行,并转为输入模式

    输入/末行-->编辑

        ESC或者ESC+ESC(有时候需要两个)

    编辑-->末行

        输入 :即可

一、打开文件:

    vim /path/to/somefile

        vim +#:打开文件,并定位到第#行

        vim +:打开文件,定位到最后一行

        vim +/pattern:打开文件,并定位到第一次被parttern匹配到的行

二、关闭文件

    末行模式下:

        :q  退出但是不保存

        :w  保存

        :wq 保存并退出  --> 等价于:x

        :q!不保存并退出

        :w!强行保存

    编辑模式下:

        ZZ:保存并退出

三、移动光标(编辑模式)

    逐字符移动:

        h:左

        j:下

        k:上

        l:右

        #h:移动#个字符

    以单词为单位移动

        w:移动至下一个单词的词首

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

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

        #w:移动#个单词

    行内跳转:

        0:跳至绝对行首

        ^:行首的第一个非空白字符前面

        $:绝对行尾

    行间跳转

        #:从当前位置往下跳转#行,如果当前位置离行尾小于#行,则跳至行尾

        #G:跳转至第#行

        G:最后一行

        末行模式下,直接给出行号即可

四、翻屏

    Ctrl+f:向下翻一屏  (为了方便记忆可以把f当成forward)

    Ctrl+b:向上翻一屏    (backward)

    Ctrl+d:向下翻半屏    (down)

    Ctrl+u:向上翻半屏    (up)

五、删除单个字符

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

    #x:删除光标所在处以及向后的共#个字符

六、删除命令:d

    d命令跟跳转命令组合使用:

        #dw,#e,#db  

    dd:删除当前光标所在行

    #dd:删除当前光标以及向下共#行

    末行模式下:

        startline,endlined

        .:表示当前行

        $:表示最后一行

        +#:向下的#行

七、粘贴,命令 p

    p:如果删除或复制为整行内容,则粘贴至光标所在行下方,如果非整行,则粘贴至光标所在字符后面

    P:如果删除或复制为整行内容,则粘贴至光标所在行上方,如果非整行,则粘贴至光标所在字符前面

八、复制命令y

    用法同d

九、修改:先删除内容,再转化为输入模式

     c:用法同d

十、替换:r

    R:替换模式

十一、撤销前一次的编辑操作u

    u:撤消前一次的编辑操作

        连续u命令可以撤消此前的n次操作

    #u:直接撤消最近#次操作

十二、重复前一次编辑操作

    .

十三、可视化模式

    v:按字符选取

    V:按矩形选取

十四、查找

    /pattern

    ?pattern

        n:向下查找

        N:向上查找

十五、查找并替换

在末行模式下使用s命令

    ADDR1,ADDR2s/pattern/string/gi

    1,$

    % : 表示全文

十六、使用vim编辑多个文件

    vim file1 file2 file3

        :next  切换至下一个文件

        :prev  切换至前一个文件

        :last  切换至最后一个文件

        :first 切换至第一个文件

退出

    :qa 全部退出

十七、分屏显示一个文件

    Ctrl+w,s:水平拆分窗口

    Ctrl+w,v:垂直拆分窗口

在窗口间切换光标

    ctrl+w,arrow(即方向键)

    (摁键方法是先ctrl+w连按,然后再单嗯w、v...)

:qa 关闭所有窗口

十八、分窗口多个文件

vim  -o:水平分割显示

vim  -O:垂直分割显示

十九、将当前文件中部分内容另存为另外一个文件

:w

:add1,add2w  /path/to/file

二十、将另外一个文件的内容填充在当前文件中

:r  /path/to/somefile

二十一、和shell交互

:! COMMAND

二十二、高级话题

    显示或取消显示行号

    :set  number

    :set  nonu (命令可缩写,只要唯一)

    显示忽略或区分字符大小写

    :set ignorecase

    :set  noic

    设置自动缩进

    :set autoindent

    :set noai

    查找到的文本高亮显示或取消

    :set hlsearch    

    :set nohlsearch

    语法高亮

    :syntax on

    :syntax off

二十三、配置文件

/etc/vimrc

~/.vimrc

二十四、如果不正常退出或者多人同时编辑会出现类似以下提示:

E325: ATTENTION

Found a swap file by the name ".my.cnf.swp"

          owned by: root   dated: Thu Jan 14 15:31:21 2016

         file name: /tmp/my.cnf

          modified: no

         user name: root   host name: logstash

        process ID: 3055 (still running)

While opening file "my.cnf"

             dated: Thu Jan 14 10:44:10 2016

(1) Another program may be editing the same file.  If this is the case,

    be careful not to end up with two different instances of the same

    file when making changes.  Quit, or continue with caution.

(2) An edit session for this file crashed.

    If this is the case, use ":recover" or "vim -r my.cnf"

    to recover the changes (see ":help recovery").

    If you did this already, delete the swap file ".my.cnf.swp"

    to avoid this message.

此时只要删除文件所在目录下文件名格式为  .filename.swp 的文件即可。filename指正在编辑的文件名。  

本文转自biao007h51CTO博客,原文链接:http://blog.51cto.com/linzb/1734609 ,如需转载请自行联系原作者