功能强大的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

相关推荐

  • CentOS开发环境搭建

        一个月之前将系统换为Linux,昨天系统运行的时候突然死机,开机之后进不了系统,并且BIOS无法识别硬盘,无奈只有在普通硬盘上重装系统。搭建开发环境,为了避免再次遇到类似现象,或在下次遇到这类问题快速搭建开发环境,记录开发环境搭建的过程。 1、启用wifi echo "blacklist&n…

    Linux干货 2016-08-04
  • Linux之计划任务

    Linux 之计划任务    任务计划Linux任务计划、周期性任务执行未来的某时间点执行一次任务:atbatch:系统自行选择空闲时间去执行此处指定的任务周期性运行某任务:cron   at任务at命令:at [option] TIME常用选项:-V 显示版本信息:-l: 列出指定队列中等待运行的作业;相当于atq-d: 删除…

    Linux干货 2016-09-11
  • 安装RPM包 rpm与yum工具的使用

    1.认识yum与rpm工具.                 在windows下安装一个软件很轻松,只要双击.exe的文件,安装提示连续 “下一步” 即可,然而linux系统下安装一个软件似乎并不那么轻松了,因为我们不是在图形界面下。所以你要学会如何在linux下安装一…

    Linux干货 2016-08-26
  • 高可用+LVS-NAT

    关键:floating VIP 要以组为单位同时切换 实验1: 主备VRRP 切换实验 预期: 设定配置文件: A主机 (172.18.48.61) vrrp_sync_group VG1 { group { outside_network inside_network } } vrrp_instance outside_network { state MA…

    2017-05-14
  • DNS and Bind

    DNS and Bind      DNS服务器所提供的服务是完成将主机名和转换为IP地址的工作。为什么需要将主机名转换为IP地址的工作呢?这是因为,当网络上的一台客户机访问某一服务器上的资源时,用户在浏览器地址栏中输入的是人类便于识记的主机名和域名。而网络上的计算机之间实现连接却是通过每台计算机在网络中拥有的惟一的IP地址来完…

    Linux干货 2017-06-01
  • Linux 第四天: (07月28日) 练习和作业

    Linux 第四天: (07月28日) 练习和作业         定义别名命令baketc, 每天将/etc/目录下所有文件, 备份到/testdir独立的子目录下, 并要求子目录格式为backupYYYY-mm-dd, 备份过程可见 alias baketc='cp -a /etc/ /testdir/b…

    Linux干货 2016-08-08