码迷,mamicode.com
首页 > 系统相关 > 详细

linux vim详解

时间:2015-09-05 23:50:10      阅读:399      评论:0      收藏:0      [点我收藏+]

标签:linux vim

vim模式

vim模式分为编辑模式(命令模式),输入模式,末行模式。


模式互相切换:

    输入模式 --> 编辑模式:ESC

    编辑模式 --> 末行模式::

    末行模式 --> 编辑模式: ESC

    编辑模式 --> 输入模式:

        i: insert(在光标前输入字符)

        a: append(在光标后输入字符)

        o: 在光标当前行下面增加一行,在新加的行中输入数据

        O: 与o相反,在光标当前行上面新增一行,同时在新加的行中输入数据

        I: 在光标的行首输入字符

        A: 在光标的行尾输入字符

 

打开vim:

    vim /FILEPATH

        vim +NUM /FILEPATH:光标跳转到NUM行并编辑该文件

        vim +/SEARCH /FILEPATH:光标跳转到search模式并编辑该文件


关闭vim:

    :q 直接退出

    :q! 不保存强行退出,当文件已经修改了,而你不想保存,:q是退出不了的,所以运用该项

    :wq 保存并退出

    :x 保存并退出


    :wq和:x区别:

        :wq:即使文件没有被修改也强制写入,并更新文件的修改时间。

                             :x: 仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。  


光标跳转:

    字符间跳转:

        h|←:左

        l|→:右

        k|↑:上

        j|↓:下


    单词间跳转:

        w:后单词的词首

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

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


    行内跳转:

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

        0:跳转至行首;

        $: 跳转至行尾;


    行间移动:

        #G: 第#行

        1G, gg:回首行

        G:回尾行


    句间移动:

        ):移到下一句

        (:移到上一句

    

    段落移动:

        }:移到下一段落

        {:移到上一段落


编辑命令:

    字符编辑:

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

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

        xp:替换当前字符和下一个字符的位置

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


    删除命令:

        d^:删除光标到行首的第一个非空白字符

        d0:删除光标到行首

        d$:删除光标到行尾

        dd:删除光标所在行(还有剪切功能)

        #dd:删除光标之后的#行

    

        注意:删除的内容会被vim编辑器保存至缓冲区当中;


    粘贴:p (paste, put)

        如果此复制或删除的内容不是一个完整行

            p:粘贴至当前光标所在处后面;

            P:粘贴至当前光标所在处前面;

        

        如果复制的内容是完整行(可不止一行)

            p: 粘贴至当前光标所在行下方;

            P:行上方;


    复制命令:y, yank 

        y^:复制光标到行首的第一个非空白字符

        y0:复制光标到行首

        y$:复制光标到行尾

        yy:复制光标所在行(还有剪切功能)

        #y:复制光标之后的#行

    

    改变命令:c, change(删除指定内容,并在当前光标处进入输入模式)

        同样有c$, c^, c0, cc, #cc

    

撤消此前的编辑操作:    

    u: undo 撤销之前的操作

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

    . : 重复前一个编辑操作


翻屏操作:

    Ctrl+f: 向后一屏;

    Ctrl+b:向前一屏;

    Ctrl+d: 向后半屏

    Ctrl+u: 向前半屏


vim的末行模式   


    (1) 地址,定界

        :start_pos,end_pos

        #:第#行;

        m,n:第m行到n行

        m,+n:第m行到m行之后n行

            .: 当前行

            $: 最后一行

        %: 全文,相当于1,$

        /pat1/:第一次被此模式所匹配到的行;

        #,/pat1/:第#行到下一个pat1模式匹配到的行

        /pat1/,/pat2/:第pat1匹配到的行到第pat2匹配到的行


        后可跟编辑命令:d,y,w,r


    (2) 查找

        /PATTERN:向尾部进行

        ?PATTERN:向首部进行

            n: 与命令同方向

            N:与命令反方向 


    (3) 查找替换

        s: 在末行模式下,在地址定界的范围内完成查找替换操作;

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

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

            替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容;

                \1, \2, ...

                &:引用“要找的内容”匹配到的整个内容;

            修饰符:

                i: 忽略大小写

                g: 全局替换(如果不加一行只会替换一个匹配到的内容

            /:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/

                分隔符可替换为其它字符:例如@,#等;



多文件模式:    

    vim FILE1 FILE2 ...

        :next 跳转下一个文件

        :first 跳转第一个文件

        :prev 跳转上一个文件

        :last 跳转到最后一个文件

        :wqall 保存退出所有文件

        :q!all 强制不保存退出所有文件


多文件窗口分割:

    vim -o|-O FILE1 FILE2 ...

        -o 水平分割窗口

        -O 垂直分割窗口


    ctrl + w, ↑↓←→ 切换窗口

        

单文件窗口分割:

    Ctrl+w, s: split, 水平分割

    Ctrl+w, v: vertical, 垂直分割


定制vim的某些工作特性:

    (1) 行号

        显示:set nu

        禁用:set nonu

    (2) 括号匹配

        显示:set sm

        禁用:set nosm

    (3) 自动缩进:

        set ai

        set noai

    (4) 高亮搜索

        set hlsearch

        set nohlsearch

    (5) 语法着色

        syntax on

        syntax off

    (6) 忽略字符大小写

        set ic

        set noic

    :help 获取帮助

    :help SUBJECT


特性设定的永久生效方式:

    全局配置文件:/etc/vimrc

    用户个人的配置文件:~/.vimrc


vim的可视化模式

    v:进入字符可视化模式,此时只要移动光标,移到的字符都会高亮显示,之后可以d,y之类的操作.

    V:进入行可视化模式.此时可以选中n行

    ctrl + v:进入块可视化模式.

    ESC:退出可视化模式


实战:

1、复制/etc/grub.conf配置文件至/tmp目录,用查找替换命令删除/tmp/grub.conf文件中的行首的空白字符;

解答:

1.cp /etc/grub.conf /tmp

2.vim /tmp/grub.conf

技术分享

3.输入:%s/^[[:space:]]\+//g

4.最终结果如下图

技术分享



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

解答:

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

  2. vim /tmp/functions

  3. :%s/^[[:space:]]/#&/g



3、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;

解答: :%s#/etc/sysconfig/init#/var/log#g


4、删除/tmp/functions文件中所有以#开头,且#后面至少跟了一个空白字符的行的行首#; 

解答: :%s/^#\([[:space:]]\+\)/\1/g




本文出自 “风之韵” 博客,请务必保留此出处http://chinalx1.blog.51cto.com/2334265/1691646

linux vim详解

标签:linux vim

原文地址:http://chinalx1.blog.51cto.com/2334265/1691646

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!