和sed相比,sed为字处理器(行编辑器),将文本逐行放入到模式空间(也就是内存)中进行处理,并显示在屏幕上。而vim、vi以及nano都是全屏文本编辑器,而vim则是vi的加强版本,相对于vi,vim则拥有特殊字符着色的功能,也是最为常用的功能;

  本节我们重点介绍vim编辑器的常见用法;

vim文本编辑器详解

  *Linux系统的核心就是通过文本来存储所有的软件配置文件*,所以,能够熟练的掌握文本编辑器对于学习Linux系统而言是至关重要的。

  vim编辑器作为vi编辑器的升级版,它将伴随我们学习Linux系统的整个过程!

  vi:Visual interface可视化接口;

  vim:VI iMproved vi的增强版;【vim编辑器实现是语法自动着色,方便我们判断自己缩写的语句是否正确】

vim的模式

  vim编辑器分为三种模式(这点和vi编辑器相同),编辑模式(命令模式),输入模式,末行模式

  在我们通过vim进入文本的时候,默认处于编辑模式。

  模式切换:

    编辑模式 -> 输入模式

      i  在当前光标所在字符的前面,进入输入模式;

        a  在当前光标所在字符的后面,进入输入模式;

      o  在当前光标所在行的下面重启一行,进入输入模式;

      I  在当前光标所在行的行首,进入到输入模式(自动将光标移动到当前行行首);

      A  在当前光标所在行的行尾,进入到输入模式(自动将光标移动到当前行行尾);

      O  在光标所在字符的上一行,转换为输入模式(和 o 正好相反);

    输入模式 -> 编辑模式

      ESC键

    编辑模式 ->末行模式

      输入 “:” 即可

      在输入模式下可以关联vim的相关命令对文本进行编辑,或者切换光标位置:

      例如:5d  #删除第5行

           10,20d  #删除第10行到20行,总共删除11行

           set nu  #显示行号

           ! ls /etc  #在vim下关联shell命令

      【以上操作都是我们比较常用的操作】

   末行模式 -> 编辑模式

      ESC键

   【三种模式之间的切换要注意一点:输入模式不能和末行模式之间直接切换,必须通过编辑模式来进行切换!】

    模式切换总结如下图:

vim下的常见操作

一、文本打开方式

  首先  vim /path/FILE  可以直接打开文件;

  特殊使用方式:

    vim +数字 /path/FILE  可以打开文件,且直接将光标定义在数值指定的行;

    vim + /path/FILE  打开文件,将光标处在文件的末尾;

    vim +/string /path/FILE  打开文件,且将光标定义在string字符串处,类似于查找功能;

二、文本关闭方式

  1、常见关闭文本都是在末行模式下进行

    :q  表示退出文本,不保存;

    :wq  保存并退出文本;

    :q!  如果修改了文本,不想保存,则通过 :q! 来强制退出文本;

    :w  只保存,不退出文本;

    :w!  强制保存文本,这个权限只有管理员root才拥有;

  2、在编辑模式(命令模式)下退出文本

    ctrl+z  退出文本,但是不保存

    ZZ  保存并退出文本

三、光标移动

  注意:以下操作均处于编辑模式(命令模式)下运行;

  1、逐字符的移动光标:

    j 下

    k 上

    h 左

    l 右

    【这个“上下左右”要更加好于键盘的“上下左右”,它更加的方便】

    结合数字来使用,既可以同时移动多行,例如:5j  向下移动5行;6l  向右移动6个字符;

  2、按照单词为单位来移动光标

    w  光标处于单词首部,以单词为单位向后移动

    e  光标处于单词尾部,以单词为单位向后移动

    b  光标处于单词首部,以单词为单位向前移动

    同理,可以结合数字来使用:5e  向后移动5个单词位;10b  向前移动10个单词位;

  3、行内跳转

    0  表示跳转到行首(不包含制表符)

    ^  表示跳转到绝对的行首

    $  表示跳转到行尾

  4、行间跳转

    数字G  指定跳转到那个固定行,例如:5G  表示跳转到第5行;

    G  如果不加数字,则是直接跳转到最后一行;

    【末行模式下,也可以进行行间跳转;例如: “:5” 表示跳转到第5行;】

