导读

几个月前,Linux基金会发起了LFCS(Linux基金会认证系统管理员LinuxFoundationCertifiedSystemadministrator)认证,以帮助世界各地的人来验证她们能否在Linux系统上做基本的高级系统管理任务:如系统支持、第一手的故障确诊和处理、以及何时向下游支持团队提出问题的智能决策。

这篇文章是系列教程的第二讲,在这个部份中linux操作系统论文,我们会介绍vi/vim基本的文件编辑操作,帮助读者理解编辑器中的三个模式,这是LFCS认证考试中必须把握的

使用vi/vim执行基本的文件编辑操作

vi是为Unix而生的第一个全屏文本编辑器。它的设计精巧简单,对于仅仅使用过例如NotePad++或gedit等图形界面的文本编辑器的用户来说,使用上去可能存在一些困难。

为了使用vi,我们必须首先理解这个强悍的程序操作中的三种模式,便捷我们前面学习这个强悍的文本处理软件的相关操作。

请注意,大多数的现代Linux发行版都集成了vi的变种———vim(改进版VIViIMproved),相比于vi,它有更多新功能。所以,我们会在本教程中交替使用vi和vim。

假如你的发行版还没有安装vim,你可以通过以下方式来安装:

我为何要学习vi

起码有以下两个理由:

由于它是POSIX标准的一部份,所以不管你使用哪些发行版vi总是可用的。vi基本不消耗多少系统资源,而且容许我们仅仅通过鼠标来完成任何可能的任务。

据悉,vi有着极其丰富的外置帮助指南,程序打开后就可以通过:”help”命令来查看。这个外置帮助指南比vi/vim的man页面包含了更多信息。

启动vi

可以通过在命令提示符下输入vi来启动。

之后按下字母i,你就可以开始输入了。或则通过下边的方式来启动vi:

1.# vi filename

这样会打开一个名为filename的缓存区(稍后会详尽介绍缓存区),在你编辑完成以后就可以储存在c盘中了。

理解vi的三个模式

1.命令command模式,vi容许用户浏览该文件并输入由一个或多个字母组成的、简短的、大小写敏感的vi命令。这种命令的大部份都可以降低一个前缀数字表示执行次数。

例如:yy(或Y)复制当前的整行,3yy(或3Y)复制当前整行和下面紧接着的两行(总共3行)。通过Esc键可以随时步入命令模式(而不管当前工作在哪些模式下)。事实上,在命令模式下,鼠标上所有的输入都被解释为命令而非文本,这常常促使初学者困扰不已。

2.末行ex模式,我们可以处理文件(包括保存当前文件和运行外部程序)。我们必须在命令模式下输入一个逗号(:),能够步入这个模式,紧接着是要在末行模式下使用的命令。执行以后vi手动回到命令模式。

3.文本输入insert模式(一般在命令模式下使用字母i步入这个模式),我们可以随便输入文本。大多数的键入将以文本方式输出到屏幕(一个重要的例外是Esc键,它将退出文本编辑模式并回到命令模式)。

vi命令

下边列举常用的vi命令。文件编辑的命令可以通过添加感叹号的命令强制执行(如,:q!命令强制退出编辑器而不保存文件)。

h或←光标左移一个字符

j或↓光标下移一行

k或↑光标上移一行

l(大写字母L)或→光标右移一个字符

H光标移至屏幕顶行

L光标移至屏幕末行

G光标移至文件末行

w光标右移一个词

b光标左移一个词

0(数字零)光标移至行首

^光标移至当前行第一个非空格字符

$光标移至当前行行尾

Ctrl-B向后翻页

Ctrl-F往前翻页

i在光标所在位置插入文本

I(小写字母i)在当前行首插入文本

J(小写字母j)将下一行与当前行合并(下一行上移到当前行)

a在光标所在位置后追加文本

o(大写字母O)在当前行上边插入空白行

O(小写字母O)在当前行左边插入空白行

r替换光标所在位置的一个字符

R从光标所在位置开始覆盖插入文本

x删掉光标所在位置的字符

X立刻删掉光标所在位置之前(右边)的一个字符

dd剪切当前整行文本(为了以后进行粘贴)

D剪切光标所在位置到行末的文本(该命令等效于d$)

linux vi命令 文本替换_linux文本内容替换命令_linux文本替换命令

