Linux系统下有许多文本编辑器,按编辑区域可分为行编辑器和全屏幕编辑器,例如行编辑器有ed,全屏幕编辑器有vi。按运行环境可分为命令行控制台文本编辑器和X Window图形界面编辑器。例如vi属于命令行控制台编辑器,gedit则属于图形界面编辑器。
一、Linux文本编辑器概述
1、ed
在早期的unix平台上,ed可以说是唯一的编辑工具。它是一个很古老的行编辑器,vi这些编辑器都是ed演化而来。行编辑器使用起来很不方便,每次只能对一行进行操作。
2、vi 和 vim
vi是在UNIX平台上历史悠久的编辑器,是“visual interface"的缩写,vi是UNIX平台上可视化编辑器(或者说基于屏幕的编辑器)的代表,。
vim意为vi IMproved,增强版vi。vim和vi相比,增加了更多特性,如彩色和高亮显示,可以使我们的编辑工具更轻松。通过设置vim会自动检测文件中内容的类型,并以不同的颜色进行高亮显示,如注释变成蓝色,关键字变成褐色,而字符串变成红色等,与vi传统的黑白显示模式相比,vim更易读易用。另一个有趣的功能是vim支持从右到左输入字符,这在使用一些特殊语言(如Farsi)进行编程时是比较有用的。
在这里分享几个vim学习链接:
linux操作系统vim的安装与配置:https://jingyan.baidu.com/article/046a7b3efd165bf9c27fa915.html
Vim学习指南 :http://www.linuxidc.com/Linux/2013-08/89096.htm
强大的Vim 编辑器 http://www.linuxidc.com/Linux/2013-07/87544.htm
在CentOS 6.2上搭建Vim开发环境 http://www.linuxidc.com/Linux/2013-07/87363.htm
CentOS 5.4 安装高亮Vim编辑工具 http://www.linuxidc.com/Linux/2013-06/86508.htm
Vim技巧分享:C语言设置 http://www.linuxidc.com/Linux/2012-12/77124.htm
Ubuntu中设置Vim的行号 http://www.linuxidc.com/Linux/2012-12/75485.htm
Vim编辑器使用基础教程 http://www.linuxidc.com/Linux/2013-05/84031.htm
3、emacs
emacs编辑器是自由软件基金会发行的软件产品,在Linux系统中比较流行。emacs的含义是宏编辑程序(editor macros),最开始是由Richard Stallman 编写的,其设计功能远不只是一个编辑工具,他的初衷是将emacs设计成一个Linux的shell,同时还希望增加一些现代操作系统应支持的用户环境,比如:mail的传递,web浏览器的查询,新闻(Usenet)阅读,日志功能等。另外,emacs中还包括了Lisp语言的解释执行功能。emacs功能很强大,使用它基本可以解决操作系统交互中的所有问题。当然emacs的强大功能带来的另一个问题是它占用的磁盘空间比较大。
4、gedit
gedit包含语法高亮和标签编辑多个文件的功能,对中文支持很好,支持包括GB2312、GBK在内的多种字符编码。利用GNOME VFS库,它还可以编辑远程文件。它支持完整的恢复和重做系统以及查找和替换功能。它还支持包括多语言拼写检查和一个灵活的插件系统,可以动态的添加新特性。例如snippets和外部程序的整合。另外,gedit还包括一些小特性,包括行号显示,括号匹配。文本自动换行等。
二、vi编辑器使用介绍
1、vi的工作模式
vi的工作模式分为如下三种:
命令模式:进入vi的默认模式,可以对文件进行复制、粘贴。删除、移动光标等。
末行模式:用于文件的保存、退出、查找、替换、设置行号等。
编辑模式:在此模式下可以输入字符。
vi编辑器的使用主要是根据操作需要在各种模式下切换,切换方法如图所示:
vi的常用命令:
1、文件打开、保存与关闭
vi filename:打开或新建文件,并将光标置于第一行首。
vi +n filename:打开文件,并将光标置于第n行首。
vi + filename:打开文件,并将光标置于最后一行首。
vi +/pattern filename:打开文件,并将文件置于第一个与pattern匹配的串处。
vi -r filename:在上次正用vi编辑器时发生系统崩溃,恢复filename。
vi filename...filename:打开多个文件,依次进行编辑。可在末行模式下采用e filename命令切换所编辑的文件。
保存文件和退出vi可以在命令模式输入下列指令完成。
:w //保存文件
:w filename //保存至filename文件
:q //退出编辑器,如果文件已修改请使用下面命令。
:q! //退出编辑器且不保存。
:wq //退出编辑器,且保存文件
:x //退出编辑器,且保存文件
保存和退出需要在末行模式下完成,因此以上输入冒号是表示vi从命令模式切换至末行模式,冒号后面的命令则表示完成的操作。感叹号表示强制执行。
2、插入文本或行
在命令模式下,按以下命令,则进入插入模式,插入模式可输入文本,按esc键可返回命令模式。
a:在当前光标位置的右边添加文本。
i:在当前光标位置的左边添加文本。
A:在当前行的末尾添加文本。
I:在当前行的开始处添加文本。
O:在当前行的上面新建一行。
o:在当前行的下面新建一行。
s:删除光标后的一个字符,然后进入插入模式。
S:删除光标所在的行,然后进入插入模式。
R:替换(覆盖)当前光标位置及后面的若干文本。
3、移动光标
(1)基本的移动方式
在命令模式下,vi可以直接用键盘上的方向键来上下左右移动光标,也可以用小写英文字母k、j、h、l,分别控制光标上下左右移一格。在插入模式下,可以用方向键控制光标移动。
(2)同一行中光标移动方式
数字0:移动到当前行行首。
$:移动到光标所在行的行尾。
^:移动到光标所在行的行首。
w:光标移动到下个字的开头。
b:移动到当前字的字首,如果已经处于字首的,则光标回到上个字的开头。
e:移动到当前字的字尾,如果已经处于字尾的,则光标跳到下个字的字尾。
<n>w:右移n个字。
<n>b:左移n个字。
(3)在页面间移动光标
Ctrl + b:向上翻一页(相当于PageUp键)。
Ctrl + f: 向下翻一页(相当于PageDown键)。
Ctrl + u:向前翻半页。
Ctrl + d:向后翻半页。
H:将光标移到当前屏幕的最上行的行首。H表示Highest。
xH:将光标移到当前屏幕的第x行。例如:2H就是将光标移到当前屏幕的第二行。注意当前屏幕的第二行并不一定是本文件的第二行。
G:移动到文章最后。
):由游标所在位置至下一个句子的第一个字母。
(:由游标所在位置至该句子的第一个字母。
{:由游标所在位置至该段落的最后一个字母。
}:由游标所在位置至该段落的第一个字母。
(4)删除、恢复字符或行
在命令模式下,可以使用下列命令进行删除或撤销操作。
x:删除当前字符。
nx:删除从光标开始的n个字符。
dd:删除当前行。
ndd:向下删除当前行在内的n行。
u:撤销上一步操作。
U:撤销对当前行的所有操作。
(5)搜索
/<pattern>:向光标以下搜索pattern字符串。
?<pattern>:向光标以上搜索pattern字符串。
n:向下搜索前一个搜索前一个搜索动作。
N:向上搜索前一个搜索动作。
以上命令在命令模式下使用。
(6)设置行号
:set nu //显示行号
:set nonu //取消显示行号
(7)跳至指定行
n+:向下跳n行。
n-:向上跳n行。
nG:跳到行号为n的行。
以上命令在命令模式下使用,另外,用户也可以在末行模式下跳转到制定行,例如:n,其中n为行号。
(8)复制粘贴
在命令模式下输入下列命令:
yy:将当前行复制到缓存区,也可以用ayy复制,其中a为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
nyy:将当前行向下n行复制到缓冲区,也可以用anyy复制,a为缓冲区,a也可以替换为a到z的任意字母,可以完成多个复制任务。
yw:复制从光标开始到字尾的字符。
nyw:复制从光标开始n个字。
y^:复制从光标到行首的内容。
y$:复制从光标到行尾的内容。
p:粘贴剪贴板里的内容在光标后,如果使用了前面的自定义缓冲区,建议使用ap进行粘贴。
P:粘贴剪贴板里的内容在光标前,如果使用了前面的自定义缓冲区,建议使用aP进行粘贴。
(9)替换操作
在末行模式下,输入下列命令:
:s/old/new //用new替换行中首次出现的old
:s/old/new/g //用new替换行中所有old
:n,m s/old/new/g //用new替换从n到n行里所有的old
:%s/old/new/g //用new替换当前文件里所有old
vi与shell交互
在vi中,我们可以在末行模式下用"!"符号来访问Linux的shell,进行操作。格式如下:
: ! 命令
直接在!后面接着所要执行的命令即可。