强大的文本处理工具:vim编辑器

一:引言

系统管理员的重要工作就是修改与设置某些软件的重要配置文件,而vim作为vi编辑器的升级版本,不仅能够以不同颜色来显示文字内容,还能够进行诸如shell脚本、C等程序的编写,所以,它还是一个程序编辑器,接下来,就让我们一起来看看vim的有哪些好玩的用法和特征。

二:vim三种模式及其常见用法

强大的文本处理工具:vim编辑器

虽然vim有非常庞大甚至说它复杂也不为过的功能体系,但用结构图的方式把它表现出来,就一目了然了,那么接下来就让我们庖丁解牛,来更加详细的了解vim命令的基本用法及其vim三种模式都有哪些重要功能

                                                  ※vim

options:

   -m filename   只读打开文件(注意:当以只读方式打开文件时,只有root与文件所属者能够强制修改保存并退出)

   -b filename    打开二进制文件

   -o file1 file2    同时打开多个文件

   -d  file1 file2   比较多个文件,结果会高亮显示出不同内容所在的行及字符,效果如下:

    强大的文本处理工具:vim编辑器

                                     命令模式(默认模式)下的常见用法

  当处于命令模式下时,常见的用法大致有以下几种:

  •   文本编辑(删除d、复制y、粘贴p、修改c、撤销与反撤销)
  •   切换至visual模式,进行批量操作
  •   翻屏和行间跳转

用法一:文本编辑:

 1.删除(d):

   ①删除字符
   x  删除光标处字符
   #x 删除以光标起始的#个字符
   ②删除行
   d  删除命令(常与w,e,b,^,0,$ 一起使用)   
   dd 删除光标所在行
        #dd  多行删除   
2.复制(y):
   y  复制命令(常与w,e,b,^,0,$ 一起使用)
  #y   多行复制
   yy 复制当前行
3.粘贴(p):
  p   若复制的为整行,则粘贴到下边一行。否则,粘贴到当前光标后面
  P   若复制的为整行,则粘贴到上边一行。否则,粘贴到当前光标前面
4.修改(c)
  含义:先删除,后插入
  cc/C:删除光标所在行后进入插入模式(=‘dd+i’)
          #cc 修改多行
5.撤销:
  u 撤销最近的更改
  ctrl+r  反撤销
  #u撤销之前多次更改
  . 重复前一个操作
 n.重复前一个操作n次
6.替换模式(R):同时完成多个字符的替换

用法二:visual模式:

 v   面向字符
 V   面向行

 ctrl+v  面向块

优点:能够自由的选择多个字符或行来对文本内容进行批量的复制、粘贴、删除等操作。

用法三:翻屏和行间跳转:

ctrl +f 向下翻一屏
ctrl +b 向上翻一屏
ctrl +d 向下翻半屏
ctrl +u 向上翻半屏
G :   尾行

gg:首行

H:跳到当前页的首行

L: 跳到当前页的尾行
M: 跳到当前页的中间行

                                       ※拓展命令模式常见用法

用法一:查找和替换

 1.查找:

    从当前光标处向尾行查找  :/要查找的内容

     从当前光标处向首行查找  :?要查找的内容

2.单个字符替换:r

   替换任意多个字符:R (进入替换模式)

3.查找并替换(重点)

格式: :内容定界符s/要查找的内容/要替换为的内容/修饰符

分隔符 除常用的 “/” 以外,还有@与#。

  相关例题:复制/etc/rc.d/init.d/functions文件至/tmp目录,替换/tmp/functions文件中的/etc/sysconfig/init为/var/log

          正解:   :%s@/etc/sysconfig/init@/var/log@gi

  看到这里,相比大家已经知道@与#存在的意义了吧,那就是当替换内容中含有如 / 这些特殊字符时,为了简化操作,减少转译,我们常用@或#来代替/分隔符。

③内容定界符:

    :%  全文查找    

    :m  查找m行   

    :m,n  m-n行    

    :$  只在最后一行中查找(注意啦强大的文本处理工具:vim编辑器强大的文本处理工具:vim编辑器爱举一反三的小伙伴,并不存在^表示在首行中查找)

④要查找的内容:支持基本的正则表达式

⑤要替换为的内容:不支持正则表达式,但支持 后向引用 与  &

   注意:&表示引用之前模式匹配的整体,并不同于后向引用。

   相关例题删除/tmp/functions文件中所有以#开头,且#后面至少有一个空白字符的行的行首的#号

 正解: :%s/^#\([[:space:]]\+\)/\1/gc

  错解: :%s/^#\([[:space:]]\+\)/$/gc

  错误原因:\1才代表\([[:space:]]\+\)这个整体,而$代表引用^#\([[:space:]]\+\)这个整体,所以此时#与其后的空格并没有被替换