四、翻屏

  编辑模式下:

  ctrl+f  向下翻一屏

  ctrl+b  向上翻一屏

  ctrl+d  向下翻半屏

  ctrl+u  向上翻半屏

五、删除操作

  删除单个字符

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

    数字x  和之前移动光标原理相同,可以删除“数字”个字符;例如:5x  删除5个字符;

  删除命令--d

    dw  删除光标所在的那个单词;

    数字dw  删除“数字”个单词,从当前光标开始算起;

    dd  删除当前行;

    【在末行模式下,可以删除多行“:StartADD,EndADDd”删除startadd到endadd行;这里记住一个特殊符号:. (点,表示当前行),例如: :.,$-3d  这表示删除当前行到倒数第4行之间的所有内容;如果说要删除删除当前行到向下数十行的内容呢? :.,+10d 其中,+ 号表示向下多少行的意思,+多少,就是向下多少行】

    【vim下删除内容的时候要注意:删除的内容不会被立刻清除,还可以恢复删除的内容,最近一次删除的内容可以复制或者剪切到其他的地方,通过p命令粘贴到别的地方】

六、复制--y

  复制的用法基本与删除用法相同

  其中  yy  复制当前行使用最为多;

  数字y  表示复制从当前光标单词算起,复制多少个单词;5y  复制5个单词;

七、粘贴--p和P

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

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

八、修改--c

  先删除掉内容,再转换为输入模式:

  cc  删除当前行后,直接进入输入模式进行编辑;

  c$  删除当前光标到末行的内容,在直接转入到输入模式进行编辑;

  【cc 和 c$ 是比较常见的两种用法】

九、替换--r

  替换操作一般用于单个字符的操作:

  r字符或数字  将光标所在字符替换为输入的字符或数字;

十、撤销--u

  u  撤销前一次的操作,连续桥u命令,则是撤销此前的n次操作;默认情况下最多撤销前50次操作;

  数字u  直接撤销前“数字”次操作;例如,5u  撤销前5次的操作;

  【取消最近一次撤销的操作则为 ctrl+r】

十一、重复前一次的操作--.

  .  (点)这个符号就表示重复上一次的编辑操作

  例如:dd  删除了当前行,此时一致敲 . 则表示重复 dd 的命令;

十二、可视化模式(标记内容)--v和V

  进入可是化模式,通过移动光标来选择要编辑的内容;

  v  表示按照字符来选取内容

  V  表示按照行来选取内容

  选择了对应的内容以后,再进行复制,删除等等操作;

十三、查找,以及查找并替换

  查找:

    这个内容则和less命令的类似,就不在多说

  /PATTERN 从前面往后面找
  ?PATTERN 从后面往前面找
  【支持正则表达式】
  n 下一个
  N 上一个

  查找并替换:

    查找到对应的内容后,可以进行替换操作,这里和sed名的格式有点类似:

    ADDR1,ADDR2s@pattedn@string@gi  #其中ADDR1,ADDR2表示要替换的范围,s可以理解为sed命令,pattern选择出要替换的字符串,替换为后面的string,最后g表示全局替换,而i则表示不区分大小写

    例如: :.,$-1s@he@HE@g  #从当前行到倒数第二行,中的he全部替换为HE

    【1,$表示全文范围,也可以通过%来表示全文范围】

  练习:将/etc/yum.repos.d/server.rpo文件中的ftp://instructor.example.com/pub替换为http://172.16.0.1/yum

  vim /etc/yum.repos.d/server.rpo

  :%s@ftp://inistructor\.example\.com/pub@http://172.16.0.1/yum@g

十四、同时编辑多个文件

  vim是可以支持跨文件编辑的(例如,将file1中的内容复制粘贴到file2中去)

  vim FILE1 FILE2 FIEL3  #在vim后面接上多个文件的时候,实际上是打开了FILE1,FILE2,FILE3三个文件,但是显示只显示了FILE1的内容。

  在末行模式下:

    :next  切换到FILE2或后者其他文件

    :prev  切回到FILE1或则前面的文件

    :last  切换到最后一个文件

    :first  切换到第一个文件

    :q  只能退出当前文件,如果想退出所有文件,则需要使用

    :qa  退出所有文件

