linux之VI编辑器使用

vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,学好了vi,以后在UNIX世界里必将畅行无阻、游刃有余,因为其他几种文本处理器并非UNIX标准配备

在UNIX下,vi是标准的文本编辑器之一。几乎任何一部UNIX系统都把vi编辑器作为最最基本的“软件”而被默认组装在系统中。在PC-UNIX中,即使是选择最小程度安装的系统,vi编辑器也会被默认安装在系统中。

  提到vi,就不得不提一下UNIX下另一功能强大的编辑器 - Emacs 。好多人喜欢拿Emacs和vi来比较,但笔者认为,Emacs 和 vi 没有可比性。vi的轻量级特性,使得它成为系统管理方面的首选工具;而Emacs的功能强大的特性,使得它成为系统开发方面的首选工具。如果用Emacs 来做系统管理,它庞大的体积和对于系统资源的耗费(相对于vi),势必会影响系统管理的效率;然而,如果用vi来搞软件开发,它有些面向于开发的功能方面 的不完备,也势必会影响开发的灵活性。在这里,我们的目标是建立和管理一台服务器,所以,我们选择使用vi编辑器来完成服务器的配置工作。

由于本站所有服务器设置相关的修改工作,都是通过vi来完成的,所以准备通过本站介绍的各种方法构建服务器的话,请务必掌握vi的使用方法。否则将很难顺利的进行。如果您使用其它编辑器(比如Emacs)可以在安装过程中或通过yum命令在线安装。

用法

  习惯于Microsoft Windows下GUI方式编辑器的朋友,刚刚接触vi肯定会有“排斥反应”的,这一点只能奉劝稍安毋躁……当你习惯于vi之后,你会发现它既精确又有秩序,而且重要的是它对于要编辑的对象极富针对性。

  上图为在CUI下输入“vi”命令后,vi被启动的状态。

  或者输入一个已存在的文件的路径,来打开一个已经存在的文本文件。(这里以用root用户登录系统,后输入“vi /etc/X11/xorg.conf”为例。)

  上图为用vi打开/etc/X11/xorg.conf后的状态。光标位于左上第一个字符下滑线的位置。

  vi和其他编辑器最不一样的地方莫过于它把编辑、处理等等的操作分离开来,形成性质不同的3种操作模式,他们分别为“命令模式”、“插入模式”、“ex模式”。

  在Windows下通常使用的记事本等等的编辑器在打开文件的时候,光标已经在处于输入等待的状态,也就是说,我们打开文件时就可以对文件进行编辑。 比如,我们要输入新的文本,或者复制一段文本,所有操作的前提,只要编辑器是被打开的状态,操作就是可能的。

  但在vi下,为了增强对将要处理的文本的针对性,文本输入、复制等等不同的操作,是被分离开来的,比如文本输入的模式叫做“插入模式”,在插入模式 下,我们可以用和Windows下一样的操作方法来对文本进行输入、编辑等等的操作,但是复制等等非编辑的操作,在插入模式下不能够完成,而需要切换到相 应的模式下用相应的命令来完成。

在这里,还是首先对重要的vi的模式进行说明。

★ vi的模式(命令模式、插入模式、ex模式)