yX给出一个联通命令X(如h、j、H、L等),复制适当数目的字符、单词或则从光标开始到一定数目的行

yy或Y复制当前整行

p粘贴在光标所在位置以后(下一行)

P粘贴在光标所在位置之前(上一行)

.(句点)重复最后一个命令

u撤消最后一个命令

U撤消最后一行的最后一个命令,只有光标仍在最后一行就能执行。

n在查找中跳到下一个匹配项

N在查找中跳到前一个匹配项

:n下一个文件,编辑多个指定文件时,该命令加载下一个文件。

:efile加载新文件来代替当前文件

:rfile将新文件的内容插入到光标所在位置的下一行

:q退出并舍弃修改

:wfile将当期打开的缓存区保存为file。假如是追加到已存在的文件中,则使用:w>>file命令

:wq保存当前文件的内容并退出。等效于x!和ZZ

:r!command执行command命令,并将命令的输出插入到光标所在位置的下一行

vi选项

下述选项可以让你在运行Vim的时侯很便捷(须要写入到”~/.vimrc”文件):

1.# echo set number >> ~/.vimrc
2.# echo syntax on >> ~/.vimrc
3.# echo set tabstop=4 >> ~/.vimrc
4.# echo set autoindent >> ~/.vimrc

查找和替换

vi具有通过查找将光标联通到(在单独一行或则整个文件中的)指定位置。它还可手动或则通过用户确认来执行文本替换。

a)在行内查找。f命令在当前行查找指定字符linux vi命令 文本替换,并将光标联通到指定字符出现的位置。

比如,命令fh会在本行上将光标联通到字母h下一次出现的位置。注意,字母f和你要查找的字符都不会出现在屏幕上,而且当你按下回车的时侯,要查找的字符会被高亮显示。

例如,以下是在命令模式按下f4以后的结果。

b)在整个文件内查找。使用/命令,紧接着须要查找的词组或词组。这个查找可以通过使用n命令或则N重检查找上一个查找的字符串。以下是在命令模式键入/Jane的查找结果。

c)vi通过使用命令来完成多行或则整个文件的替换操作(类似于sed)。我们可以使用以下命令,致使整个文件中的词组“old”替换为“young”。

1.:%s/old/young/g

注意:引号坐落命令的最上面。

逗号(:)步入末行模式,在本例中s表示替换,%是从第一行到最后一行的表示方法(也可以使用nm表示范围,即第n行到第m行),old是查找模式,young是拿来替换的文本,g表示在每位查找下来的字符串都进行替换。

另外,在命令最后降低一个clinux vi命令 文本替换,可以在每一个匹配项替换前进行确认。

1.:%s/old/young/gc

将旧文本替换为新文本前,vi/vim会向我们显示以下信息:

同时编辑多个文件

我们在命令提示符输入vimfile1file2file3如下:

1.# vim file1 file2 file3

vim会首先打开file1,要跳到file2需用:n命令。当须要打开前一个文件时,:N就可以了。

为了从file1跳到file3

a):buffers命令会显示当前正在编辑的文件列表

1.:buffers

b):buffer3命令(前面没有s)会打开第三个文件file3进行编辑。

在左边的图片中,标记符号#表示该文件当前已被打开,并且是在后台,而%a标记的文件是正在被编辑的。另外,文件号(如上面反例的3)后面的空格表示该文件还没有被打开。

vi的临时缓存区

为了复制连续的多行(例如,假定为4行)到一个名为a的临时缓存区(与文件无关)linux deepin,而且还要将这种行粘贴到在当前vi会话文件中的其它位置,我们须要:

按下Esc键以确认vi处在命令模式将光标置于我们希望复制的第一行文本输入”a4yy复制当前行和接出来的3行,步入一个名为a的缓存区。我们可以继续编辑我们的文件————我们不须要立刻插入刚才复制的行。当到了须要使用刚才复制的这些行的位置,在p(大写)或P(小写)命令前使用”a来将复制行插入到名为a的缓存区:

假如乐意,我们可以重复上述步骤,将缓存区a中的内容插入到我们文件的多个位置。像本节中这样的一个临时缓存区,会在当前窗口关掉时释放掉。

总结

像我们看见的一样,vi/vim在命令插口下是一个强悍而灵活的文本编辑器。通过以下链接,随时分享你自己的方法和评论。

原文来自:

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复