Username: Password:

VI VIM用法
来源: ChinaUnix博客  作者: ChinaUnix博客   发布时间:2007-01-01 21:13:00

VI命令能够说是Unix/linux世界里最常用的编辑文档的命令了,但是因为他的命令集众多,很多人都不习惯使用他,其实您只需要掌控基本命令,然后加以灵活运用,就会发现他的优势,并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。
一、基本命令介绍
---- 1.光标命令
k、j、h、l??上、下、左、右光标移动命令。虽然您能够在linux中使用键盘右边的4个光标键,但是记住这4个命令还是很有用的。这4个键正是右手在键盘上放置的基本位置。
nG??跳转命令。n为行数,该命令立即使光标跳到指定行。
Ctrl+G??光标所在位置的行数和列数报告。
w、b??使光标向前或向后跳过一个单词。
---- 2.编辑命令
i、a、r??在光标的前、后连同所在处插入字符命令(i=insert、a=append、r=replace)。
cw、dw??改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。
x、d$、dd??删除一个字符、删除光标所在处到行尾的任何字符连同删除整行的命令。
按ESC跳出编辑模式到命令模式
---- 3.查找命令
---- /string、?string??从光标所在处向后或向前查找相应的字符串的命令。
---- 4.拷贝复制命令
---- yy、p??拷贝一行到剪贴板或取出剪贴板中内容的命令。
二、常见问题及应用技巧
---- 1.在一个新文档中读/etc/passwd中的内容,取出用户名部分。
---- vi file
---- :r /etc/passwd 在打开的文档file中光标所在处读入/etc/passwd
---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的任何部分。
---- 您也能够在指定的行号后读入文档内容,例如使用命令“:3r /etc/passwd”从新文档的第3行开始读入 /etc/passwd的任何内容。
---- 我们还能够使用以下方法删掉文档中任何的空行及以#开始的注释行。
---- #cat squid.conf.default | grep -v ’^$’ | grep -v ’^#’
---- 2.在打开一个文档编辑后才知道登录的用户对该文档没有写的权限,不能存盘,需要将所做修改存入临时文档。
---- vi file
---- :w /tmp/1 保存所做的任何修改,也能够将其中的某一部分修改保存到临时文档,例如仅仅把第20~59行之间的内容存盘成文档/tmp/1,我们能够键入如下命令。
---- vi file
---- :20,59w /tmp/1
---- 3.用VI编辑一个文档,但需要删除大段的内容。
---- 首先利用编辑命令“vi file”打开文档,然后将光标移到需要删除的行处按Ctrl+G显示行号,再到结尾处再按Ctrl+G,显示文档结尾的行号。(注:能够先用命令:set nu来显示全部的行号)
---- :23,1045d 假定2次得到的行号为23和1045,则把这期间的内容全删除,也能够在要删除的开始行和结束行中用ma、mb命令标记,然后利用“:’a,’bd”命令删除。
---- 4.在整个文档的各行或某几行的行首或行尾加一些字符串。
---- vi file
---- :3,$s/^/some string / 在文档的第一行至最后一行的行首插入“some string”。
---- :%s/$/some string/g 在整个文档每一行的行尾添加“some string”。
---- :%s/string1/string2/g 在整个文档中替换“string1”成“string2”。
---- :3,7s/string1/string2/ 仅替换文档中的第3行到第7行中的“string1”成“string2”。
---- 注意: 其中s为substitute,%表示任何行,g表示global。
---- 5.同时编辑2个文档,拷贝一个文档中的文本并粘贴到另一个文档中。
---- vi file1 file2
---- yy 在文档1的光标处拷贝所在行
---- :n 转换到文档2 (n=next)
---- p 在文档2的光标所在处粘贴所拷贝的行
---- :n 转换回文档1
---- 6.替换文档中的字符串。
使 用命令“:%s#/usr/bin#/bin#g”能够把文档中任何路径/usr/bin换成/bin。也能够使用命令“:%
s//usr/bin//bin/g”实现,其中“”是转义字符,表明其后的“/”字符是具备实际意义的字符,不是分隔符。(linux知识宝库)
--------------------------------------------------------------------------------------------
vi的简单用法:
进入vi后 有两种模式
1.编辑模式
2.命令模式
进入vi后默认是命令模式,所以不要乱按 就会得到dd的警告声,要输入文字的话 请按a后i 就能够开始输入文字拉!
输入结束后 请按esc键回命令模式
输入q就是退出
输入wq就是存盘后退出
输入q!放弃存盘强行退出
Vi 的使用
Vi 已是 Unix 系统中标准的文字编辑器, 每个网管人员都必须熟悉他, 因为您会在维护系统时常常碰到他.
Vi 对初学者而言, 第一印象总是不好, 觉得他难用. 其实, 大家在用惯了办公室软件之后, 再回过头来用这些未见过的怪物, 难免无法适应,
这是很正常的. 但别忘了, 各位都将是学校中重要网管的人员,您的角色不再是纯粹的使用者, 而是一位面对复杂网络的管理者及问题解决者,
您必须能够亲手操控您的系统, 设定您的系统, 调整您的系统, 而这个过程, 您就不得不去面对 Vi.
不要拿 Word 的使用习惯来挑剔 Vi, 他们的作用方向不同, 风格也不同, 一旦您能上手, 也许您会喜欢上他. Vi 是网络管理人员的标准左右手.
So, 打开您的心, 接受会比反弹更有收获.
二. 开启档案, 关闭档案
vi ?名 开启档案
: 进入命令列的方法
q 离开 (命令列)
wq 存盘然后离开 (命令列)
q! 放弃存盘, 强迫离开 (命令列)
ZZ 存盘然后离开 (不在命令列使用)
:e ?名 在 Vi 中开启档案
三. Vi 的操作模式:
Vi 有二种主要的操作模式, ESC 键为单向的转换键(由本文输入模式回到编辑命令模式)
编辑命令模式 : 要 vi 做一些特定目的的动作. 如插入,附加,取代,修改,删除,移动光标,搜寻等等. 若是存盘等动作, 则需在命令列中下达, 欲转换至命令列, 需先按 :
本文输入模式 : 在此模式下, 任何字符, 皆被视为输入的数据.
一开始进入 Vi 之后, 即进入编辑命令模式, 您输入的每一个字符, 皆被预视为一个指令. 有效的指令会被接受, 若是无效的指令, 会产生 beep beep 声, 以示警告.
若想做输入的动作, 必须转换为本文输入模式, 转换的方法, 只要单按一个特别意义的字符键即可, 如下所示:
按 i 或 I 插入状态
按 a 或 A 附加状态
按 R 取代状态R 会进行连续字符取代
按 s 或 S 删除一个字符;删除光标所在那一列
按 cw, c2b, c$, c0 修改状态
按 o 或 O 新增空白列
您不必一下子全用上, 只要会 i, a, o 这个三个模式即可胜任愉快, 因为大部份时候, 您也只用这三个.
OK, 现在您能够试着在本文输入模式下, 键入一些资料看看. 然后, 按 ESC 转换回编辑命令模式.
四. 移动光标:
Vi 为了适用于各种不同的终端机模式, 因此以字键的方式来操控光标.
k j h l 上 下 左 右
Enter 换列
w b 往前一个 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 等键喔!
但是, 若您所使用的终端机模式不支持方向键, 那么上表中的按键, 就相当重要了.
五. 卷页:
ctrl+f 往下一页 (forward)
ctrl+b 往上一页 (before)
ctrl+d 往下半个屏幕(down)
ctrl+u 往上半个屏幕(up)
六. 跳列:
您能够指定跳至某一列位置. 跳动之前, 先查看一下现在所在列数是多少.
ctrl+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 重复搜寻命令(不管往下或往上)
               
               
               

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