vi 的简单使用

vi的简单使用




笔记已经上传到百度文库:

vi的简单使用.pdf



.vi 介绍
vi
已经是 Unix 系统中标准的文字编辑器 , 每个网管人员都必须熟悉它 , 因为你会在维护系统时常常遇到它 .
vi
对初学者而言 , 第一印象总是不好 , 觉得它难用 . 其实 , 大家在用惯了办公室软件之后 , 再回过头来用这些未见过的怪物 , 难免无法适应 , 这是很正常的 . 但别忘了 , 各位都将是学校中重要网管的人员 , 您的角色不再是纯粹的使用者 , 而是一位面对复杂网络的管理者及问题解决者 , 你必须能够亲手操控你的系统 , 设定你的系统 , 调整你的系统 , 而这个过程 , 你就不得不去面对 vi.
不要拿 Word 的使用习惯来挑剔 vi, 它们的作用方向不同 , 风格也不同 , 一旦您能上手 , 也许你会喜欢上它 .vi 是网络管理人员的标准左右手 .
So,
打开你的心 , 接受会比反弹更有收获 .

. 开启文件 , 关闭文件
vi
文件名 开启文件
:
进入命令行的方法
q
离开 ( 命令行 )
wq
存盘然后离开 ( 命令行 )
q!
放弃存盘 , 强迫离开 ( 命令行 )
ZZ
存盘然后离开 ( 不在命令行使用 )
:e
檔名在 vi 中开启文件

.vi 的操作模式 :
vi
有二种主要的操作模式 ,ESC 键为单向的切换键 ( 由本文输入模式回到编辑命令模式 )
编辑命令模式 : vi 做一些特定目的的动作 . 如插入 , 附加 , 取代 , 修改 , 删除 , 移动光标 , 搜寻等等 . 若是存盘等动作 , 则需在命令行中下达 , 欲切换至命令行 , 需先按 :
本文输入模式 : 在此模式下 , 任何字符 , 皆被视为输入的数据 .
一开始进入 vi 之后 , 即进入编辑命令模式 , 你输入的每一个字符 , 皆被预视为一个指令 . 有效的指令会被接受 , 若是无效的指令 , 会产生 beepbeep , 以示警告 .
若想做输入的动作 , 必须切换为本文输入模式 , 切换的方法 , 只要单按一个特殊意义的字符键即可 , 如下所示 :
i I 插入状态
a A 附加状态
R 取代状态 R 会进行连续字符取代
s S 删除一个字符 ; 删除光标所在那一列
cw,c2b, c$, c0 修改状态
o O 新增空白列
你不必一下子全用上 , 只要会 i,a, o 这个三个模式即可胜任愉快 , 因为大部份时候 , 你也只用这三个 .
OK,
现在你可以试着在本文输入模式下 , 键入一些资料看看 . 然后 , ESC 切换回编辑命令模式 .

. 移动光标 :
vi
为了适用于各种不同的终端机模式 , 因此以字键的方式来操控光标 .
kj h l
上下左右
Enter
换列
wb
往前一个 word; 倒退一个 word
0$
至该列开头 ; 至该列尾端
+-
往下一列 ; 往上一列
请记住一个要诀 :
vi , 大部份的命令都可以在其前面加上数字 , 该数字表示重复该命令的次数 .
例如 :8l 表示往右移动 8 个字符 ,3w 表示往前移动三个 word,2b 表示倒退 2 word
:word 的定义 , 连续英数字符形成一个 word, 而其它特殊符号则每一个字符便是一个 word( 除非连续特殊字符 ), 例如 :--classify 中含有 2 word, 一个是 --; 一个是 classify
-x, 则有 3 word.
在特殊的终端机模式下 , 方向键也是可以使用的 . linux vt100.
其实大部份时候 , 你仍可以保有使用方向键的习惯 . 但大概只有 local 下才能使用 PgUp, PgDn, End, Home 等键喔 !
不过 , 若你所使用的终端机模式不支持方向键 , 那么上表中的按键 , 就相当重要了 .

. 翻页 :
^f
往下一页 (forward)
^b
往上一页 (before)
^d
往下半个屏幕 (down)
^u
往上半个屏幕 (up)

. 跳列 :
你可以指定跳至某一列位置 . 跳动之前 , 先查看一下目前所在列数是多少 .
^g
可以显示目前的位置 , :"ls.txt" line 53 of 264--20%-- col 16-23
上面表示 , 目前是在第 53 , 全部共有 264 , 占该档百分之 20 的位置 , 目前的光标 , 实际是在第 23 , 但只算成第 16 , 因为中间有使用 tab .
80G
80gg 跳至第 80
G
跳至文件尾
gg
跳至文件头

. 删除 :( 但不会进入本文输入模式 )
x
删除一个字符
dd
删除一行
r
取代一个字符
以上皆针对光标目前的所在位置产生作用 .
还有 dw,db, de, d0, d$ 等命令 , 但你不须一下子全用上 . 上表中这三个够用了 .
记住一个要诀 :vi 的命令繁多 , 但你真正用上手的不必多 , 而且这些也就够了 .

.undo ( 回复动作 ):
若你对上一个动作反悔了 , 可以使用 undo 的功能 :
u
取消上一个动作所产生的改变
U
取消光标所在那一列所有的改变
:e!
取消所有的改变 , 回复至未修改之前

