功能强大的Linux文本编辑器之Vim的使用

VIM编辑器

 

Vim章节的内容:

   使用vivim的三种主要模式

   移动光标,进入插入模式

   改变、删除、复制文本

   撤销改变

   搜索文档

   vim寄存器

   可视化和多窗口

   vim帮助

一、文本编辑器种类的简单介绍:

  行编辑器:sed

  全屏编辑器:nanovivim(可以理解为vi的升级版)

  简单的图形编辑器:gedit

  图形版的vim编辑器:gvim

二、了解vim的主要模式:

1、三种主要模式:

  命令模式(默认):光标的移动,文本的剪切与粘贴

  插入模式:文本内容的修改

  扩展命令模式:保存,退出;修改、查找与替换等

  注:“ESC”按键:退出vim的当前模式,每次的使用都是返回到命令模式下。

blob.png

2、  模式的转换:

1)命令模式>>>插入模式:

   i: 在光标所在处输入

   I:在当前光标所在行的行首输入

   a:在光标所在处后面输入

   A:在当前光标所在行的行尾输入

   o:在当前光标所在行的下方打开一个新行

   O:在当前光标所在行的上方打开一个新行

2)插入模式>>>命令模式:

   按键“ESC

3)命令模式>>>扩展命令模式:

   冒号(:)

4)扩展命令模式>>>命令模式:

   按键“ESC 

注:编辑界面的锁定与解锁:(界面锁定时,在键盘上敲击的字符虽然没有显示输入,但当解锁时,所输的字符会自动写入。)

Ctrl+s  锁定;Ctrl+q  解锁 

三、Vim的文件打开与关闭

1man帮助查看vim的格式使用:

  vim [options] [file ..]

  例:vim name 新建文件并命名为name

 blob.png

注:使用vim打开文件,如果该文件存在,文件被打开并显示内容;如果该文件不存在,当编辑后第一次存盘时创建它 

2vim打开文件:

  +#: 打开文件后,直接让光标处于第#行的行首

  +/PATTERN:打开文件后,直接让光标处于第一个被PATTERN匹配到的行的行首

  vim + file 直接打开file,光标在最后一行

  vim b file 二进制方式打开文件

  vim d file1 file2 比较多个文件

  vim -m file 只读打开文件

  ex file vim –e 直接进入ex模式(扩展模式) 

3vim关闭文件:

1)扩展模式下关闭文件:

   :q 退出

   :q! 强制退出,丢弃做出的修改

   :wq保存退出

   :x保存退出

2)命令模式下关闭文件:(该方式关闭文件在文件出现修改的情况下不建议使用。)

   ZZ: 保存退出

   ZQ:不保存退出

四、命令模式下vim的使用:

1、光标的跳转:

字符间的跳转

左:h

