vi简单使用
一.简介 编辑一个文本文 件是经常使用到的计算机操作。我们想做的大多数事情都需要使用某种文件编辑。文本编辑器会方便文件的创建和修改。编辑一个文本文件是经常使用到的计算机操作。我们想做的大多数事情都需要使用某种文件编辑。文本编辑器会方便文件的创建和修改。这些文件也许会包含备记录、日程表、程序源代码等等。文本编辑器是 简化的字处理器,就不存在字处理器所具有的黑体、居中、
一.简介
编辑一个文本文 件是经常使用到的计算机操作。我们想做的大多数事情都需要
使用某种文件编辑。文本编辑器会方便文件的创建和修改。编辑一个文本文件是经
常使用到的计算机操作。我们想做的大多数事情都需要使用某种文件编辑。文本编
辑器会方便文件的创建和修改。这些文件也许会包含备记录、日程表、程序源代码
等等。文本编辑器是 简化的字处理器,就不存在字处理器所具有的黑体、居中、下
划线等等这印刷上的特点。当然每一种操作系统软件都至少支持一种文本编辑器。
通常有两种方式:
行编辑器(一种每次修改只能在一行之中或组行之间进行的方式)
全屏编辑器(只能显示正在编辑的那一屏进行修改,而且立刻能在屏幕上显示出来)
当然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 則: | |
: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 的显示结果!例如 | |
三.末行模式之三:其他 | ||
:set nu | 显示示行号,设定之后,会在每一行的字首显示该行的行号 | |
:set nonu | 與 set nu 相反,为取消行号! |
更多推荐
所有评论(0)