⑥修饰符: 

  g  全局替换(默认不加g时,只替换每行第一次出现)

  i   忽略字母的大小写

  c   每次替换前询问

查找替换相关例题:

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

   正解:   :%s/^[[:blank:]]\+//g

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

   正解:   :%s/^[[:space:]]\+/#&/g      其中&匹配^[[:space:]]\+

                                      

用法二:多文件模式

vim -o file1 file2………..
 :next 切换到下一个文件
 :previous  切换到上一个文件
 :last  切换到最后一个文件
 :first  切换到第一个文件
 :wqall  保存所有文件并退出

用法三:定义窗口属性

 设置全局窗口属性:  /etc/vimrc
 设置用户窗口属性: ~/.vimrc
:set all  显示当前文件所有set
:set nu/nonu 显示行号
:set ai/noai 自动缩进
:set ic/noic 忽略字符大小写

:set sm/nosm 括号匹配

:set tabstop=num   设置tab键为num个字符

  syntax on/off  语法高亮

:set hlsearch/nohlsearch  搜索高亮显示(也可通过/kugkufguewgfuew搜索任意字符来取消高亮)

 相关例题在vim中设置tab缩进为4个字符

  编辑配置文件/root/etc/vimrc—->插入一行 set tabstop=4

原创文章,作者:yunyunyu,如若转载,请注明出处:http://www.178linux.com/83767

(0)
yunyunyuyunyunyu
上一篇 2017-08-05 20:37
下一篇 2017-08-05 20:45

相关推荐

  • Linux发展史

    一、简单的说: 一个名叫Linus Torvalds的芬兰大学生想要了解Intel的新CPU386。他认为比较好的学习方法是自己编写一个操作系统的内核。出于这种目的,加上他对当时Unix 变种版本(即Minix)对于80386类机器的脆弱支持十分不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和S…

    Linux干货 2016-10-20
  • 内核参数修改 内核编译 第14天

    Linux内核:单内核,模块化 内核的某些模块 编译进内核本体 [*] 编译成内核模块 [M] 不选择使用     [ ] 内核的组成部分 /boot/vmlinuz-VERSION /lib/modules/VERSION/ *.ko 模块间有可能有依赖关系 内核模块管理 lsmod:显…

    Linux干货 2016-01-18
  • LVM基础

    逻辑卷的原理 逻辑卷的组成上包括物理卷,逻辑组,逻辑卷 物理卷即是磁盘分区或者块设备经过转换以后形成的抽象的逻辑设备 逻辑组即是将物理卷进行统一打包,合成一个更大的逻辑上的分区 逻辑卷是在逻辑组的基础上细分的课动态调节的虚拟磁盘分 其工作原理是通过某种机制将物理上的块设备或者分区抽象的进行封装,然后以逻辑卷的方式统一呈现给 上层的应用 逻辑卷的操作 一:创建…

    2017-05-01
  • 开班第一天,新获得的技能

    新接触命令 lscpu 显示CPU信息 gedit 文件名 类似于记事本 ** 注意 这个命令适用于图形界面。 cat /proc/partition 显示分区信息 cat /proc/meminfo 显示内存大小 cat /proc/swaps 显示虚拟内存 cat …

    Linux干货 2017-02-17
  • 操作系统—Systemd

    Systemd 概述:       CentOS 6和之前版本采用SysVinit的系统启动进程管理体系,一般用户都可通过在/etc/inittab文件的配置,来个性化自己的系统启动序列。但也经常会由于特殊环境的硬件等关系问题,造成其串行的启动进程控制流,因为可能任务的阻塞而影响启动过程。     &nbsp…

    Linux干货 2016-09-24
  • 脚本编程之变量

    简单跟大家介绍一下脚本编程中的变量。 大家都知道,脚本编程,主要由三个部分组成,一是命令,二是变量,三是控制语句。 变量的使用,可以让脚本变得更加简洁,高效。 我们主要简单讲一下变量的概念,变量的类型,变量的种类,不同种类的变量是如何定义的,变量的基本操作,以及变量的配置文件。 了解了这些,我们还可以聊一聊变量的高级操作。 首先,什么是变量? 通俗一点讲:变…

    Linux干货 2017-04-17