右:l(小写L

上:k

下:j

单词间的跳转

下一个单词的词首:w

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

当前或下一个单词的词首:b

#指定一次跳转的单词数:#COMMAND

当前页的跳转

页首:H

页中间行:M

页底:L

行首、尾的跳转

跳转到行首第一个非空白字符:^

跳转到行首(真正的行首):0

跳转到行尾:$

行间的跳转

跳转至由#指定的行:#G

(扩展命令模式下:#

跳转到最后一行:G

跳转到第一行:1Ggg

句间的跳转

下一句: ):

上一句: (:

注:以.为句间跳转

段落间的跳转

下一段: }

上一段: {

注:以较大的空行为一段跳转

2、翻屏操作:

向文件尾部翻一屏

向文件首部翻一屏

向文件尾部翻半屏

向文件首部翻半屏

Ctrl+f

Ctrl+b

Ctrl+d

Ctrl+u

3、字符的编辑与替换命令:

字符编辑

x: 删除光标处的字符;

#x: 删除光标处起始的#个字符     注:最多只能删除到行尾)

xp: 交换光标所在处的字符及其后面字符的位置   (注:相当于剪切后粘贴,前后位置互换。)

~:转换大小写

替换命令

r: 替换光标所在处的字符 (注:r后面跟上输入需要替换掉后的内容。

R:切换成REPLACE模式    (注:当切换模式后,输入什么就替换什么,当到了行尾后就继续输入。ESC退出回到命令模式。 

4、命令模式下vim的复制、删除、改变、粘贴:

复制命令

删除命令(从光标处开始)

改变命令(从光标处开始)

y

复制,单一字符的复制

d

删除命令,可结合光标跳转字符,实现范围删除

c

修改单个字符后(相当于删除后)切换成插入模式

y$

从光标处到行尾的复制

d$

删除到行尾

c$

删除到行尾,切换成插入模式

y0

从光标处到非空行首的复制

d^

删除到非空行的行首

c^

删除到非空行的行首,切换成插入模式

y^

从光标处到行首的复制

d0

删除到行首

c0

删除到行首,切换成插入模式

ye

从光标处到下一个单词词首的复制

de

删除到下一个单词的词首

ce

删除到下一个单词的词首,切换成插入模式

yw

从光标处到当前单词的词尾或者下一个单词词尾的复制

dw

删除到当前单词的词尾或者下一个单词的词尾

cw

删除到当前单词的词尾或者下一个单词的词尾,切换成插入模式

yb

从光标处到当前单词的词首或者前一个单词词首的复制

db

删除到当前单词的词首或者前一个单词的词首

cb

删除到当前单词的词首或者前一个单词的词首,切换成插入模式

#COMMAND

如:3yb,将光标处到前三个单词之间进行复制

#COMMAND

如:5dw,往行尾删除5个单词

#COMMAND

如:3ce,光标处往行尾删除3个单词, ,切换成插入模式

yy

复制光标所在的行

dd

删除光标所在行

cc

删除当前行并输入新内容

#yy

复制多(#)行

#dd

多(#)行删除

#cc

多(#)行删除并输入新内容

Y

复制整行

D

从当前光标位置一直删除到行尾,留空行,等同于d$

C

删除当前光标到行尾,并切换成插入模式

粘贴命令:

p(小写):缓冲区存的如果为整行,则粘贴当前光标所在行的下方;否则,则粘贴至当前光标所在处的后面

P(大写):缓冲区存的如果为整行,则粘贴当前光标所在行的上方;否则,则粘贴至当前光标所在处的前面

5vim的特殊使用以及命令的撤销更改:

1vim的特殊使用:

   A100igogo [ESC] :粘贴“gogo100

   B<start position><command><end position>

     Command:y 复制、d 删除、gU变大写、gu变小写

   例如0y$ 命令意味着:

      0 →先到行头

      y →从这里开始拷贝

      $ →拷贝到本行最后一个字符

      ye 从当前位置拷贝到本单词的最后一个字符

2vim命令撤销:

   u撤销最近的更改

   #u撤销之前多次更改

   U撤消光标落在这行后所有此行的更改

   按Ctrl-r重做最后的“撤消”更改

   . 重复前一个操作

   n.重复前一个操作n 

6、可视化使用(可视化模式):允许选择的文本块

1v面向字符 :在命令模式下,按c键后,使用方向键可以逐个字符进行选定,如下图:

  blob.png

2V面向行 :在命令模式下,按C(大写)键后,使用方向键可以逐个行块进行选定,如下图:

  blob.png

3Ctrl+v 面向块 :如下图,先往下选定所需要的行后,再往右进行选定,可实现块选定。

  blob.png

4)可视化键可用于与移动键结合使用:w,),},箭头等

   突出显示的文字可以被删除,复制,变更,过滤,搜索/替换等 

五、扩展命令模式下的vim使用:

1、地址定界:

  /pat1/,/pat2/   :从第一次被pat1模式匹配到的行开始,一直到第一次被pat2匹配到的行结束

  #,/pat/        :从#行开始到被模式空间匹配到结束

  /pat/,$        :从模式空间匹配到开始,一直到文本的尾部结束

  使用方式:后跟一个编辑命令

  d file:将指定范围的内容删除

  y file:将指定范围的内容复制

  w file:将范围内的行另存至指定文件中

  r file:在指定位置插入指定文件中的所有内容

  如下图:读取他处的文本内容写入

  blob.png

  如下图:将编辑后的文本内容另存指定的路径和重新命名文本名存放

  blob.png

  如下图:查看另存的新文本内容

  blob.png

2、扩展命令模式下vim的查找:

  /PATTERN:从当前光标所在处向文件尾部查找

  ?PATTERN:从当前光标所在处向文件首部查找

  n:与命令同方向

  N:与命令反方向

3、扩展命令模式下vim的查找与替换:

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

   查找替换中的分隔符/可替换为其它字符,例如

   s@/etc@/var@g s#/boot#/#i

2)查找内容、替换内容及修饰符的注意点:

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

   替换为的内容:不能使用模式,但可以使用\1, \2, …等后向引用符号;还可以使用“&”引用前面查找时查找到的整个内容

   修饰符:

        i: 忽略大小写

        g: 全局替换;默认情况下,每一行只替换第一次出现

        gc:全局替换,每次替换前询问 

4vim编辑二进制文件

1)以二进制方式打开文件:

    vim –b binaryfile

2)扩展命令模式下,利用xxd命令转换为可读的十六进制

   :%!xxd

3)编辑二进制文件

4)扩展命令模式下,利用xxd命令转换回二进制

   :%!xxd –r

5)保存退出 

5vim的寄存器:

1)了解命名寄存器和数字寄存器:(未指定,将使用无命名寄存器)

   有26个命名寄存器和1个无命名寄存器,常存放不同的剪贴版内容,可以不同会话间共享。用ab,…,z来做“寄存器”名称。

   有10个数字寄存器,用01,…,9表示,0存放最近复制内容,1存放最近删除内容。当新的文本变更和删除时,1转存到22转存到3,以此类推。但数字寄存器不能在不同会话间共享。

