Linux文本处理工具 二 Vim

原文链接: http://www.cnblogs.com/bailandecheng/p/9379494.html

vimLinux中的一款功能强大的文本编辑器,基本可以满足我们在Linux中对文本处理的全部需求

一.vim打开文件

一般情况下,我们用vim打开一个已有文件时都是用vim+文件名直接打开一个文件,若文件不存在则保存时在当前目录下新建这个文件,并在底行提示“[New File]”,但vim打开的功能不止于此

格式:vim  [option]  [file]

          vim          [file]      直接打开(新建)文件,如果是已有文件,则光标

                                      处于上次退出时的位置

         vim    +#    [file]      打开文件后,让光标处于第#行的行首,+默认光标

                                       处于末行行首

         vim    -b     [file]      以二进制的方式打开文件

         vim    -d     [file1]   [file2]   比较多个文件(若是两个文件则在屏幕上同

                                                  时显示两个文件)

         vim    -m    [file]       以只读的方式打开文件

二.vim的三种主要模式简介

三种模式的简介:

vim主要有Normal(命令),Insert(插入或编辑),extended command(扩展命令)三种模式,这三种模式各有各的功能

命令模式:我们打卡一个文件时直接进入vim的命令模式,也就是vim的默认模式,由于vim是个基于命令行的编辑器,所以没有鼠标,所有的光标移动操作都通过键盘执行,而这些操作都是在命令模式中执行,除了移动光标,命令模式中还主要进行复制,剪切,粘贴,搜索等操作。

编辑模式:这个模式主要提供文本的具体编辑功能

扩展命令模式:多用于查找,读取,显示行号等功能

除了这三种常用的模式,vim还有:选择(visual)模式,不过功能相较单一,主要用于vim中文本的选择

                               替换(replace)模式,用于字符的替换

 

 

 

模式图示:                                          

           

 

模式间的转换:

 

 

命令模式 --> 插入模式

i: 在光标所在处输入

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

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

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

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

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

插入模式 --> 命令模式

ESC

命令模式 --> 扩展命令模式

:

扩展命令模式--> 命令模式

ESC, enter

命令模式 --> 替换模式

R/r 

替换模式-->命令模式

ESC

命令模式 --> 选择模式

V/v

选择模式-->命令模式

ESC

V/v

替换模式<-->编辑模式

 Insert

三.命令模式

在命令模式下输入的命令是在屏幕显示的,下面是常用的命令模式的命令:

ZZ: 保存并退出

ZQ: 不保存直接退出

 

光标的移动指令:

  字符间移动 h:  向左移动光标(等同键盘的上下左右键但上下左右键可以在任意模式下使用,但在扩展命令模式下 使用上下

   键,分别表示上一条命令和下一条命令,hjkl只能在命令模式和选择模式使用)

l:  向右移动光标

j: 向下移动光标

k:  向上移动光标

#h/j/k/l 一次性移动指定行 #表示数字(例如输入3 h则表示向左

      移动三个字节)

  单词间移动w: 光标移到下一个单词的词首

e: 光标移到下一个单词的词尾

b: 光标移到当前或上一个单词的词首

#w|e|b 一次性移动指定个单词 #表示数字

 页间移动H: 光标移到当前页的页首

L: 光标移到当前页的页尾

M: 光标移到当前页的页中

  整个文件间移动 G: 光标移到整个文件的尾行

#G: 光标跳到指定行   

gg: 光标移到整个文件的首行

^: 光标跳转至行首的第一个非空白字符

行内移动0: 光标跳转至行首

$: 光标跳转至行尾

  句段间移动):光标跳转至下一句句首

(:光标跳转至上一句句首

}:光标跳转至下一段段首