. 关键词搜寻 / 取代 :
/
关键词往下搜寻关键词
?
关键词往上搜寻关键词
n
重复搜寻命令 ( 不管往下或往上 )
N
n 相反方向
cw
字符串以该字符串取代原有的关键词
n.
继续取代该字符串的动作
%s/
目标 / 取代 /g 将目标字符串全换成取代字符串

. 选取、复制与搬移 :
Y
yy 选取光标所在那一列
5Y
5yy 选取光标列所在共 5 (5 只是一个例子 , 可改用其它数字 )
p
将选取的内容 , 复制至光标之后
P
将选取的内容 , 复制至光标之前
cw,x, dd
等删除命令会将被删除的内容放入 buffer , 配合 p P 即可做出搬移的效果 .

十一 . 暂时跳出 vi:
在编辑过程中 , 你可能想要执行其它命令 , 方法如下 :
:!
命令执行该令命
:sh
暂时跳出 vi, 欲回 vi ^d exit


##==================== vi 技巧 =====================##

vi
技巧 :

shift+ a
移到本行尾并编辑
gg 跳到文首
G 跳到文尾
0 跳到行首
$ 跳到行尾
w 跳到下一个 word
ndw ndW 删除光标处开始及其后的 n-1 个字符。
d0
删至行首。
d$
删至行尾。
ndd
删除当前行及其后 n-1 行。
x
X 删除一个字符。
Ctrl+u
删除输入方式下所输入的文本。
^R
恢复 u 的操作
J
把下一行合并到当前行尾
V
选择一行
^V
按下 ^V 后即可进行矩形的选择了
aw
选择单词
iw
内部单词 ( 无空格 )
as
选择句子
is
选择句子 ( 无空格 )
ap
选择段落
ip
选择段落 ( 无空格 )
D
删除到行尾
x,y
删除与复制包含高亮区
dl
删除当前字符(与 x 命令功能相同)
d0
删除到某一行的开始位置
d^
删除到某一行的第一个字符位置(不包括空格或 TAB 字符)
dw
删除到某个单词的结尾位置
d3w
删除到第三个单词的结尾位置
db
删除到某个单词的开始位置
dW
删除到某个以空格作为分隔符的单词的结尾位置
dB
删除到某个以空格作为分隔符的单词的开始位置
d7B
删除到前面 7 个以空格作为分隔符的单词的开始位置
d
)删除到某个语句的结尾位置
d4
)删除到第四个语句的结尾位置
d
(删除到某个语句的开始位置
d
)删除到某个段落的结尾位置
d{
删除到某个段落的开始位置
d7{
删除到当前段落起始位置之前的第 7 个段落位置
dd
删除当前行
d/text
删除从文本中出现“ text” 中所指定字样的位置,
一直向前直到下一个该字样所出现的位置(但不包括该字样)之间的内容
dfc
删除从文本中出现字符“ c” 的位置,一直向前直到下一个该字符所出现的位置(包括该字符)之间的内容
dtc
删除当前行直到下一个字符“ c” 所出现位置之间的内容
D
删除到某一行的结尾
d$
删除到某一行的结尾
5dd
删除从当前行所开始的 5 行内容
dL
删除直到屏幕上最后一行的内容
dH
删除直到屏幕上第一行的内容
dG
删除直到工作缓存区结尾的内容
d1G
删除直到工作缓存区开始的内容  

/ 查找
n 查找下一个
N 查找上一个

setnumber 显示行号
setmouse=a 显示鼠标
setts=4 设置 tablespace 4 个字符,默认为 8
setautoindent 可以自动缩进

还可以 , 个人以前一直觉得快 copy 麻烦 , 一直懒惰 ... 今天无意中发现了 , 就贴过来了 ^_^
如何用 vi 复制第 5 行到第 10 行并粘贴到第 12 行之后?
方法 1
光标放到第五行,
输入: y6y
光标放到第 12 行,
输入: p
方法 2
命令行模式下输入
:5,10co 12
方法 3
我一般都是
先移到第五行 d6
p
再移到 12
p
延伸一下 , 有时候不想费劲看多少行或复制大量行时,可以使用标签来替代
光标移到起始行,输入 ma
光标移到结束行,输入 mb
光标移到粘贴行,输入 mc
然后 :'a,'bco 'c
co 改成 m 就成剪切了
那删除呢
是不是 5,10de
刚才试了试,的确可以
也可以把大量的代码保存到一个文件,然后在另一个文件里打开需要拷贝的代码。

在文件一:
光标移到起始行,输入 ma
光标移到结束行,输入 mb
然后 :'a,'b w filename
在文件二:
光标移到需要赋值的行,输入:
:rfilename
行拷贝还有一个比较简单的方法:
操作如下:
找到要复制的行,键盘按下 shift+v ,然后用方向键上下或 jh 移动想要 copy 的行,然后按下 y
在移动到目的行,按下 p 即完成拷贝多行。这种方法适合没有行号的多行 copy
vi 提供了文本移动和复制命令,用户利用这些指令可以方便的复制字符、文字、行还有文本块。
有关的命令如下:
yy
将当前行复制到缓冲区
yw
将当前单词复制到缓冲区
y1
将光标处的一个字符复制到缓冲区
p
将缓冲区的信息粘贴到光标的后面
:行号 1 ,行号 2copy 行号 3 将行号 1 到行号 2 的内容复制到行号 3 所在行的后面。
:行号 1 ,行号 2move 行号 3 将行号 1 到行号 2 的文本内容移动到行号 3 所在行的后面


笔记已经上传到百度文库:

vi的简单使用.pdf

(完)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值