第3章 文本编辑器

Linux/Unix操作系统下使用的文本编辑器有很多,例如,图形模式下的编辑器有gedit、kwrite、OpenOffice等,文本模式下的编辑器有vi、vim(vi的增强版)和nanovi和vim是Linux/UNIX中最常用的。

3.1 vi编辑器概述

3.1.1 vi的三种工作方式

vi共有3种工作模式:命令模式、插入模式和末行模式。不同的工作模式提供了不同的文本操作方法。

1.命令模式

当使用vi创建或打开一个文件时,默认的模式就是命令模式。在此模式下输入的字符都将作为命令来解析。如果在此模式下输入i或a或o字符,则立刻转入到“插入模式”

2.插入模式

插入模式又称为文本编辑模式,顾名思义,在该模式下可以像在记事本中一样编辑文本,包括输入、删除等操作。输入的任何字符都会当作文本内容。在当前模式下如果按ESC键则会切换到“命令模式”

3.末行模式

末行模式又称为底行模式。在命令模式下输入冒号“:”即可切换到末行模式。在此模式下可以输入相应的命令来完成文本的搜索、替换、保存等工作,命令执行完后自动切换到命令模式

3.1.2 vi的初体验

既然vi是文本编辑器,所以使用vi无非就是完成文件的创建或打开以及文件的编辑和保存。

示例1:操作步骤如下:
(1)在终端输入命令:

vi  test.txt   (如果text.txt不存在则创建,存在即打开) 

(2)执行第(1)步操作后,进入vi界面,工作模式为命令模式,此时按键盘的“i”,“a”,"o"键进入插入模式。

(3) 插入模式下,输入一些文本,然后按Esc键进入命令模式(在插入模式下不能实现文本的保存,输入的所有字符都将视为文件内容),此时连续输入两次大写的“Z”,则完成保存退出操作。或者按“:"键进入末行模式,在末行模式下输入命令wq,也可以完成文件的保存退出操作。

3.2 命令模式下的文本块操作

在命令模式下可以完成文本块的复制、移动、删除、撤销与重复、查找、搜索与替换等操作。接下来介绍相应的操作命令和使用方法。

3.2.1 行的定位

在使用vi操作文本文件时,常常涉及行的定位,例如,对文件的第5行进行操作,首先将光标移动到改行,第一种办法就是使用方向键,但对于行与行之间距离较大的情况下,这种办法效率较低。第二种办法是在命令模式下,先按下键盘上需要定位到的行号,然后再按键盘上的”G“键,就可以将光标迅速定位到改行了。

例如:当前光标在第2行,希望定位到第120行。相应操作如下:

依次按下数字键1、2、0,再按"G"

命令行模式下的定位:如何切换为命令行模式,按Esc键

操作键 功能
0 光标移至行首
h 光标左移一格
l 光标右移一格
j 光标下移一行
k 光标上移一行
$+A 将光标移动到改行最后
PageDn 向下移动一页
PageUp 向上移动一页

第3章 文本编辑器-编程知识网

3.2.2 文本块的复制、移动和删除

1.复制

(1)在命令行模式下输入yy或nyy,表示复制当前行或当前行开始的连续n行到缓冲区,n是一个具体的整数。

例如:输入“6yy”表示复制从光标所在的改行“往下数”(包括光标所在行)6行文字到缓冲区(即放到剪切板)。

(2)在命令行模式下按下P或p键将缓冲区的字符粘贴到光标所在位置。其中,P是粘贴到光标所在行的上面p是粘贴到光标所在行的下面(大写是上面,小写是下面)。

2.移动

(1)在命令行模式下输入dd或ndd,表示剪切当前行或当前行开始的连续n行到缓冲区,n是一个整体的整数。

例如:"6dd"表示剪切从光标所在的改行“往下数”(包括光标所在行)6行文字到缓冲区

(2)在命令行模式下按下P或p键将缓冲区的字符粘贴到光标所在位置。其中,P是粘贴到光标所在行的上面,p是粘贴到光标所在行的下面。

3.删除

在命令模式下的删除操作如下:

