我们常用的文本编辑软件有MS WORD,国人的WPS也不逊色,最近也推出了linux版的WPS,而与之相对应的是处理ASCII编码的文本处理工具,最常用的当属vi /vim了,今天我们介绍vim(Visual Interface inproved,可视界面增强版)

为了练手,我们将一些复杂的文本文件保存到用户家目录下

例如我把cp /etc/httpd/conf/httpd.conf ~cyb/ 我们把httpd的配置文件复制到家目录下练手。

A:vim的命令格式.

vim [options][/path/to/somefile]

例如我们要在当下路径创建一个a.txt的文本,我们使用如下命令

# vim a.txt

B.vim的具体使用

Vim 有三种模式:1,编辑模式(命令行模式)2,输入模式 3,末行模式

首先,我们说明,3者之间是如何转换的

编辑模式---------à输入模式

1 iinstert:在当前光标所在处前面插入

2 aappend:z在当前光标所在行后面插入

3 o,在当前光标所在行的的下方新建一个空白行,并且转为输入模式

4 I 光标跳转至光标所在行首并改为输入模式

5光标跳转至光标所在的行尾处并改为输入模式

6 O光标跳转至光标所在行的上一行,并改为输入模式

输入模式转为编辑模式

ESC键即可

编辑模式转为末行模式

键入:

末行模式转为编辑模式:

两次ESC

光标跳转

字符间的跳转:

                K()

  H()                  L()

                J()

还有 #h 可以调准#个字符,先按住#(例如3)向左跳转3个字符

This is the main Apacheserver configuration file.It containsthe

光标在’s’处,然后按住3,再按h,光标到’T’

我们来看但此间跳转,

我们以此段话为例

我们来看句间跳转

):下一句,

(:前一句按(

默认以 . 作为分隔符

段落间跳转

上一段

下一段

行间跳转

gg 或者 1G 跳转至行首

G,跳转至行尾

#G,跳转至第#行的行首

行内跳转

:行首的第一个非空白字符

:绝对行尾

:绝对行首

我们来看怎么关闭文件

在末行模式下:

退出

保存

!强制

wq 保存并退出

q!强制退出

等价于wq 保存并退出

在编辑模式下

ZZ 保存并退出

qall 退出全部(因为有时候可能会一次打开多个文件去编写)

打开文件

vim –[options][file]

-o 打开多个文件时,上下屏显示

-O 打开多个文件时,左右屏幕显示

左屏幕到右屏幕 ctrl+w

如果不加

我们同时打开多个文件时,需要文本间跳转,在末行模式下,输入以下命令

next 下一个

last最后一个

first 头一个

prev 前一个

编辑命令

删除单个字符

#x:删除#个字符

dw 删除光标所在处的单词

db: 删除光标所在处的前一个单词

de: 删除光标所在处及下个单词

d^: 从行首删除到当前光标所在处

dd 删除所在行

d$ 当前位置删除到光标所在行尾

在末行模式下可以地址定界,使用d命令可以更加灵活

起始地址,结束地址

$:最后一行

.当前光标所在行

%,全文

1,7d ,第一行到第七行全部删除

%d 删除全文

1,$d 从第一行到最后一行全部删除

1,+6d 从第一行,到1+6行全部删除

1, $-2d 从第一行到当前光标所在行数-2所在的行删除

.,+3 d从当前行到以后+3行所有的行全部删除

撤销此前的操作

U, vim会保存最近50次的操作,U命令可逐一撤销此前编辑的操作

我们还可以撤销此前的撤销 ctrl+r

--à(此前一步操作)----à(现在操作)

    (撤销u<--------

-------à(撤销撤销ctrl+r)

复制

yy 复制当前行

#yy 复制当前行所在的向下3行,

y$ 复制光标所在处至行尾

y^ 复制当前行到行首(光标自动跳转到行首)

yw ,复制当前单词

粘贴

p在光标所在处的后方粘贴

P在光标所在出的前方粘贴

vimoptions

-# 默认打开后光标所在处为#行的行首

我们介绍翻屏

Ctrl+f 向文件尾部翻一屏

Ctrl+d 向文件首部翻一屏

Ctrl+d 向文件尾部翻半屏

Ctrl+u 向文件首部翻半屏

Vim支持文本搜索

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

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

n:下一个,跟命令查找方向相同

N:前一个,跟命令查找方向相反;

当然可以支持模式搜索,支持正则表达式

窗口属性的定义

Set number,set nu显示行号

查找和替换

:地址定界s/查找模式/替换成的内容/gi

地址定界s@查找模式@替换成的内容@gi


1、删除/etc/grub.conf文件中行首的空

%s@^[[:space:]]\{1,\}@@

2、替换/etc/inittab文件中"id:3:initdefault:"一行中的数字为5;

%s@id:3:@id:5:@g

3、删除某文件中开头的#号及后面的空白字符,但要求#号后面必须有空白字符;

%s@^#[[:space:]]\{1,\}@@

4、为指定范围内的行的行首添加#;
1,10s@^@#@g