第3章 文本编辑器
Linux/Unix操作系统下使用的文本编辑器有很多,例如,图形模式下的编辑器有gedit、kwrite、OpenOffice
等,文本模式下的编辑器有vi、vim(vi的增强版)和nano
。vi和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.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文件,并进行设置
②新建test.c文件
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
9.在命令行查找字符串的命令:
/ 字符串 #从光标处到文件尾查找
? 字符串 #从光标处到文件头查找
n #继续查找
N #反向查找
10.vi环境定制的文件通常是放在用户的主目录中,文件名为:.vimrc
此处跳转上一篇文章:第2章 Linux的基本操作