VI使用介绍

Vi 简 介

---- vi 做为Linux 系统中一种编辑器,它的使用方法和界面与 Unix 平台十分相似。在 Linux 中有很多功能强大,界面友好的编辑器,但是vi 还是值得你学习它的使用方法。初步接触 VI,你觉得它的界面不太友好,不容易掌握,可是一旦你掌握了vi 的命令,你可以感觉到它强大的功能与高效。而且vi 相对来说较小,无论你使用任何 Linux系统,你总是可以使用vi的。在很多系统中,可能只有 vi 供你选择。

vi的基本概念
      基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:

1) 命令行模式command mode)

控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。

2) 插入模式(Insert mode)

只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。

3) 底行模式(last line mode)

将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。

不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。
--

---- 进 入 与 离 开

---- 要 进 入 vi 可 以 直 接 在 系 统 提 示 字 符 下 键 入 vi < 文 件 名 称 >,vi 可 以 自 动 帮 你 载 入所 要 编 辑 的 文 件 或 是 开 启 一 个 新 文 件。 进 入 vi 後 屏 幕 左 方 会 出 现 波 浪 符 号, 凡 是 列首 有 该 符 号 就 代 表 此 列 目 前 是 空 的。 要 离 开 vi 可 以 在 指 令 模 式 下 键 入 :q, :wq 指 令则 是 存 档 後 再 离 开( 注 意 冒 号)。 要 切 换 到 指 令 模 式 下 则 是 用 [ESC] 键, 如 果 不 晓 得 现在 是 处 於 什 麽 模 式, 可 以 多 按 几 次 [ESC], 系 统 会 发 出 哔 哔 声 以 确 定 进 入 指 令 模 式。

其中:

:q    退出,若文件有修改,并不退出,继续等待用户的命令
:q!   强制退出,并丢掉所有未保存信息
:wq  保存到原文件并退出
:w [新文件名] 保存并返回指令模式
:30,60w [新文件名]   将30到60行的内容写入[新文件]
:30,60w>> [文件名]    将第30到60行的内容写入[文件]的末尾
:w %.new     将当前缓冲区中的内容写入file.new中,File是当前编辑的文件名

---- Vi 输 入 模 式

---- 如 何 输 入 资 料 呢 ? 有 好 几 个 指 令 可 以 进 入 输 入 模 式:

新增 (append)
---- a 从 光 标 所 在 位 置 後 面 开 始 新 增 资 料, 光 标 後 的 资 料 随 新 增 资 料 向 後 移 动。
---- A 从 光 标 所 在 列 最 後 面 的 地 方 开 始 新 增 资 料。

插 入 (insert)
---- i 从 光 标 所 在 位 置 前 面 开 始 插 入 资 料, 光 标 後 的 资 料 随 新 增 资 料 向 後 移 动。
---- I 从 光 标列 的 第 一 个 非 空 白 字 符 前 面 开 始 插 入 资 料。

开 始 (open)
---- o 在 光 标 所 在 列 下 新 增 一 列 并 进 入 输 入 模 式。
---- O 在 光 标 所 在 列 上 方 新 增 一 列 并 进 入 输 入 模 式。

---- - 删 除 与 修 改

---- 何 谓 编 辑 ? 在 这 里 我 们 认 为 是 文 字 的 新 增 修 改 以 及 删 除, 甚 至 包 括 文 字 区 块 的 搬 移、复 制 等 等。 这 里 先 介 绍 vi 的 如 何 做 删 除 与 修 改。( 注 意: 在 vi 的 原 始 观 念 里, 输 入 跟编 辑 是 两 码 子 事。 编 辑 是 在 指 令 模 式 下 操 作 的, 先 利 用 指 令 移 动 光 标 来 定 位 要 进 行 编辑 的 地 方, 然 後 才 下 指 令 做 编 辑。)
---- x 删 除 光 标 所 在 字 符。
---- dd 删 除 光 标 所 在 的 列。
---- r 修 改 光 标 所 在 字 符,r 後 接 著 要 修 正 的 字 符。
---- R 进 入 取 代 状 态, 新 增 资 料 会 覆 盖 原 先 资 料, 直 到 按 [ESC] 回 到 指 令 模 式 下 为 止。
---- s 删 除 光 标 所 在 字 符, 并 进 入 输 入 模 式。
---- S 删 除 光 标 所 在 的 列, 并 进 入 输 入 模 式。

----
这里列出 vi 中较常用的操作命令。

  1. 输入模式命令
  2. 输入模式命令光标移动
  3. 输入模式命令删除操作
  4. 改变与替换
  5. 查询命令
  6. 拷贝与粘贴
  7. 文件保存及退出vi

 


输入模式命令

进入输入输出的方法

命令作用
<a>在光标后输入文本
<A>在当前行末尾输入文本
<i>在光标前输入文本
<I>在当前行开始输入文本
<o>在当前行后输入新一行
<O>在当前行前输入新一行

光标移动命令

光标移动