2)使用格式及例子:

   使用格式:#” 寄存器名称 命令

   如:3"tyy 表示复制3行到t寄存器中

   "tp 表示将t寄存器内容粘贴 

6、多文件编辑下,扩展命令模式的vim使用:

   vim FILE1 FILE2 FILE3 …

   :next 下一个

   :prev前一个

   :first 第一个

   :last 最后一个

   :wall 保存所有

   :qall退出所有

   :wqall 

六、vim的命令模式下的多窗口及定制工作特性:(在窗口间切换:Ctrl+w, 再按箭头进行切换窗口)

1、多窗口分割:

1)多文件分割

   vim -o|-O FILE1 FILE2 …

   -o: 水平分割

   -O: 垂直分割

2)单文件窗口分割:

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

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

   ctrl+w,q:取消相邻窗口

   ctrl+w,o:取消全部窗口

 :wqall退出 

2vim工作特性定制:

1)配置文件:永久有效

   全局:/etc/vimrc

   个人:~/.vimrc

   扩展模式:当前vim进程有效

3、工作特性的启用与取消:

显示

取消显示

行号

set   number, 简写为set nu

set nonumber, 简写为set nonu

括号成对配对

set   showmatch, 简写为set sm

set   nosm

自动缩进

set   ai

set   noai

高亮搜索

set   hlsearch

set   nohlsearch

语法高亮

syntax   on

syntax   off

忽略字符的大小写

set   ic

set   noic

文件格式

fileformat=unix

fileformat=dos

设置文本宽度

:set textwidth=65 (vimonly)  从左边算起第65个字符自动换行。;   :set wrapmargin=15   从右边开始算起15个字符自动换行。

帮助

:help option-list  :setor:set all  (在help里面使用该命令查看) 

4、了解更多的help

  vi/vim内置帮助( :help :helptopic Use:qto exit help Vimtutor 

练习:

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

   :%s@^[[:space:]]\+@@

  blob.png

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

  :%s@^[[:space:]]\+@#&@

  blob.png

  blob.png

作业:

1、  如何设置tab缩进为4个字符?

   :set ts=4

  blob.png

  blob.png

2、  复制/etc/rc.d/init.d/functions文件至/tmp目录;替换/tmp/functions文件中的/etc/sysconfig/init/var/log

   :%s@/etc/sysconfig/init@/var/log@

  blob.png

  blob.png

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

   :%s@#@@

blob.png

blob.png

 

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

(0)
Aaron_wangAaron_wang
上一篇 2016-08-12 09:01
下一篇 2016-08-12 09:01

相关推荐

  • N25期–第十四周作业

    系统的INPUT和OUTPUT默认策略为DROP; # iptables -P INPUT DROP # iptables -P OUTPUT DROP 1、 限制本地主机的web服务器在周一不允许访问;新请求的速率不能超过100个每秒;web服务器包含了admin字符串的页面不允许访问;web服务器仅允许响应报文离开本机;   #iptables…

    Linux干货 2017-04-10
  • N26-第一周博客作业

    一:计算机的组成及其功能  1.运算器(CPU) 对数据进行各种运算;  2.控制器(CPU) 用来控制整个计算机操作系统;  3.存储器 内存(RAM)存储程序和各种数据信息;  4.输入装置 (Input)下达指令,提供数据,常见的输入装置有鼠标,键盘等;  5.输出设备 (Output)输出数据加工后的…

    Linux干货 2016-12-31
  • DNS配置

     DNS配置 基本的配置准备 1.安装bind 2.开启named服务 一、正向解析库 1、修改/etc/named.conf配置文件 vim /etc/named.conf 修改如下行 listen-on port 53 { 10.1.44.2; } allow-query     { any; } recursion no;…

    Linux干货 2016-10-09
  • 硬盘分区MBR和GPT选哪个好?有什么区别?

    当前主流的硬盘分区方式有两种:MBR和GPT。 一、MBR与GPT简介与结构 什么是MBR?         MBR,全称为Master Boot Record,即硬盘的主引导记录。是对IBM兼容机的硬盘或者可移动磁盘分区时,在驱动器最前端的一段引导扇区。 MBR的组成部分       &…

    Linux干货 2016-08-29
  • Btrfs文件系统

    一:概述     1.1简介         Btrfs被称为是下一代Linux文件系统。通常念成 Butter FS,Better FS 或B-tree FS。它采用了很多先进的文件系统设计,不仅解决了 ext2/3的扩展性问题,支持写时…

    Linux干货 2016-04-19
  • 马哥教育网络班21期第11周课程练习

    1、详细描述一次加密通讯的过程,结合图示最佳。 发送方Bob:自上至下 1、生成数据 2、Bob用单向加密算法对数据提取特征码 3、Bob用自己的私钥加密特征码,并附加在数据后面 4、Bob使用对称加密算法生成临时会话密钥加密特征码和数据 5、Bob用Alice的公钥加密临时会话密钥,并附加在数据后 接收方Alice:自下至上 1、Alice收到Bob数据,…

    Linux干货 2016-10-31