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

Linux之vim编辑器

时间:2015-09-02 19:13:56      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:vim

Linux之vim编辑器

     Vim是从 vi 发展出来的一个文本编辑器。 vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。


     基本上vim共分为三种模式,分别是一般模式、编辑模式、指令列命令模式(也称末行模式)。 这三种模式的作用分别是:

     一般模式:

         以 vi 打开一个档案就直接进入一般模式了(也是默认的模式)。在这个模式中, 你可以使用(上下左右)按键来移动光标,你可以使用(删除字符)或(删除整行)来处理档案内容, 也可以使用(复制、贴上)来处理你的文件数据。

     编辑模式:

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

     指令列命令模式(或末行模式):

         在一般模式当中,输入( : / ? )三个中的任何一个按钮,就可以将光标移动到最底下那一行。在这个模式当中,可以提供你搜寻资料的动作,而读取、存盘、大量取代字符、开vi、显示行号等等的动作。

     用下图简要体现一下上面的描述:

技术分享     

     常用操作指引:

         移动光标移动

         h 或 向左箭头键(←):光标向左移动一个字符

         j 或 向下箭头键(↓):光标向下移动一个字符

         k 或 向上箭头键(↑):光标向上移动一个字符

         l 或 向右箭头键(→):光标向右移动一个字符

         [Ctrl] + [f]:屏幕向下移动一页,相当于 [Page Down]按键 (常用)

         [Ctrl] + [b]:屏幕向上移动一页,相当于 [Page Up] 按键 (常用)

         [Ctrl] + [d]:屏幕向下移动半页

         [Ctrl] + [u]:屏幕『向上』移动半页

         +:光标移动到非空格符的下一列

         -:光标移动到非空格符的上一列

         H:光标移动这个屏幕的最上方那一行的第一个字符

         M:光标移动到这个屏幕的中央那一行的第一个字符

         L:光标移动到这个屏幕的最下方那一行的第一个字符

         G:移动到这个档案的最后一行

        gg:移动到第一行,相当于1G


        搜寻与取代

        /PATTERN:向下查找字符串。

        ?PATTERN:向上查找一个字符

技术分享

技术分享

        :n1,n2s/PATTERN1/PATTERN2/g,n1 与 n2 为数字。在第 n1 与 n2 行之间寻找PATTERN1这个字符串,并将该字符串取代为PATTERN2;

        示例:在/tmp/log/a.t文件在1到20行之间搜寻umask并取代为Umask则:

            :1,20s/umask/UMASK/g

       :1,$s/PATTERN1/PATTERN2/g,从第一行到最后一行寻找 PATTERN1字符串,并将该字符串取代为PATTERN2

       :1,$s/PATTERN1/PATTERN2/gc,从第一行到最后一行寻找PATTERN1 字符串,并将该字符串取代为PATTERN2且在取代前显示提示字符给用户确认 (confirm) 是否需要取代


        删除、复制与贴上

       x, X:x向后删除一个字符,X向前删除一个字符,nx,连续向后删除 n 个字符(n表示数值)

         dd:删除所在的行。ndd,向下删除 n 行。

        d1G:删除光标所在到第一行的所有数据

         dG:删除光标所在到最后一行的所有数据

         d$:删除光标所在到该行的最后一个字符

         d0:删除光标所在到该行的最前面一个字符

         yy:复制光标所在的行,nyy复制光标向下 n 行

        y1G:复制光标所在行到第一行的所有数据

         yG:复制光标所在行到最后一行的所有数据

         y0:复制光标所在的那个字符到该行行首的所有数据

         y$:复制光标所在的那个字符到该行行尾的所有数据

       p, P:p将已复制的数据在光标下一行贴上,P 则为贴在光标标上一行

          u:撤销前一个动作

          .:重做上一个动作

       行末:$      

       行首:^

       空格:\s

   行末空格:\s\+$

   行首空格:^\+\s


        进入插入或取代的编辑模式

       i, I:进入插入模式(Insert mode):i从当前光标位置插入, I 当前前所在行的第一个非空格符处开始插入

       a, A:进入插入模式(Insert mode):a 从当前光标位置下一个字符处开始插入; A 在光标所在行的最后一个字符处开始插入

       o, O:进入插入模式(Insert mode):o 从当前光标所在的下一行处插入新的一行; O 在当前光标所在处的上一行插入新的一行

       r, R:进入取代模式(Replace mode):r 在光标所在的那一个字符替换或取代一次;R会一直取代光标所在的文字,直到按下 ESC 为止

       上面这些按键在编辑模式下,左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 

     [Esc]:退出编辑模式


      保存、离开等命令

       :w:将编辑的数据保存

       :w!:强制保存文档

       :q:退出vim

       :q!:强制退出vim

       :wq:保存并退出。:wq! 保存并强制退出

        ZZ:文件没有改动,则不保存退出,若文件已改动过,则保存并退出

       :w [filename]:将编辑的文件保存至新的文件

       示例:将编辑中/tmp/log/a.t保存至f.t

技术分享

       :r [filename]:在编辑的行中,读入另一个文件的数据

       :n1,n2 w [filename]:将 n1 到 n2 的内容保存成 filename 这个文件

       :! command:暂时离开 vim到命令模式下执行 command 的显示结果,如:(:! ls /home)即可在 vim中查看 /home目录下文件信息


       打开多个文件应用(vim file1 file2)

       o:打开文件并横向显示

技术分享

      -O:打开文件并垂直显示

技术分享

     :vs 文件路径/文件名:多窗口打开并垂直分屏

技术分享

     :sv 文件路径/文件名:多窗口打开水平分屏

    Ctrl+6:下一个文件(一个窗口,但是打开了多个文件)

       :bn:下一个文件(一个窗口,但是打开了多个文件)

       :bp:上一个文件(一个窗口,但是打开了多个文件)

Ctrl+w+方向键:切换到前/下/上/后(打开了多个窗口)

Ctrl+ww—:依次向后切换到下一个窗口(打开了多个窗口)

 单个文件:q 

 关闭所有: qa 

      

      vim环境的设定

         :set nobackup:从不备份 

         :set autoindent:自动缩进

         :set hlsearch:搜索逐字符高亮,nohlsearch搜索逐字符不高亮

         :set showmatch:高亮显示匹配的括号;noshowmatch不高亮显示匹配的括号

         :set nu:显示行号:nonu:取消行号

技术分享

         :set syntax on :自动语法高亮

         :set ignorecase smartcase :搜索时忽略大小写

        以上都是临时设定,如需要永久设定生效,需要编辑配置文件:

全局配置文件:/etc/vimrc

        示例:设置所有用户下vim编辑文件时,显示行号

技术分享

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


   更多简单了解vim编辑器,可查看vim内建教程输入命令:vimtutor


综合示例:

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

技术分享

技术分享

   注::%s/^\+s\//命令前面指明范围是 "%",所以这会作用于整个文件。"substitute" 命令的匹配模式是"^\+s\"。这表示行首(^)前的一个或者多个(\+)空格(\s)。替换命令的 "to" 部分是空的:"//"。这样就会删除那些匹配的空白字符。

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

技术分享

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

技术分享

技术分享

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

技术分享


本文出自 “一万小时定律” 博客,请务必保留此出处http://daisywei.blog.51cto.com/7837970/1690778

Linux之vim编辑器

标签:vim

原文地址:http://daisywei.blog.51cto.com/7837970/1690778

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