{:光标跳转至上一段段首

 

当前页面的翻页操作:

 

Ctrl+f: 向文件尾部翻一屏

Ctrl+b: 向文件首部翻一屏

Ctrl+d: 向文件尾部翻半屏

Ctrl+u:向文件首部翻半屏

 

对文本的删除复制等操作:

删除  x: 删除光标处的字符

#x: 删除光标处起始的#个字符

xp: 交换光标所在处的字符及其后面字符的位置

c$: 删除到行尾,同时进入插入模式

c^:删除到行首,同时进入插入模式

c0:删除到行首,包含带空格的行首,同时进入插入模式

cw: 删除到当前单词的词尾,同时进入插入模式

cc: 删除当前行,同时进入插入模式

#cc:多行删除,同时进入插入模式

      替换 J:删除当前行后的换行符

~:转换大小写

r: 替换光标所在处的字符

R:切换成REPLACE模式 此模式下输入的字符将替换当前字符,退格键也由删除变为还原之前的字符,按ESC退出

剪切d$: 剪切到行尾

d^:剪切到非空行首

d0:剪切到行首

dw: 剪切当前单词

dd: 剪切光标所在的行

#dd:多行剪切

复制y$: 复制到行尾

y^:复制到非空行首

y0:复制到行首

yw: 复制当前单词

yy: 复制光标所在的行

#yy:多行复制,#表示复制的行数

"[a-z]d|y 复制或剪切到指定的寄存器

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

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

"[a-z]p|P 粘贴到光标所在位置

        撤销重做u撤销最近的更改

#u撤销之前多次更改

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

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

. 重复前一个操作

n.重复前一个操作n

四.扩展命令模式

:”进入扩展命令模式并创建一个命令提示符: 处于底部的屏幕左侧

命令:

基础命令:

w                             写(存)磁盘文件

wq                           写入并退出

x                              写入并退出

q                              退出

q!               不存盘退出,即使更改都将丢失

r     [filename]          读文件内容到当前文件中

w    [filename]         将当前文件内容写入另一个文件

!     [command]         执行命令

r!    [command]        读入命令的输出

扩展命令模式中的地址定界功能

 

地址定界第一步:

在扩展命令模式的“:”后面输入数据来表示范围

下面是输入数据的格式:

# 具体第#行,例如2表示第2

#,# 从左侧#表示起始行,到右侧#表示结尾行

#,+# 从左侧#表示的起始行,加上右侧#表示的行数例如2,+3 表示25

. 当前行

$ 最后一行

% 全文, 相当于1,$

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

例如/asd/,/zxc/表示从第一个有“asd”的行到其后面第一个有“zxc”的行

#,/pat/从第#行到其后面第一个有pat的行

/pat/,$从第一个有pat的行到最后

第二部在输入的数据后跟一个编辑命令

d删除前面所选择的范围

y复制前面所选择的范围

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

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

扩展命令模式的查找功能

 

/PATTERN:从当前光标所在处向文件尾部查找,PATTERN为要搜索的词条

?PATTERN:从当前光标所在处向文件首部查找,PATTERN为要搜索的词条

n:与命令同方向

N:与命令反方向

扩展命令模式的替换功能

s: 在扩展模式下完成查找替换操作

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

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

替换为的内容:不能使用模式,但可以使用\1, \2, ...等后向引用符号;还可以使用“&

引用前面查找时查找到的整个内容

修饰符:

i: 忽略大小写

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

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

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

s@/etc@/var@g

s#/boot#/#i

举例讲解一:

替换/etc/rc.d/init.d/functions文件中的/etc/sysconfig/init/var/log

1.vim进入/etc/rc.d/init.d/functions,由于文件过长,在此只选取一部分展示

[root@centos7 ~]# vim /etc/rc.d/init.d/functions

# Read in our configuration

if [ -z "${BOOTUP:-}" ]; then

    if [ -f /etc/sysconfig/init ]; then

        . /etc/sysconfig/init

    else

        # This all seem confusing? Look in /etc/sysconfig/init,

        # or in /usr/share/doc/initscripts-*/sysconfig.txt

        BOOTUP=color

        RES_COL=60

        MOVE_TO_COL="echo -en \\033[${RES_COL}G"

        SETCOLOR_SUCCESS="echo -en \\033[1;32m"

        SETCOLOR_FAILURE="echo -en \\033[1;31m"

2.在命令模式下(默认模式)输入“:”进入扩展命令模式

3.在“:”后输入%s@/etc/sysconfig/init@/var/log@gi

[root@centos7 ~]# vim /etc/rc.d/init.d/functions

# Read in our configuration

if [ -z "${BOOTUP:-}" ]; then

    if [ -f /etc/sysconfig/init ]; then

        . /etc/sysconfig/init

    else

        # This all seem confusing? Look in /etc/sysconfig/init,

        # or in /usr/share/doc/initscripts-*/sysconfig.txt

        BOOTUP=color

        RES_COL=60

        MOVE_TO_COL="echo -en \\033[${RES_COL}G"

        SETCOLOR_SUCCESS="echo -en \\033[1;32m"

        SETCOLOR_FAILURE="echo -en \\033[1;31m"

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

解释:%”表示整个文本

            s表示进行查找替换操作(本质上是表示引用“sed”命令)

           @用来分界,三个@将命令分成四部分,第二部分为在文本中搜索的词条

            第三部分是要替换的词条,第四部分是命令的参数

            /etc/sysconfig/init要搜索的词条

            /var/log要替换的词条

            g表示替换

            i表示忽略大小写

结果:替换后部分用蓝色背景显示

[root@centos7 ~]# vim /etc/rc.d/init.d/functions

# Read in our configuration

if [ -z "${BOOTUP:-}" ]; then

    if [ -f /var/log ]; then

        . /var/log

else

        # This all seem confusing? Look in /var/log,

        # or in /usr/share/doc/initscripts-*/sysconfig.txt

        BOOTUP=color

        RES_COL=60

        MOVE_TO_COL="echo -en \\033[${RES_COL}G"

        SETCOLOR_SUCCESS="echo -en \\033[1;32m"

        SETCOLOR_FAILURE="echo -en \\033[1;31m"

五.编辑模式

编辑模式在vim中用来输入,修改,删除文本,是编辑文本的模式

编辑模式下的常用命令:ENTE      换行

BACK SPACE      退格键,删除光标前一个字符

DELETE         删除键,删除光标后的一个字符

方向键    在文本中移动光标(在编辑模式下因为要输入,

所以无法使用hjkl来移动光标)

HOME/END      移动光标到行首/行尾

Page Up/Page Down      /下翻页

Insert      切换光标为输入/替换模式,光标将变成竖线/下划线

ESC       退出输入模式,切换到命令模式

转载于:https://www.cnblogs.com/bailandecheng/p/9379494.html

猜你喜欢

转载自blog.csdn.net/weixin_30781631/article/details/94799983