一.简介

   编辑一个文本文 件是经常使用到的计算机操作。我们想做的大多数事情都需要

使用某种文
件编辑。文本编辑器会方便文件的创建和修改。编辑一个文本文件是经

常使用到的计算机操作
。我们想做的大多数事情都需要使用某种文件编辑。文本编

辑器会方便文件的创建和修改。这
些文件也许会包含备记录、日程表、程序源代码

等等。文本编辑器是 简化的字处理器,就不存
在字处理器所具有的黑体、居中、下

划线等等这印刷上的特点。当然每一种操作系统软件都至
少支持一种文本编辑器。

    通常有两种方式:

    行编辑器(一种每次修改只能在一行之中或组行之间进行的方式)

    全屏编辑器(只能显示正在编辑的那一屏进行修改,而且立刻能在屏幕上显示出来)

    当然UNIX中也有文本编辑器,下面就来介绍一下:   

    编辑器名称           类 型

    ed                最初的行编辑

    ex                在ed上扩展更为复杂的编辑器

    vi                可视化的全屏编辑器

    emacs             公共域的全屏编辑器
 
二.vi简介

   vi 的原意是"Visual",它是一个立即反应的编辑程式,也就是说可以立刻看

到操作结果。

    vi是大多数UNIX系统都支持的全屏文本编辑器。它是由行编辑器ex发展而来

的。它也两个版本:view编辑器和vedit编辑器。其中view编辑器对vi设了只读

标志,而vedit编辑器对vi做了几个标志设置,同时也简化了vi的使用。


三.vi的模式

    通常说Vi有三种模式:

    (1).命令模式(Command mode)

    Esc键进入vi命令模式;移动光标,删除等。操作不对,vi会响铃报警。

    (2).文本编辑模式(Insert mode):命令模式下输入插入命令i、附加命

令a 、打开命令o、修
改命令c、取代命令r或替换命令s都可以进入文本输入模式。

在该模式下,用户输入的任何字符
都被vi当做文件内容保存起来,并将其显示在屏

幕上。在文本输入过程中,若想回到命令模式
下,按Esc键即可。

    (3).末行模式(Line mode)

    命令模式下按 “:”键进入末行模式,此时vi会在显示窗口的最后一行显示一

个“:”作为末行
模式的提示符,等待用户输入命令。多数对文件操的作命令都是在此

模式下执行的(如查找、
替换文本中的某个字符串)。末行命令执行完后,vi自动

回到命令模式。


四.vi详细使用


.命令模式之一:进入命令模式

Esc

进入命令模式

.命令模式之二: 移动光标

h 或 向左方向键()

光标向左移动一个位置

j 或 向下方向键()

光标向下移动一个位置

k 或 向上方向键()

光标向上移动一个位置

l 或 向右方向键()

光标向右移动一个位置

如果想要进行多次移动的話,例如向下移动 30 行,可以使用 "30j" "30" 的组合按键, 亦即加上想要進行的次数(数字)后,按下动作即可!

[Ctrl] + [f]

屏幕[向下]移动一页,相当于 [Page Down]按键  

[Ctrl] + [b]

屏幕[向上]移动一页,相当于 [Page Up] 按键  

[Ctrl] + [d]

屏幕[向下]移动半页

[Ctrl] + [u]

屏幕[向上]移动半页

+

光标移动到非空白位置的下一列

-

光标移动到非空白位置的上一列

n<space>

那个 n 表示[数字],例如 20 。按下数字后再按空白键,光标会向右移动这一行的 n 个位置。例如 20<space> 則光标会向后面移动 20 个位置距离。

0

这是数字[ 0 ]:移动到这一行的最前面位置处  

$

移动到这一行的最后面位置处

H

光标移动到这个屏幕的最上方那一行

M

光标移动到这个屏幕的中央那一行

L

光标移动到这个屏幕的最下方那一行

G

移动到这个档案的最后一行

nG

n 为数字。移动到这个档案的第 n 行。例如 20G 則会移动到这个档案的第 20 (可配合 :set nu)

gg

移动到这个档案的第一行,相当于 1G 啊!  

n<Enter>

n 为数字。光标向下移动 n

.命令模式之二: 刪除、复制与粘贴

x, X

X:向后刪除一个位置 (相当于 [del] 按键);

X: 向前刪除一个位置(相当于 [backspace])  

nx

n 为数字,连续向后刪除 n 个位置。例如,我要连续刪除 10 个位置, [10x]

dd

刪除光标所在的那一整行

ndd

n 为数字。刪除光标所在的向下 n 行,例如 20dd 则是刪除 20

d1G

刪除光标所在到第一行的所有资料

dG