十五、分屏显示同一个文件--ctrl+w [s|v] 或者 -[o|O]

  上面我们说到了同时打开多个文件,但是不在同一个屏幕上面显示,如何才能让屏幕同时显示多个文件呢?

  ctrl+w松开后,再按s  水平分割窗口  

    vim -o FILE1 FILE2

  ctrl+w松开后,再按v  垂直分割窗口  

    vim -O FILE1 FILE2  

  ctrl+w松开后,再按w或是小键盘上下左右  切换光标所在文件

十六、将当前文件中部分内容另存到另外一个文件中--w

  在末行模式下进行操作:

  例如: :.,+5w /path/somefile  #保存当前文件光标所在行,到接下来5行的内容保存到另外一个/path/somefile文件中去;

十七、将另外一个文件的内容填充到当前文件中--r

  在末行模式下进行操作:

  例如: :r /etc/inittab  #将/etc/inittab文件的内容填充到当前文件光标所在的地方;

十九、调用shell脚本程序(调用命令)--!

  在末行模式下进行操作:

  例如: :! ls /etc  #这样就可以直接在vim编辑器中去运行ls /etc的命令;

二十、高级操作

  1、显示或取消行号

    :set number  也就是简写为 :set nu

    :set nonu  取消行号

    【默认情况下是没有行号的,我们所如果想默认进来就看到行号,就必须去修改vim的配置文件】

  2、是否忽略大小写

    :set ignorecase  也就是简写为 :set ic

    :set noignorecase

  3、设置自动缩进功能

    默认情况下回车后是没有缩进的

    :set autoindent  也就是简写为 :set ai

    :set nohlsearch

  4、查找到的文本的高亮显示与取消

    语言着色功能,默认开启(也叫做高亮显示)

    :set hlsearch

    :set nohlsearch  #关闭高亮显示

  5、语法着色功能(vim默认开启)

    :syntax on

    :syntax off  #关闭语法着色功能

二十一、vim的配置文件

  /etc/vimrc  #为所有shell下的主配置文件,修改这里的配置文件,则在所有bash程序下生效;

  ~/.vimrc  #各个用户的家目录下去编辑这个文件(没有的可以自己创建),则只在本bash进程下,对vim的编辑才生效

vim导师(vim的帮助文件)

  vimtutor  #vim编辑器的教程,这里有心的朋友可以自己慢慢去看;

vim编辑文件时非法退出时遇到的问题

  如果在你编辑文件的时候,突然关闭了该shell程序,并不是通过 :q 或者 ZZ 正常退出的文件,则会在当前被编辑文件的同一个目录下生成  .swp  的隐藏文件文件;

  当你再次想编辑这个文件时候则提示如下:

  这里提示您上次在 dated 时间的时候进行过编辑,您是否继续编辑;

  O表示打开该文件,但是只读,E表示编辑这个文件,R表示覆盖这个文件重新编辑,D则是删除上次编辑的内容,重新再进行编辑,A则是表示退出并终止;

  此时,我们只需要按E进去正常保存,这样我们之前编辑的内容就不会丢失,再删除掉  .swp 的隐藏文件即可;