命令作用
<b>移动到当前单词的开始
<e>移动到当前单词的结尾
<w>向前移动一个单词
<h>向前移动一个字符
<j>向上移动一行
<k>向下移动一行
<l>向后移动一个字符

删除操作命令

删除操作

命令作用
<x>删除光标所在的字符
<dw>删除光标所在的单词
<d$>删除光标至行尾的所有字符
<D>同<d$>
<dd>删除当前行

  可在删除命令前加上数字,如<5x>表示删除5行。

改变与替换操作命令

改变与替换操作

命令作用
<r>替换光标所在的字符
<R>替换字符序列
<cw>替换一个单词
<ce>同<cw>
<cb>替换光标所在的前一字符
<c$>替换自光标位置至行尾的所有字符
<C>同<c$>
<cc>替换当前行

查询命令

查询

命令作用
</abc>向前查询abc
<?abc>向后查询abc
<n>向前继续查询
<N>向后继续查询

拷贝与粘贴命令

拷贝与粘贴

命令作用
</yw>将光标所在单词拷入剪贴板
<y$>将光标至行尾的字符拷入剪贴板
<Y>同<y$>
<yy>将当前行拷入剪贴板
<p>将剪贴板中的内容粘贴在光标后
<P>将剪贴板中的内容粘贴在光标前

文件保存及退出vi命令

文件保存及退出vi

命令作用
<:q>不包存退出
<:q!>不保存强制性退出
<:w>保存编辑
<:w filename>存入文件 filename 中
<:w! filename>强制性存入文件 filename 中
<:wq>保存退出
<:x>同 <:wq>
<ZZ>同 <:wq>
 

 

 

基本的 vi 命令
==============

vi filename 編輯或建立檔案
vi +18 filename 開啟檔案到第 18 行
vi +/"mustard greens" filename 開啟檔案到第一個出現 "mustard green" 處
vi -r filename 編輯上次編輯中斷的檔案
view filename 開啟檔案為僅讀
h 向左移一個字元
j 向下移一個字元
k 向上移一個字元
l 向右移一個字元
w 向右移一個字
W 向右移一個字(通過標點符號)
b 向左移一個字
B 向左移一個字(通過標點符號)
Return 向下移一行
Backspace(倒退鍵) 向左移一個字元
Space Bar(空白鍵) 向右移一個字元
H 移至螢幕頂端
M 移至螢幕中間
L 移至螢幕底部
Ctrl-F 向前捲動一個螢幕
Ctrl-D 向前捲動半個螢幕
Ctrl-B 向後捲動一個螢幕
Ctrl-U 向後捲動半個螢幕
a 在游標右方插入字元
A 在行尾游標右方插入字元
i 在游標左方插入字元
I 在行首游標左方插入字元
o 在游標下面插入一行
O 在游標上面插入一行
cw 改變字 (一個字當中游標的右方部份)
cc 改變行
C 改變一行中游標右方的部份
s 以字串代替游標所在的字元
r 以另一字元代替游標所在的字元
r-Return 將行切斷
J 將目前行和下一行連結
xp 將游標所在字元與右邊字元對調
~  改變字母大小寫
u 取消前一個命令
U 取消對行所作的所有改變
:u 取消前一個最後一行命令
x 刪除字元
dw 刪除字 (一個字當中游標的右方部份)
dd 刪除行
D 刪除本行中游標右邊的部份
:5,10 d 刪除第 5 行到第 10 行
yy yank 或複製行
Y yank 或複製行
P 將 yanked 或要刪除的行放在目前行的下面
p 將 yanked 或要刪除的行放在目前行的下面
:2,6 co 8 複製第 2 行到第 6 行並置於第 8 行後
:4,5 m 6 將第 4 行到第 5 行搬移至第 6 行後
:set nu 設定行號
:set nonu 隱藏行號
G 到檔案的最後一行
21G 到第 21 行
/string/ 搜尋字串
?string? 往回搜尋字串
n 找尋字串下一次出現的地方
:g/search-string/s//replace-string/g 搜尋字串並替換字串
Ctrl-L 清除螢幕
:r filename 讀取檔案於游標所在行以後
:34 r filename 34 行以後讀入檔案
:w 儲存檔案
:w filename 儲存於所指定的檔案
:wq 儲存內容並跳出 vi
ZZ 儲存內容並跳出 vi
:q! 跳出 vi 但不儲存內容

•切换至Insert mode编辑文件
在Command mode下按‘i’、‘a’或‘o’三键就可进入Insert mode。这时候您就可以开始输入文字了。
i: 插入,从目前光标所在之处插入所输入的文字。
a: 增加,目前光标所在的下一个字开始输入文字。
o: 插入新的一行,从行首开始输入文字。
•Insert的切换→Command mode,按Esc键
您目前处于Insert mode,您就只能一直打字。假如您发现打错字了,想用光标键往回移动,将该字删除,就要按ESC键转换回Command mode,再删除文字。
•离开vi及存文件
在Command mode下,可按冒号“:”键入入Last line mode,例如:
:w filename (输入“w filename”,将文章存入指定的文件名filename)
:wq (输入“wq”,因为进入之时已经指定文件名testfile,所以会写入testfile并离开vi)
:q! (输入“q!”,强制离开并放弃编辑的文件)