1)命令模式:

  在我们刚刚通过vi新建或打开一个已经存在的文件时,首先默认被读取的模式就是“命令模式”,命令模式的特征就是,在编辑器窗口左下角的位置上没有任何的提示标语。

  在这个模式下,如果不通过相应的命令,我们无法输入新的文本到这个文件中。这里建议新接触刚刚接触vi的朋友在用vi打开一个文件时不要处于心切而乱 按键盘试图输入一些文本到文件中,因为命令模式所谓的“命令”,并不是我们在命令行提时下输入的过程诸如“ls -> 回车”等等形式的命令。确切说vi命令模式下的命令,只是计算机键盘上的某个按键或某些按键的组合,当我们在命令模式下敲下键盘一个按键的时候,相应命令就已经被执行。


   在这里,首先介绍移动光标的命令。通常光标的移动可以通过键盘右边的方向键,但是由于每次移动光标,手都要大幅度的移动到键盘右边,这样使用vi是体现不出效率的,所以建议使用vi固有的命令(键)来控制光标的移动。

  光标的移动命令如下所示:

  向右移动 --> l

  向左移动 --> h

  向下移动 --> j

  向上移动 --> k

  如上所示,例如要向右移动光标8个字符的距离,只要在键盘上敲 l 键8次即可;向下移动3行的距离,只要在键盘上敲 j 键3次即可……也就是说,在vi命令模式中通过这几个键(命令)来控制光标的移动。


  其次就是文本删除的命令。在Windows下大多数编辑器在删除文本时只要连续按[Backspace]键即可。但由于在vi中,插入模式和命令模式是分离开来的,所以在命令模式下需要通过命令(按键)来删除文本,而不是直接按[Backspace]键。

  文本删除的命令如下所示:

  删除光标所在位置的字符 --> x

  删除光标所在的行 --> dd(敲 d 两次)

  如上所示,例如要删除从光标位置起向右的3个字符,只要在键盘上敲 x 键3次即可;要删除光标所在的行,只要敲 dd (连续敲d键两次),光标所在行的所有字符以及行将会被删除。


  再次,当编辑完了一个文档,想要保存后退出的时候的命令为“ZZ”(大写、连续敲2次)。

  保存并退出文档:

  保存当前修改并退出 --> ZZ


  另外,vi还有一些编辑性质的命令,一并总结如下

  具有编辑性质的有用的命令:

  撤销上一步操作 --> u

  移动光标到行首 --> 0 (数字0)

  移动光标到行末 --> $

  移动光标到当前页最顶行 --> H

  移动光标到当前页最底行 --> L

  向前翻一页(Page Up) --> Ctrl + f

  向后翻一页(Page Down) --> Ctrl + b


  还有在服务器配置中使用vi时,频繁用到的就是vi的搜索功能。在vi命令行的状态下,键入“/”(斜 线)后,vi底部出现“/”,并处于输入等待状态,这时候输入要查找的文字或文字列,然后按回车就可以找到相应的文字或文字列。当有多个对象存在时,敲 “n”(小写)键为查找下一个目标,敲“N”为查找上一个目标。

vi是所有UNIX系统都会提供的屏幕编辑器,它提供了一个视窗设备,通过它可以编辑文件。当然,对UNIX系统略有所知的人,或多或少都觉得vi超级难用,但vi是最基本的编辑器,学好了vi,以后在UNIX世界里必将畅行无阻、游刃有余,因为其他几种文本处理器并非UNIX标准配备。若其它的Linux机器里没有安装joe或pico,如果不会使用vi,那可能就真的没辄了。

vi编辑器有3种模式:命令模式输入模式末行模式。掌握这三种模式十分重要:

命令模式:vi启动后默认进入的是命令模式,从这个模式使用命令可以切换到另外两种模式,同时无论在任何模式下只要按一下[Esc]键都可以返回命令模式。在命令模式中输入字母i或o或a,就可以进入vi的输入模式编辑文件。

输入模式:在这个模式中我们可以编辑、修改、输入等编辑工作,在编辑器最后一行显示一个“--INSERT--”标志着vi进入了输入模式。当我们完成修改输入等操作的时候我们需要保存文件,这时我们需要先返回命令模式,在进入末行模式保存。

末行模式:在命令模式输入“:”即可进入该模式,在末行模式中有好多好用的命令。

下面介绍vi常用的命令操作

进入输入模式命令

i               在光标 左侧输入正文[常用]

a              在光标 右侧输入正文[常用]

o              小写字符o, 在光标所在行的 下一行增添新行

O              大写字符O, 在光标所在行的 上一行增添新行

I               在光标 所在行的开头输入正文

A              在光标 所在行的末尾输入正文

上面介绍了几种切换到插入模式的简单方法。另外还有一些命令,它们允许在进入插入模式之前首先删去一段

正文,从而实现正文的替换。这些命令包括:

s                 用输入的正文替换光标所指向的字符[常用]

ns              用输入的正文替换光标右侧n 个字符

cw              用输入的正文替换光标右侧的字  [常用]

ncw            用输入的正文替换光标右侧的n 个字

cb              用输入的正文替换光标左侧的字  [常用]

ncb            用输入的正文替换光标左侧的 n 个字

cd              用输入的正文替换光标的所在行[常用]

ncd            用输入的正文替换光标下面的n 行

c$              用输入的正文替换从光标开始到本行末尾的所有字符[常用]

c0              用输入的正文替换从本行开头到光标的所有字符[常用]

r            取代光标所在处的字符, 比如c3 表示将光标所在处的字符替换为字符3 [常用]

R           取代字符直至按【ESC】为止