操作键 功能
x 删除光标所在的文字
nx 删除光标后面的n个字符
X 删除光标前面的1个字符
nX 删除光标前面的n个字符
dd 删除光标所在行
ndd 删除光标所在行向下n行

3.2.3 撤销和重复

“U”键可以撤销上一步的操作,按Ctrl+R快捷键可以恢复(即撤销上次的撤销操作)。

“.”键将重复上一步操作

3.2.4 字符串的查找

在命令模式下的字符串查找命令,如下表

命令模式下的操作命令 功能
/字符串 在命令模式下,先按“/”键,然后输入要查找的字符串。如果找到,光标停留在该字符串的首字母上。搜索范围是从光标当前位置开始向文件尾查找
? 字符串 先按“?”键,然后输入要查找的字符串。如果找到,光标停留在该字符串的首字母上。搜索范围是从光标当前位置开始向文件头查找。
n 继续查找满足条件的字符串
N 改变查找的方向,继续查找满足条件的字符串

3.3 末行模式下的常用操作

在末行模式下的常用操作包括文本的复制、移动、删除和文本的查找和替换等。末行模式下的各项命令及功能如下表:

末行模式下的操作命令 功能
n1,n2 co n3 将n1(包括n1)行到n2(包括n2)行的所有文本复制到n3行之后
n1,n2 m n3 将n1(包括n1)行到n2(包括n2)行的所有文本移动到n3行之后
n1,n2 d 删除n1(包括n1)行到n2(包括n2)行的所有文本
n1,n2 s/字符串1/字符串2/g 将n1(包括n1)行到n2(包括n2)行的所有字符串1替换为字符串2
%s/字符串1/字符串2/g 把整个文件每行中所有字符串1替换成字符串2
set nu 显示行号
set nonu 不显示行号
w 保存当前文件
w 新文件 将当前文件的内容另存到新文件中
wq 保存当前文件并退出
x 保存当前文件并退出
q 退出vi
q! 强制退出(不保存)

3.4 vi环境定制

vi的环境配置文件为.vim.rc,它是一个隐藏文件,可以在用户的/home目录中手动创建,然后将希望的设置值写入,这样每次启动vi时就会自动读取配置文件的内容,从而得到定制好的环境。vi环境配置文件设置参数见表。

设置参数 功能
:set nu 或 :set number 设置显示行号
:set noun 取消显示行号
:set hlsearch hlsearch就是high light search(高亮度查找)。设置是否将查找的字符串反白显示。默认是hlsearch
:set nohlsearch 设置不将查找的字符串反白显示
:set autoinden 表示自动缩进
:set noautoinden 不产生自动缩进
:set bg=dark 用以显示不同颜色的色调
:set bg=light 颜色色调默认为light
:syntax on 设置程序不同,语法会显示不同颜色,默认为此设置
:syntax off 程序不同,语法颜色不做区别

案例:

①创建~/.vimrc文件,并进行设置
第3章 文本编辑器-编程知识网
第3章 文本编辑器-编程知识网
②新建test.c文件
第3章 文本编辑器-编程知识网

3.5 小结

习题

一、填空题

1.vi编辑器工作的三种模式分别是:插入模式、命令模式和末行模式(底行模式)

2.vi的三种工作模式中,插入模式和末行模式之间是不能直接进行切换的

3.从插入模式切换到命令模式,应该按Esc键

4.在命令模式下,若想将光标所在行复制到第5行之后,操作方法是先按yy,然后按5G,最后按p

5.在命令模式下,若想要迅速定位到第12行,按12,然后按G键。

6.在末行模式下,将第3行到第16行所有的文本移动到第20行后,操作如下

3,16 m 20

7.在末行模式下将字符串“hello”替换为“helloworld”的操作方法是

%s/hello/helloworld/g

第3章 文本编辑器-编程知识网
第3章 文本编辑器-编程知识网
8.列举使用vi进行保存的命令:wq或x

9.在命令行查找字符串的命令:

/ 字符串 #从光标处到文件尾查找

? 字符串 #从光标处到文件头查找

n #继续查找

N #反向查找

10.vi环境定制的文件通常是放在用户的主目录中,文件名为:.vimrc

此处跳转上一篇文章:第2章 Linux的基本操作