Command mode功能键列表
在介绍command mode指令的时后,指令后面加上“常用”字眼的功能键,表示比较常用的vi指令,请读者您一定要学会、记住。
(1)I、a、o切换进入Insert mode。[超级常用]
(2)移动光标
vi可以直接用键盘上的光标键来上下左右移动,但正规的vi是用小写英文字母
h、j、k、l,分别控制光标左、下、上、右移一格。
按Ctrl+B:屏幕往后移动一页。[常用]
按Ctrl+F:屏幕往前移动一页。[常用]
按Ctrl+U:屏幕往后移动半页。
按Ctrl+D:屏幕往前移动半页。
按 0 (数字零):移动文章的开头。[常用]
按 G:移动到文章的最后。[常用]
按 w:光标跳到下个word的开头。[常用]
按 e:光标跳到下个word的字尾。
按 b:光标回到上个word的开头。
按 $:移到光标所在行的行尾。[常用]
按 ^:移到该行第一个非空白的字符。
按 0:移到该行的开头位置。[常用]
按 #:移到该行的第#个位置,例:51、121。[常用]
(3)删除文字
x:每按一次删除光标所在位置的后面一个字符。[超常用]
#x:例如,6x 表删除光标所在位置的后面6个字符。[常用]
X:大字的X,每按一次删除光标所在位置的前面一个字符。
#X:例如,20X 表删除光标所在位置的前面20个字符。
dd:删除光标所在行。[超常用]
#dd:例如,6dd表删除从光标所在的该行往下数6行之文字。[常用]
(4)复制
yw:将光标所在处到字尾的字符复制到缓冲区中。
(想在和#x、#X的功能相反)
p:将缓冲区内的字符粘贴到光标所在位置(指令‘yw’与‘p必须搭配使用)。
yy:复制光标所在行。[超常用]
p:复制单行到您想粘贴之处。(指令‘yy’与‘p’必须搭配使用)
#yy:如:6yy表示拷贝从光标所在的该行往下数6行之文字。[常用]
p:复制多行到您想粘贴之处。(指令‘#yy’与‘p’必须搭配使用)
“ayy:将复制行放入buffer a, vi提供buffer功能,可将常用的数据存在buffer
“ap:将放在buffer a的数据粘贴。
“b3yy:将三行数据存入buffer b。
“b3p:将存在buffer b的资料粘贴
(5)取代
r: 取代光标所在处的字符:[常用]
R:取代字符直到按Esc为止。
(6)复原(undo)上一个指令
u:假如您误操作一个指令,可以马上按u,回复到上一个操作。[超常用]
.: .可以重复执行上一次的指令。
(7)更改
cw:更改光标所在处的字到字尾$处。
c#w:例如,c3w代表更改3个字。
(8)跳至指定行
Ctrl+G:列出光标所在行的行号。
#G:例如,15G,表示移动光标至文章的第15行行首。[常用]
Last line mode下指令简介
读者您要使用Last line mode之前,请记得先按Esc键确定您已经处于Command mode下后,再按冒号“:”或“/”或“?”三键的其中一键进入Last line mode。
1.列出行号
set nu: 输入“set nu”后,会在文章的每一行前面列出行号。
2.跳到文章的某一行
#:井号代表一个数字,在Last line mode提示符号“:”前输入数字,再按Enter就会跳到该行了,如:15[Enter]就会跳到文章的第15行。[常用]
3.寻找字符串
/关键字:先按/,再输入您想寻找的字,如果第一次找的关键字不是您相尽可能的,可以一直按n会往下寻找到您要的关键字为止。
?关键字:先按?,再输入您想寻找的字,如果第一次找的关键字不是您想要的,可以按n会往前寻找到您要的关键字为止。
4.取代字符串
1,$s/string/replae/g:在last line mode输入“1,$s/string/replace/g”会将全文的string字符串取代为replace字符串,其中1,$s就是指搜寻区间为文章从头至尾的意思,g则是表示全部取代不必确认。
%s/string/replace/c:同样会将全文的string字符串取代为replace字符串,和上面指令不同的地方是,%s和1,$s是相同的功能,c则是表示要替代之前必须再次确认是否取代。
1,20s/string/replace/g:将1至20行间的string替代为relpace字符串。
5.存文件
w:在last line mode提示符号“:”前按w即可将文件存起来。[超常用]
#,# w filename:如果您想摘取文章的某一段,存成另一个文件,可用这个指令#代表行号,例如30,50 w nice,将您正在编辑文章的第30~50行存成nice这个文件。
6.离开
q:按q就离开,有时如果无法离开vi,可搭配“!:强置离开vi,如“q!”
qw:一般建议离开时,搭配w一起使用,如此离开时还可存文件。[常用]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值