按【Esc】键或组合键【ctrl】+[ 退出输入模式

末行模式

w              保存文件  [常用]

w file       将当前文件的内容保存到file文件

wq           保存文件并退出vi编辑器[常用]

wq file    将 当前文件的内容写入file 文件,并保持原有文件的内容不变,然后退出vi编辑器(假如当前文件内容有变动但未执行保存操作,那么执行该命令后不会退出vi编辑器)

r file        读取file 文件的内容,插入当前光标所在行的后面

e file        关闭当前文件,并打开新文件file (如果当前文件内容有变动但未保存,则该命令不会被执行)[常用]

f file        将当前文件重命名为file [常用]

f               打印当前文件名称和状态,如文件的行数、光标所在的行号等

q              退出vi编辑器(如果当前文件有改动,则无法退出) [常用]

q!             强制退出vi编辑器(不保存修改)[常用]

#              将光标移到第#行[常用]

PS:  关于行号使用的一些技巧:

一般用数值来指定绝对行号;字符“.”表示光标所在行的行号;字符“$”表示文件最后一行的行号,例如:

.+5                  将光标从当前行往下移动5 行

$                     将光标移到文件的最后一行

1                     将光标移到文件的第一行

23w file         将文件的第23行写入file文件

3,5w file       将第3 行至第5 行写入file 文件

1,.w file        将第1 行至当前行写入file 文件

.,$w file        将当前行至最后一行写入file 文件

.,.+5w file    从当前行开始将6 行内容写入file 文件

1,$w file      将所有内容写入file 文件,相当于:w file 命令

移动光标的操作

【Home】          光标到行首

【End】              光标到行尾

【Page Up】       向上翻页

【Page Down】  向下翻页

【Delect】          删除光标位置的字符

【Ctrl】+ f          向前移动一页

【Ctrl】+ b        向后移动一页

h            光标向左移动一个字符   [常用]

j            光标向下移动一个字符   [常用]

k           光标向上移动一个字符   [常用]

l            光标向右移动一个字符   [常用]

数字0    把光标移到行尾  [ 常用]

$           把光标移到行首  [ 常用]

G           把光标移到文件的末尾  [ 常用]

gg          把光标移到文件的开头   [ 常用]

w           把光标移到下一个单词的开头  [ 常用]

e           把光标移到当前或下一个单词的字尾  [ 常用]

b           把光标移到当前或下一个单词的开头  [ 常用]

^           把光标移到该行的第一个非空白字符(tab,space)   [ 常用]

:#         把光标移到该行的第#个位置,例如:3, :10   [ 常用]

)            光标移到句尾

(            光标移到句首

注: 句子用半角句号后加一个空格(. )分割

}           光标移到段落结尾