刪除光标所在到最后一行的所有资料

d$

刪除光标所在处,到该行的最后一个位置

d0

那个是数字的 0 ,刪除光标所在处,到该行的最前面一个位置

yy

复制光标所在的那一行

nyy

n 为数字。复制光标所在的向下 n 列,例如 20yy 則是复制 20

y1G

复制光标所在列到第一列的所有资料

yG

复制光标所在列到最后一列的所有资料

y0

复制光标所在的那个位置到该行行首的所有资料

y$

复制光标所在的那个位置到该行行尾的所有资料

p, P

小写P:将复制的资料粘贴在光标下一行;

大写P: 将复制的资料粘贴在光标上一行!

J

將光标所在行与下一的资料結合成同一

c

重复刪除多个资料,例如向下刪除 10 行,[ 10cj ]

u

撤销前一个动作。

[Ctrl]+r

重做上一个动作。

.

这是小数点,意思是重复前一个动作。 比如重复刪除、重复粘贴等等动作,按下小数点[.]就可以了!

    vi 中,[数字]是很有意义的!数字通常代表重复做几次! 也有可能是代表去到第几个的意思。例如,要刪除 50 行,則是用 [50dd]! 数字加在动作之前,如果我要向下移动 20,[20j]或者是[20↓]即可。

.文字编辑模式之一:进入

i, I

i:在光标所在处插入输入文字;

I: 在所在行的第一个非空白位置插入。  

a, A

a:从光标所在位置后面开始插入。

A:为从光标所在行的最后一个位置开始插入。

o, O

小写o:在光标所在的下一行插入新的一行;

大写O:在目前光标所在上一行插入新的一行.

r, R

r :取代光标所在的那一个位置;

R :会一直取代光标所在的文字,直到按下 ESC 为止;

上面这些按键中,在 vi 画面的左下角处会出現[--INSERT--][--REPLACE--]的字样子.要在左下角看到 INSERT/REPLACE 才能输入.

.末行模式之一: 搜索与替换

/word

向光标之下寻找一个字串名稱为 word 的字串。例如要在档案內搜寻 vbird 这个字串,就输入 /vbird 即可!  

?word

向光标之上寻找一个字串名稱为 word 的字串。

n

这个 n 是英文按键。代表[重复前一个搜寻的动作]的意思。舉例來說, 如果剛剛我們執行 /vbird 去向下搜寻 vbird 这个字串,則按下 n 后,会向下继续搜寻下一个名稱为 vbird 的字串。如果是執行 ?vbird 的話,那麼按下 n 則会向上继续搜寻名稱为 vbird 的字串!

N

这个 N 是英文按键。與 n 剛好相反,为[反向]進行前一个搜寻动作。 例如 /vbird 后,按下 N 則表示[向上]搜寻 vbird

:n1,n2s/word1/word2/g

n1 n2 为数字。在第 n1 n2 行之間寻找 word1 这个字串,並將该字串取代为 word2 !舉例來說,在 100 200 行之間搜寻 vbird 並取代为 VBIRD 則:
[:100,200s/vbird/VBIRD/g]

:1,$s/word1/word2/g

从第一行到最后一行寻找 word1 字串,並將该字串取代为 word2

:1,$s/word1/word2/gc

从第一行到最后一行寻找 word1 字串,並將该字串取代为 word2 !且在取代前显示提示位置給使用者确认 (confirm) 是否需要取代!

.末行模式之二:保存与退出

:w

將编辑的资料寫入硬碟档案中

:w!

若档案屬性为只读时,强制写入该档案。不过,到底能不能写入, 还是跟您对该档案的档案权限有关.

:q

离开 vi  

:q!

若曾修改过档案,又不想儲存,使用 ! 为強制离开不儲存档案。

 [!] vi中,常常具有强制的意思

:wq

儲存后离开,若为 :wq! 則为強制儲存后离开  

:e!

將档案还原到最原始的状態!

ZZ

若档案沒有更动,則不儲存离开,若档案已经经过更动,則儲存后离开!

:w [filename]

將编辑的资料儲存成另一个档案(类似另存新档)

:r [filename]

在编辑的资料中,读入另一个档案的资料。亦即將 [filename] 这个档案內容加到光标所在行后面

:n1,n2 w [filename]

n1 n2 的內容儲存成 filename 这个档案。

:! command

暂時离开 vi 到指令列模式下執行 command 的显示结果!例如
[:! ls /home]即可在 vi 当中察看 /home 底下以 ls 输出的档案资讯!

.末行模式之三:其他

:set nu

显示示行号,设定之后,会在每一行的字首显示该行的行号

:set nonu

set nu 相反,为取消行号!



 
Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