11 vim文本编辑器的更多相关文章

  1. Linux命令行下的vim文本编辑器

    Linux命令行下的vim文本编辑器 下面这个网站的地址讲解的非成分清楚!!!! http://blog.csdn.net/niushuai666/article/details/7275406 学习 ...

  2. Vim文本编辑器详细用法

    1 Vi.Vim文本编辑器 1.Vi.Vim Vi是Visual interface的简称. Vim是Vi的增强版,即Vi Improved.在后面的实例中将介绍Vim的使用. 为什么学vi? 1)所 ...

  3. 第十八章 vi/vim文本编辑器介绍

    一.vi/vim文本编辑器介绍 1.含义: vi就是一个文本编辑器 2.为什么学习: 系统配置 编写脚本 vim就是vi的升级版 高级版 [root@jindada ~]# [root@jindada ...

  4. (6.2)vim文本编辑器

    vi / vim是Unix / Linux上最常用的文本编辑器而且功能非常强大. vim文本编辑器只有命令,没有菜单.

  5. Linux系统 vi/vim文本编辑器

    Linux系统 vi/vim文本编辑器 (一)Vim/Vi简介 (二)Vim/Vi工作模式 (三)Vim/Vi基本使用 (四)Vim/Vi应用技巧 (一)Vim/Vi简介 Vim/Vi是一个功能强大的 ...

  6. Vim 文本编辑器的基本使用

    Vim文本编辑器是Linux/Unix系统下最常用的工具之一,通过该工具可以很方便的建立.修改.编辑文档或者程序文件,其作用类似与windows系统下的记事本或者notepad++,因此熟练掌握该工具 ...

  7. linux100day(day3)--常用文本处理命令和vim文本编辑器

    今天,来介绍几个常用文本处理命令和vim文本编辑器 day3--常用文本处理命令和vim文本编辑器 col,用于过滤控制字符,-b过滤掉所有控制字符,这个命令并不常用,但可以使用man 命令名| co ...

  8. linux/linux学习笔记-vim文本编辑器(mooc)

    vim文本编辑器 vim与vi的区别:( vim=vi +IMproved) VIM是一个Unix以及类unix文本编辑器 特点:功能强大,高度可定制 vim编辑器的三种模式:一般模式.编辑模式和命令 ...

  9. Linux学习笔记(九)Vim文本编辑器的使用

    Vim文本编辑器的使用 Vim的工作模式 1.命令模式 2.输入模式 3.编辑模式 进入Vim 1.使用Vim打开文件 2.直接进入指定位置 Vim基本命令 1.插入命令 2.光标移动命令 3.使用V ...

随机推荐

  1. 曾经很强大的免费 ERP 2BizBox

    曾经很强大的免费 ERP 2BizBox 整个功能很强大,特别是生产,工单也很完善,有损耗,有反冲等功能. 流程比较规矩,需要先采购后才能使用,只有生产后才能销售,工单有组装和拆装,工程有工程更改,也 ...

  2. java中四种访问修饰符

    Java中的四种访问修饰符:public.protected.default(无修饰符,默认).private. 四种修饰符可修饰的成分(类.方法.成员变量)   public protected d ...

  3. golang 原子操作函数

    golang中的原子操作在sync/atomic package中. 下文以比较和交换操作函数为例,介绍其使用. CompareAndSwapInt32 比较和交换操作是原子性的. // Compar ...

  4. less命令详解

    Linux less命令 less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件 语法: less [ ...

  5. 基于redis 3.x搭建集群环境

    由于我团队开发的在线坐席系统,即将面对线上每周3000W的下行投放客户,产品的咨询量可能会很大,基于前期,200W的投放时,前10分钟,大概800问题量,平均一个客户大概8个问题,也就是说每分钟10个 ...

  6. Video Test Pattern Generator(7.0)软件调试记录

    Video Test Pattern Generator(7.0)软件调试记录 . XVidC_VideoMode XVIDC_VM_576_50_I = XVIDC_VM_720x576_50_I ...

  7. TextBox限制输入字母、数字、退格键

    公共方法如下: /// <summary> /// 正则表达式验证只能输入数字或字母 /// </summary> /// <param name="pendi ...

  8. intellij idea 设置 Error 提示颜色修改

    File--->Settings --->Editor --->ColorScheme--->General --->Errors and Warning--->E ...

  9. 解决js输出汉字乱码问题

    当我们需要使用js输出汉字时,偶然会出现输出的中文汉字乱码的情况,在网上收了很多解决方案 1.在mata中加 <meta content="text/html; charset=utf ...

  10. [蓝桥杯]ALGO-16.算法训练_进制转换

    问题描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*102+2*101+3*100这样 ...