{           光标移到段落开头

注: 段落以空行分割

nG        将光标定位到第n行的开头  [ 常用]

n+        将光标下移n行

n-          将光标上移n行

n$          将光标下移n行,并置于行尾

H           将光标置于当前屏幕的顶行

M          将光标置于当前屏幕的中间行

L            将光标置于屏幕的最后行

~            改变当前字符的大小写   [ 常用]

>>          把当前行往右移动8个字符(相当于【tab】键)    [ 常用]

<<          把当前行往左移动8个字符(相当于【Shift】+【tab】) [ 常用]

nz:        将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。

撤销操作

u            命令撤销最近一次的操作,可以使用多次来恢复原有的操作   [ 常用]

U           撤销所有操作

.             可以恢复对使用u命令的操作      [ 常用]

复制/删除/粘贴操作

x           删除光标处的单个字符,并把删除后的字符放到缓存区( 实际上删除相当于剪切 )   [ 常用]

nx         删除三个字符。 例如, 3x删除光标处向右的三个字符

"bnx     把删除的字符放到缓存区b

dw        删除当前字符到单词尾(包括空格)的所有字符   [ 常用]

dd        删除光标所在行  [常用]     [ 常用]

ndd      删除n行。 例如, 3dd从当前行开始向下删除三行文本  [ 常用]

"bndd   把删除的内容放到缓存区b

PS: 如果要删除第m至第n行的内容,可以在末行模式中输入m,nd。比如3,5d表示删除第3~5行  [ 常用]

yy        复制当前光标所在行的内容到vi缓冲区     [ 常用]

nyy      复制n行。例如:5yy就是从当前光标所处的行向下复制5行,把复制的内容放到vi缓存区  [常用]

"bnyy   将复制的内容放到缓存区b . 比如,b3yy 将三行数据存入缓存区b    [ 常用]

PS: 如果要复制第m行到第n行之间的内容,可以在末行模式中输入m,ny例如:3,5y复制第三行到第五行内容到缓存区  [ 常用]

yw       复制当前光标所在位置到单词尾字符 (不包括空格) 的内容到vi缓存区,相当于复制一个单词  [常用]

nyw     复制n个单词例如:2yw就是复制两个单词

"bnyw  例如, 复制n个单词到缓存区b

y$        复制光标所在位置到行尾内容到缓存区

y^        复制光标所在位置到行首内容到缓存区

p          小写p, 将缓存区的内容粘贴到当前行的下方(与yy配合)  ,或插入到当前光标的下一个位置(与dw, x, y$ , y^ 配合)[常用]

P          大写P,与小写p的作用类似,但粘贴都方向相反

查找与替换

        vi的查找与替换功能要再末行模式下完成。

/关键字                                               自上而下查找,比如/work,表示从当前光标处往下查找关键字为work的内容[ 常用]

?关键字                                              自下而上查找 , 比如/work,表示从当前光标处往上查找关键字为work的内容  [ 常用]

PS: 当找到匹配项时,光标会定位在关键词都字符开头。要继续查找下一个匹配项,只需敲入字符n; 要往回查找,敲入N. 可以输入2n往下查找下下一个匹配项

s/old_string/new_string               用new_string替换光标所在行中首次出现的old_string

s/old_string/new_string/g           用new_string替换光标所在行中的所有old_string

m,ns/old_string/new_string/g   用new_string替换第m行至第n行的所有old_string [ 常用]

%s/old_string/new_string/g      用new_string替换所有的old_string   [ 常用]

/pattern_address/s/old_string/new_string/g    从当前光标处往下查找与pattern_address匹配的行,然后在该行上用new_string替换掉所有的old_string(实际上,这个命令是由/pattern_address 和/s/old_string/new_string/g组合而成)

g/pattern_address/s/old_string/new_string/g    找出所有与pattern_address匹配的行, 并用new_string替换掉每一行所有的old_string( 注意: 前后两个g的含义是不一样的,前面的g表示对整个文本搜索与pattern_address匹配的行, 后面的g表示针对每一个与pattern_address匹配的行都用new_string替换掉old_string)

如果pattern_address和old_string一样,可以简写为g/pattern_address/s//new_string

可以在所有的命令尾加一个c命令,强制每个替换需要用户进行确认,例如:s/old/new/c 或s/old/new/gc   [ 常用]

PS: 查找的一些技巧

/str/w file                                              正向搜索,并将第一个包含字符串str 的行写入file 文件

/str1/,/str2/w file                              正向搜索,并将包含字符串str1 的行至包含字符串str2 的行写入file 文件

恢复文件

vi在编辑某一个文件时,会生成一个临时文件,这个文件以. 开头并以.swp结尾。正常退出该文件自动删除,如果意外退出例如忽然断电,该文件不会删除,我们在下次编辑时可以选择一下命令处理:

O        只读打开,不改变文件内容

E         继续编辑文件,不恢复.swp文件保存的内容

R        将恢复上次编辑以后未保存文件内容

Q        退出vi

D        删除.swp文件

或者使用vi -r 文件名来恢复未保存的内容

时间: 2024-10-29 04:39:35

linux之VI编辑器使用的相关文章

linux中vi编辑器

vi编辑器,通常称之为vi,是一种广泛存在于各种UNIX和Linux系 统中的文本编辑程序.它的功能十分强大,但是命令繁多,不容易掌握,它可以执行输出.删除.查找.替换.块操作等众多文本操作,而且用户可以根据自己的需 要对其进行定制,这是其他编辑程序所没有的.vi不是基于窗口的,所以,这个多用途编辑程序可以用于在任何类型的终端上编辑各式各样的文件. vi编辑器的三种模式 1.命令模式(command mode)-执行命令 在该模式中,可以输入命令来执行许多种功能.控制屏幕光标的移动,字符.字或行

Linux下vi编辑器粘贴复制剪切功能

RedHat 9.0 Linux下vi编辑器实现简单的粘贴复制剪切功能": 如果想把文件内的第三行内容黏贴到第十五行: 1.进入你的文件,(处于命令模式,而不是编辑模式) 2.将你的光标移到你的第三行的开头(用方向键) 3,按下v,(你发现切换到可视模式了),按方向键,知道选中你想要的内容 4.按y,再将光标移到第十四行末尾. 5.按p.完成 此方法可以用于多行的粘贴->复制 若想剪切->复制的话就更简单了(只能用于单行) 1.进入你的文件,(处于命令模式,而不是编辑模式) 2.将你

linux 命令 —-— vi编辑器

vi编辑器在linux中使用最为频繁,主要分为三种工作模式:命令模式.输入模式和末行模式,每种工作模式中的操作命令也不相同 使用vi打开文件后进入的命令模式 三种模式之间的切换 在命令模式中,使用a.i.o等按键可以快速进入输入模式:按:键可以进入末行模式:在输入模式或末行模式下返回命令模式按ESC即可,如图所示 命令模式下的基本操作   末行模式下的基本操作

Linux之vi编辑器的使用

今天我们来说一下vi编辑器的使用,vi编辑器主要用来在Linux环境下编辑配置文件. 一.使用方法: 1.输入命令 vi filename,打开文件,处于一个查看模式 2.点击键盘 i,进入insert模式: 3.修改或输入内容: 4.按Esc,退出编辑模式: 5.按"shift"加"冒号",输入wq,保存退出:q,直接退出:q!,强制退出. 二.vi编辑器的搜索 1. /字符串:自当前光标位置向上搜索 ?字符串:自当前光标位置向下搜索 2.  查找下一个:按&qu

Linux操作系统vi编辑器使用详解

vi编辑器简介 vi编辑器是Linux和Unix上最基本的文本编辑器,工作在字符模式下.由于不需要图形界面,vi是效率很高的文本编辑器.尽管在Linux上也有很多图形界面的编辑器可用,但vi在系统和服务器管理中的功能是那些图形编辑器所无法比拟的. vi 编辑器并不是一个排版程序,它不像Word或WPS那样可以对字体.格式.段落等其他属性进行编排,它只是一个文本编辑程序.没有菜单,只有命令,且命令繁多.vi有3种基本工作模式:命令行模式.文本输入模式和末行模式. Vim是vi的加强版,比vi更容易

Linux中vi编辑器的用法

实验一: vi编辑器的模式切换 1.       实验目标:熟练掌握vi编辑器的三种模式间切换及其特点 2.       实验操作步骤: 步骤一: 进入vi编辑器即命令模式 进入vi编辑器可以在命令终端中输入vi或者vim 步骤二: 切换至末行模式 步骤三: 切换至输入模式 3.       实验总结: 从输入模式切换至末行模式必须先切换至命令模式,其切换方法为按“ESC”键,而命令模式与其余两种模式可以任意切换. 实验二: 使用命令模式下的命令 1.       实验目标:对命令模式下的命令有

linux中VI编辑器使用个人记录

VI编辑器有三种编辑模式:命令模式.最后行模式.文本编辑模式 启动VI后进入的第一种模式是”命令模式“.从命令模式可进入最后行模式和编辑模式.而后两种模式之间不能直接切换.必须按ESC键退回到命令模式后在进入响应模式 那么.个人感觉命令模式就相当于最后行模式和编辑模式的中间模式或者说是过度模式.它只起到跳转和过渡作用 以上都是使用感受.仅作记录.如有错误请指出 接下来看看VI的主要命令: 首先.再命令模式下.输入 i.I.a.A.o.O进入文本编辑模式.在文本编辑模式中.从键盘输入的任何字符都将

Linux 中 Vi 编辑器的简单操作

Vi 编辑器一共有3种模式:命名模式(默认),尾行模式,编辑模式.3种模式彼此需要切换. 一.进入 Vi 编辑器的的命令 vi  filename //打开或新建文件,并将光标置于第一行首 vi  +n  filename //打开文件,并将光标置于第n行首 vi  +  filename //打开文件,并将光标置于最后一行首 vi  +/pattern  filename //打开文件,并将光标置于第一个与 pattern 匹配处 vi  -r  filename //在上次使用 vi 编辑时

Linux: vi 编辑器中文乱码

[问题] vi编辑器中文乱码 [解决方案] vi /etc/sysconfig/i18n改成如下即可:LANG="en_US.UTF-8"LANGUAGE="zh_CN.GB18030:zh_CN.GB2312:zh_CN"SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"SYSFONT="latarcyrheb-sun16"SYSFONTACM="utf8