- 浏览: 127040 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (111)
- 资料总结参阅 (2)
- To Study List (2)
- notepaper (2)
- linux学习 (32)
- linux学习-included (3)
- 开源框架-Hibernate (2)
- 开源框架-Ibatis (1)
- JEE整理 (25)
- JEE Server参考 (5)
- 开源框架-Spring (1)
- 硬件知识 (5)
- 开发环境搭建及管理 (7)
- linux软件工具 (2)
- 数据库 (8)
- 各类文档参考 (1)
- 开源框架-Netty (1)
- 性能调优 (1)
- DP相关 (1)
- 软件知识 (3)
- 脚本语言-python (2)
- 脚本语言-perl (1)
- 分布式 (2)
最新评论
-
zhuxinhua:
谢谢,,这东西真不容易找啊。。
JBoss配置---收集中...
(vi多档案编辑vi demo1 demo2 demo3, 在末行模式下用n切换到下一个,N切换到上一个档案,files列举所有档案列表,可在多档案间进行复制粘贴动作-great!)
(vim多窗口编辑,在vim末行模式下输入sp filename,会开启一个新窗口载入filename档案,若未指定filename则是载入当前档案,[ctrl+w]+↓/[ctrl+w]+↑进行窗口的上下切换)
vim环境设定(创建./.vimrc, 里面输入命令,如set nu, set statusline+=%f)
vim中命令模式下输入v进行区块选择(用作复制,粘贴等), V进行行选择, ctrl+v进行列模式的区域选择(great)
vim中Ctrl+v进入列模式,然后在列模式下可以进行列删除(x),列添加(shift+i[insert]-输入添加数据-两次esc键即可)
1. 记住三种编辑模式
命令模式:所有模式下esc进入该模式
输入模式:命令模式下输入i(或其他)进入该模式
末行模式:命令模式下输入:进入该模式
2. 末行模式下
输入w进行保存
输入q进行退出
在后面加上!代表强制
如wq!表示强制保存并退出
w test表示保存/另存为test文件
e! 不保存修改,重新加载修改前状态(或者使用e命令来载入其他文档或新建文档e demo/e newfile)
f 显示当前文档信息(包含文档名)
3. ctrl+F 向前翻一页
ctrl+B 向后翻一页
^或HOME 跳到行首
$或END 跳到行尾
set nu 显示行号
set nonu 不显示行号
1G 跳到第一行
#G 跳到第#行
G 跳到末行
4. 进入输入模式
i 插入
a 附加
o 新插入一行
r 覆盖光标处单个字符
R 覆盖内容,知道输入esc退出
s 替换光标处内容(注意:替换为在该位置覆盖内容,后面内容后移,覆盖为连同后面内容一起覆盖)
5. 命令模式下
u 撤销最后一次操作
#u 撤销最后#次操作
U 撤销所有操作
ctrl+r 恢复操作
x 删除单个字符
#x 删除#个字符
dd 删除所在行
#dd 删除所在行以下的#行
注:删除操作都可以作为剪切操作,内容放入vi缓冲区,使用p进行粘贴
yy 复制当前行内容到vi缓冲区
#yy 复制当前行以下的#行到缓冲区
按v进入光标选择状态,左右上下键进行区域选择,然后可以x(剪切)或y(复制),再p进行粘贴
yw 复制当前光标所在位置到单词尾字符的内容到缓冲区,若从单词头则相当于复制整个单词
#yw 复制当前光标位置到#个单词的尾字符到缓冲区
y^ 复制光标所在位置到行首的内容到缓冲区
y$ 复制光标所在位置到行尾内容到缓冲区
p 把缓冲区内容粘贴到光标之后
P 把缓冲区内容粘贴到光标之前
6. 末行模式下
------------搜索------------
/string 从上至下查找string字符串
?string 从下至上查找string字符串
------------替换------------
:s/old/new 用new替换当前行中首次出现的old
:s/old/new/g 用new替换当前行中所有出现的old
:#,#s/old/new 用new替换从第#行到第#行每行首次出现的old
:#,#s/old/new/g 用new替换从第#行到第#行所有出现的old
:%s/old/new 用new替换整篇中所有行首次出现的old
:%s/old/new/g 用new替换整篇中的所有old
:s/old/new/gi 用new替换当前行中所有出现的old,old不区分大小写
------------复制/剪切------------
:#,#d 从第#行到第#行剪切
:#,#y 从第#行到第#行复制
n1 第n1行
n1,(或n1,$) 第n1行到最后一行
n1, n2 第n1行到第n2行
vim使用详解
vim使用详解
转自:http://linux.vbird.org
2008年7月25日
感觉鸟歌写的文章详细,通俗,易懂,并且十分实用,先转载这篇供大家一起共享。
vi的使用
基本上vi共分为三种模式,分别是『一般模式』、 『编辑模式』与『指令列命令模式』三种!这三种模式的作用是:
*一般模式:
以vi处理一个档案的时后,一进入该档案就是一般模式了。在这个模式中,你可以使用『上下左右』按键来移动游标,您可以使用『删除字元』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理您的文件资料。
*编辑模式:
在一般模式中可以处理删除、复制、贴上等等的动作,但是却无法编辑的!要等到您按下『i, I, o, O, a, A, r, R』等字母之后才会进入编辑模式。注意了!通常在Linux中,按下上述的字母时,在画面的左下方会出现『 INSERT或REPLACE 』的字样,才可以输入任何字来输入到您的档案中!而如果要回到一般模式时,则必须要按下『Esc』这个按键即可退出编辑模式。
*指令列命令模式:
在一般模式当中,输入『 :或/或? 』就可以将游标移动到最底下那一行,在这个模式当中,可以提供您『搜寻资料』的动作,而读取、存档、大量取代字元、离开vi 、显示行号等等的动作则是在此模式中达成的!
简单的说,我们可以将这三个模式想成底下的图示来表示之:
vi三种模式的相互关系
图一、 vi三种模式的相互关系
闲话不多说,我们底下以一个简单的例子来进行说明吧!
小标题的图示简易执行范例
我们怎么使用vi建立一个档名为test.txt的资料呢?也是很简单的啦,整个步骤可以是这样:
1.使用vi进入一般模式;
[root@linux ~]# vi test.txt
直接输入『 vi档名』即可进入vi了!如下图所示,左下角还会显示这个档案目前的状态!如果是新建档案会显示[New File],如果是已存在的档案,则会显示目前的档名、行数与字元数,例如:『"/etc/man.config" 145L, 4614C』
利用vi开启一个档案
图二、利用vi开启一个档案
2.按下i进入编辑模式,开始编辑文字;
在一般模式之中,只要按下I, o, a等字元,就可以进入编辑模式了!在编辑模式当中,您可以发现在左下角会出现–INSERT-的画面,那就是可以输入任意字元的提示啰!这个时候,键盘上除了[Esc]这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以您可以进行任何的编辑啰! (注:在vi里面, [tab]这个按钮所得到的结果与空白字元所得到的结果是不一样的,特别强调一下! )
进入vi的编辑模式
图三、进入vi的编辑模式
3.按下[ESC]按钮回到一般模式;
好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下[Esc]这个按钮即可!马上你就会发现画面左下角的– INSERT –不见了!
4.在一般模式中按下:wq储存后离开vi !
OK,我们要存档了,存档并离开的指令很简单,输入『:wq』即可存档离开! (注意了,按下:该游标就会移动到最底下一行去!)这时你在提示字元后面输入『 ls -l 』即可看到我们刚刚建立的test.txt档案啦!整个图示有点像底下这样:
利用vi储存档案
图四、利用vi储存档案
如此一来,您的档案test.txt就已经建立起来啰!很简单吧!需要注意的是,如果您的档案权限不对,例如为-r--r--r--时,那么可能会无法写入,那么可以使用『强制写入』的方式吗?可以!使用『:wq!』多加一个惊叹号即可!不过,需要特别注意呦!那个是在『您的权限可以改变』的情况下才能成立的!关于权限的概念,请参考一下Linux的档案权限概念啰!
小标题的图示命令列内容说明
如前所述,所谓的命令列或命令模式,就是在最下面一行没有显示『--INSERT--』或者『--REPLACE--』字样的时候。通常在命令列中的指令有下面几种:(注意,当按下『:』时,游标会自动移动到萤幕的最下面一行!)
一般模式:移动游标的方法
h或向左方向键(←)
游标向左移动一个字元
j或向下方向键(↓)
游标向下移动一个字元
k或向上方向键(↑)
游标向上移动一个字元
l或向右方向键(→)
游标向右移动一个字元
如果想要进行多次移动的话,例如向下移动30行,可以使用"30j"或"30↓"的组合按键,亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f]
萤幕『向下』移动一页,相当于[Page Down]按键(常用)
[Ctrl] +
萤幕『向上』移动一页,相当于[Page Up]按键(常用)
[Ctrl] + [d]
萤幕『向下』移动半页
[Ctrl] +
萤幕『向上』移动半页
+
游标移动到非空白字元的下一列
-
游标移动到非空白字元的上一列
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行(常用)
一般模式:搜寻与取代
/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)是否需要取代! (常用)
一般模式:删除、复制与贴上
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则为贴在游标上一行!举例来说,我目前游标在第20行,且已经复制了10行资料。则按下p后,那10行资料会贴在原本的20行之后,亦即由21行开始贴。但如果是按下P呢?那么原本的第20行会被推到变成30行。 (常用)
J
将游标所在列与下一列的资料结合成同一列
c
重复删除多个资料,例如向下删除10行,[ 10cj ]
u
复原前一个动作。 (常用)
[Ctrl]+r
重做上一个动作。 (常用)
这个u与[Ctrl]+r是很常用的指令!一个是复原,另一个则是重做一次~利用这两个功能按键,您的编辑,嘿嘿!很快乐的啦!
.
不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果您想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
进入编辑模式
i, I
插入:在目前的游标所在处插入输入之文字,已存在的文字会向后退;其中, i为『从目前游标所在处插入』, I为『在目前所在行的第一个非空白字元处开始插入』。 (常用)
a, A
a为『从目前游标所在的下一个字元处开始插入』, A为『从游标所在行的最后一个字元处开始插入』。 (常用)
o, O
这是英文字母o的大小写。 o为『在目前游标所在的下一行处插入新的一行』; O为在目前游标所在处的上一行插入新的一行! (常用)
r, R
取代:r会取代游标所在的那一个字元;R会一直取代游标所在的文字,直到按下ESC为止;(常用)
上面这些按键中,在vi画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。由名称就知道该动作了吧! !特别注意的是,我们上面也提过了,你想要在档案里面输入字元时,一定要在左下角处看到INSERT/REPLACE才能输入喔!
Esc
退出编辑模式,回到一般模式中(常用)
指令列命令模式
: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相反,为取消行号!
特别注意,在vi中,『数字』是很有意义的!数字通常代表重复做几次的意思!也有可能是代表去到第几个什么什么的意思。举例来说,要删除50行,则是用『50dd』对吧!数字加在动作之前~那我要向下移动20行呢?那就是『20j』或者是『20↓』即可。
OK!会这些指令就已经很厉害了,因为常用到的指令也只有不到一半!通常vi的指令除了上面鸟哥注明的常用的几个外,其他是不用背的,你可以做一张简单的指令表在你的萤幕墙上,一有疑问可以马上的查询呦!
小标题的图示一个案例练习
来来来!测试一下您是否已经熟悉vi这个指令呢?请依照底下的需求进行您的指令动作。 (底下的操作为使用FC4的预设档案来进行练习的。您可以在这里下载: http://linux.vbird.org/linux_basic/0310vi/man.config。)看看您的显示结果与鸟哥的结果是否相同啊? !
1.请在/tmp这个目录下建立一个名为vitest的目录;
2.进入vitest这个目录当中;
3.将/etc/man.config拷贝到本目录底下(或由上述的连结下载man.config档案);
4.使用vi开启本目录下的man.config这个档案;
5.在vi中设定一下行号;
6.移动到第58行,向右移动40个字元,请问您看到的双引号内是什么目录?
7.移动到第一行,并且向下搜寻一下『 bzip2 』这个字串,请问他在第几行?
8.接着下来,我要将50到100行之间的man改为MAN,并且一个一个挑选是否需要修改,如何下达指令?
9.修改完之后,突然反悔了,要全部复原,有哪些方法?
10.我要复制51到60行这十行的内容,并且贴到最后一行之后;
11.删除11到30行之间的20行;
12.将这个档案另存成一个man.test.config的档名;
13.去到第29行,并且删除15个字元;
14.储存后离开吧!
整个步骤可以如下显示:
1. 『mkdir /tmp/vitest』
2. 『cd /tmp/vitest』
3. 『cp /etc/man.config .』
4. 『vi man.config』
5. 『:set nu』
6.先按下『58G』再按下『40→』会看到『/dir/bin/foo』这个字样在双引号内;
7.先执行『1G』或『gg』后,直接输入『/bzip2』,则会去到第116行才对!
8.直接下达『 :50100s/man/MAN/gc 』即可!
9. (1)简单的方法可以一直按『 u 』回复到原始状态,(2)使用不储存离开『 :q! 』之后,再重新读取一次该档案;
10. 『51G』然后再『 10yy 』之后按下『 G 』到最后一行,再给他『 p 』贴上十行!
11. 『11G』之后,再给他『 20dd 』即可删除20行了;
12. :w man.test.config
13. 『29G』之后,再给他『 15x 』即可删除15个字元;
14. 『:wq!』
如果您的结果都可以查的到,那么vi的使用上面应该没有太大的问题啦!剩下的问题会是在…..打字练习…。
小标题的图示关于档案的回复与暂存档
另外,其实vi是具有『可回复』功能的呢!那么vi凭什么帮我们进行回复的功能呢?很简单啊!凭暂存档啊!举例来说,当我们编辑一个档案时,假设名称为 /tmp/passwd ,那么在这个/tmp底下就会有一个暂存档案,档名为『 /tmp/.passwd.swp 』,这是一个隐藏档,我们所进行的一些修改都会暂时存在这个档案当中,万一在档案修改过程中,系统挂了,那么下次你再重新vi /tmp/passwd时,系统就会告诉您,是否需要回复『Recovery 』成修改过程中的模样?如果您按下(R) ,嘿嘿!就可以将资料回复到修改过程的样子,而不是原始档案啰!这是个很有用的功能喔! ^_^
这也就是说,如果有一天,您去/tmp底下,执行ls -al时,发现到底下有两个档案,档名分别为passwd与.passwd.swp的话,那么(1)可能有人在编辑这个档案; (2)之前您在编辑这个档案时,因为某些不知名的因素导致vi程式中断,则该暂存档就会存在。如果是状态(2) ,则此时您可以将该.passwd.swp档案删除,或者是,直接vi /tmp/passwd ,在vi出现是否回复时,选择回复,然后储存更新/tmp/passwd ,之后再将这个/tmp/.passwd.swp档案删除即可!如果不删除的话,那么每次编辑这个档案,都会告知您该档案有问题啊! @_@
大标题的图示vim的额外功能
其实,目前大部分的distributions都以vim取代vi的功能了!如果您使用vi后,却看到画面的右下角有显示目前游标所在的行列号码,那么您的vi已经被vim所取代啰~为什么要用vim呢?因为vim具有颜色显示的功能,并且还支援许多的程式语法(syntax),因此,当您使用vim编辑程式时(不论是C语言,还是shell script ),我们的vim将可帮您直接进行『程式除错(debug)』的功能!真的很不赖吧! ^_^
如果您在文字模式下,输入alias时,出现这样的画面:
[root@linux ~]# alias
alias vi='vim'
这表示当您使用vi这个指令时,其实就是执行vim啦!如果您没有这一行,那么您就必须要使用vim filename来启动vim啰!基本上, vim的一般用法与vi完全一模一样~没有不同啦!那么我们就来看看vim的画面是怎样啰!假设我想要编辑/etc/man.config ,则输入『vim /etc/man.config』
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.5p
#
# For more information about this file, see the man pages man(1)
# and man.conf(5).
"man.config" 138L, 4506C 1,1 Top
上面的图示是vim一画面一角~他有几个特色要讲:
1.最底下一行说明这个档案的特色,包括138行,共4506字元等等。
2.那个1,1代表目前游标在第一行的第一个字元上。您可以看到第一行有个游标的存在啊!
3.那个Top则表示,这个画面是整个档案的最上方!
至少就有这些资讯。而在您移动游标时,那个1,1的游标定位也会跟着变动,是否很方便啊!好了,底下我们就来谈一谈其他vim的用法吧!
小标题的图示区块选择(Visual Block)
刚刚我们提到的简单的vi操作过程中,几乎提到的都是以行为单位的操作。那么如果我想要搞定的是一个区块范围呢?举例来说,像底下这种格式的档案:
192.168.1.1 host1.class.net
192.168.1.2 host2.class.net
192.168.1.3 host3.class.net
192.168.1.4 host4.class.net
.....中间省略......
这个档案我将他放置到http://linux.vbird.org/linux_basic/0310vi/hosts ,您可以自行下载来看一看这个档案啊!如果我想要复制的只是前面的IP数字部分,后面的主机名称部分就不给他复制,那怎么办?这个时候就得需要使用区块选择(Visual Block)的功能了。当我们按下v或者V或者[Ctrl]+v时,这个时候游标移动过的地方就会开始反白,这三个按键的意义分别是:
区块选择的按键意义
v字元选择,会将游标经过的地方反白选择!
V行选择,会将游标经过的行反白选择!
[Ctrl]+v区块选择,可以用长方形的方式选择资料
y将反白的地方复制起来
d将反白的地方删除掉
我们以上面的IP对应主机名称为范例,如果想要复制的是IP的话,而且仅想要前面四行,那么我可以:
1.将游标移动到第一行的第一个字元( 1G );
2.然后按下[Ctrl]+v (按着[ctrl]不放,再按下v );
3.然后移动方向键,向下向右移动数格,让整个反白区域涵盖191.168.1.1到192.168.1.4 ;
4.按下y复制(此时反白会自动的不见) ;
5.移动到任何想要插入的区域,按下p就可以插入刚刚复制的区块内容!举例来说,移动到第1行的第13个字元处按下小写的p ,看看会怎样?
这个区块选择在已经格式的档案中,就会显的很有帮助喔!尤其是我们想要大量复制其中一个区块,而不是整行复制的场合中,就会很有用的啦!
小标题的图示多档案编辑
假设一个例子,你想要将刚刚我们的hosts内的IP复制到您的/etc/hosts这个档案去,那么该如何编辑?我们知道在vi内可以使用:r filename来读入某个档案的内容,不过,这样毕竟是将整个档案读入啊!如果我只是想要部分内容呢?呵呵!这个时候多档案同时编辑就很有用了。我们可以使用vim后面同时接好几个档案来同时开启喔!相关的按键有:
多档案编辑的按键
:n编辑下一个档案
:N编辑上一个档案
:files列出目前这个vim的开启的所有档案
这个功能也很棒啊!现在您可以做一下练习看看说!假设您要将刚刚鸟哥提供的hosts内的IP复制到您的/etc/hosts档案内,那可以怎么进行呢?可以这样啊:
[root@linux ~]# vi hosts /etc/hosts
#在这个档案中利用上个小节提到的区块选择,按下[ctrl]+v来进行区块选择,并复制。
#然后按下:n在指令列的地方输入这玩意儿,就会转到下一个档案去,这个时候,
#就可以按下p将刚刚复制的IP给贴到您的档案中啰!如果您按下:files ,则:
192.168.1.4 host4.class.net
192.168.1.5 host5.class.net
~
~
:files
1 %a "hosts" line 1
2 # "/etc/hosts" line 1
Hit ENTER or type command to continue
#看到否?在指令列输入:files就可以显示目前所编辑的档案资讯啰!
看到了吧?利用多档案编辑的功能,可以让您很快速的就将需要的资料复制到正确的档案内。当然啰,这个功能也可以利用视窗介面来达到,那就是底下要提到的多视窗功能。
小标题的图示多视窗功能
想像两个情况:
*当我有一个档案非常的大,我查阅到后面的资料时,想要『对照』前面的资料,是否需要使用[ctrl]+f与[ctrl]+b来跑前跑后查阅?
*我有两个需要对照着看的档案,不想使用前一小节提到的多档案编辑功能;
这样的情况下,开一个vim里头有两个视窗的环境,就有需要啦!那么如何开启新视窗呢?很简单啊!在指令列模式输入:『:sp {filename}』,那个filename可有可无,如果想要在新视窗启动另一个档案,就加入档名,否则仅输入:sp时,出现的则是同一个档案在两个视窗间!例如鸟哥使用vim hosts后,再以:sp /etc/hosts ,结果出现如下图示:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.1.11 vbird-work
192.168.1.2 vbird-server
~
/etc/hosts 5,1 All
192.168.1.1 host1.class.net
192.168.1.2 host2.class.net
192.168.1.3 host3.class.net
192.168.1.4 host4.class.net
192.168.1.5 host5.class.net
hosts 1,1 Top
怎样?帅吧!两个档案同时在一个萤幕上面显示,您还可以利用『[ctrl]+w+j』及『[ctrl]+w+k』在两个视窗之间移动呢!这样的话,复制啊、查阅啊等等的,就变的很简单啰~指令的功能有很多,不过,您只要记得这几个就好了:
多视窗情况下的按键功能
:sp [filename]开启一个新视窗,如果有加filename,表示在新视窗开启一个新档案,否则表示两个视窗为同一个档案内容(同步显示)。
[ctrl]+wj按键的按法是:先按下[ctrl]不放,再按下w后放开所有的按键,然后再按下j ,则游标可移动到下方的视窗。
[ctrl]+wk同上,不过游标移动到上面的视窗。
[ctrl]+wq其实就是:q结束离开啦!举例来说,如果我想要结束下方的视窗,那么利用[ctrl]+wj移动到下方视窗后,按下:q即可离开,也可以按下[ctrl]+wq啊!
(vim多窗口编辑,在vim末行模式下输入sp filename,会开启一个新窗口载入filename档案,若未指定filename则是载入当前档案,[ctrl+w]+↓/[ctrl+w]+↑进行窗口的上下切换)
vim环境设定(创建./.vimrc, 里面输入命令,如set nu, set statusline+=%f)
vim中命令模式下输入v进行区块选择(用作复制,粘贴等), V进行行选择, ctrl+v进行列模式的区域选择(great)
vim中Ctrl+v进入列模式,然后在列模式下可以进行列删除(x),列添加(shift+i[insert]-输入添加数据-两次esc键即可)
1. 记住三种编辑模式
命令模式:所有模式下esc进入该模式
输入模式:命令模式下输入i(或其他)进入该模式
末行模式:命令模式下输入:进入该模式
2. 末行模式下
输入w进行保存
输入q进行退出
在后面加上!代表强制
如wq!表示强制保存并退出
w test表示保存/另存为test文件
e! 不保存修改,重新加载修改前状态(或者使用e命令来载入其他文档或新建文档e demo/e newfile)
f 显示当前文档信息(包含文档名)
3. ctrl+F 向前翻一页
ctrl+B 向后翻一页
^或HOME 跳到行首
$或END 跳到行尾
set nu 显示行号
set nonu 不显示行号
1G 跳到第一行
#G 跳到第#行
G 跳到末行
4. 进入输入模式
i 插入
a 附加
o 新插入一行
r 覆盖光标处单个字符
R 覆盖内容,知道输入esc退出
s 替换光标处内容(注意:替换为在该位置覆盖内容,后面内容后移,覆盖为连同后面内容一起覆盖)
5. 命令模式下
u 撤销最后一次操作
#u 撤销最后#次操作
U 撤销所有操作
ctrl+r 恢复操作
x 删除单个字符
#x 删除#个字符
dd 删除所在行
#dd 删除所在行以下的#行
注:删除操作都可以作为剪切操作,内容放入vi缓冲区,使用p进行粘贴
yy 复制当前行内容到vi缓冲区
#yy 复制当前行以下的#行到缓冲区
按v进入光标选择状态,左右上下键进行区域选择,然后可以x(剪切)或y(复制),再p进行粘贴
yw 复制当前光标所在位置到单词尾字符的内容到缓冲区,若从单词头则相当于复制整个单词
#yw 复制当前光标位置到#个单词的尾字符到缓冲区
y^ 复制光标所在位置到行首的内容到缓冲区
y$ 复制光标所在位置到行尾内容到缓冲区
p 把缓冲区内容粘贴到光标之后
P 把缓冲区内容粘贴到光标之前
6. 末行模式下
------------搜索------------
/string 从上至下查找string字符串
?string 从下至上查找string字符串
------------替换------------
:s/old/new 用new替换当前行中首次出现的old
:s/old/new/g 用new替换当前行中所有出现的old
:#,#s/old/new 用new替换从第#行到第#行每行首次出现的old
:#,#s/old/new/g 用new替换从第#行到第#行所有出现的old
:%s/old/new 用new替换整篇中所有行首次出现的old
:%s/old/new/g 用new替换整篇中的所有old
:s/old/new/gi 用new替换当前行中所有出现的old,old不区分大小写
------------复制/剪切------------
:#,#d 从第#行到第#行剪切
:#,#y 从第#行到第#行复制
n1 第n1行
n1,(或n1,$) 第n1行到最后一行
n1, n2 第n1行到第n2行
引用
vim使用详解
vim使用详解
转自:http://linux.vbird.org
2008年7月25日
感觉鸟歌写的文章详细,通俗,易懂,并且十分实用,先转载这篇供大家一起共享。
vi的使用
基本上vi共分为三种模式,分别是『一般模式』、 『编辑模式』与『指令列命令模式』三种!这三种模式的作用是:
*一般模式:
以vi处理一个档案的时后,一进入该档案就是一般模式了。在这个模式中,你可以使用『上下左右』按键来移动游标,您可以使用『删除字元』或『删除整行』来处理档案内容,也可以使用『复制、贴上』来处理您的文件资料。
*编辑模式:
在一般模式中可以处理删除、复制、贴上等等的动作,但是却无法编辑的!要等到您按下『i, I, o, O, a, A, r, R』等字母之后才会进入编辑模式。注意了!通常在Linux中,按下上述的字母时,在画面的左下方会出现『 INSERT或REPLACE 』的字样,才可以输入任何字来输入到您的档案中!而如果要回到一般模式时,则必须要按下『Esc』这个按键即可退出编辑模式。
*指令列命令模式:
在一般模式当中,输入『 :或/或? 』就可以将游标移动到最底下那一行,在这个模式当中,可以提供您『搜寻资料』的动作,而读取、存档、大量取代字元、离开vi 、显示行号等等的动作则是在此模式中达成的!
简单的说,我们可以将这三个模式想成底下的图示来表示之:
vi三种模式的相互关系
图一、 vi三种模式的相互关系
闲话不多说,我们底下以一个简单的例子来进行说明吧!
小标题的图示简易执行范例
我们怎么使用vi建立一个档名为test.txt的资料呢?也是很简单的啦,整个步骤可以是这样:
1.使用vi进入一般模式;
[root@linux ~]# vi test.txt
直接输入『 vi档名』即可进入vi了!如下图所示,左下角还会显示这个档案目前的状态!如果是新建档案会显示[New File],如果是已存在的档案,则会显示目前的档名、行数与字元数,例如:『"/etc/man.config" 145L, 4614C』
利用vi开启一个档案
图二、利用vi开启一个档案
2.按下i进入编辑模式,开始编辑文字;
在一般模式之中,只要按下I, o, a等字元,就可以进入编辑模式了!在编辑模式当中,您可以发现在左下角会出现–INSERT-的画面,那就是可以输入任意字元的提示啰!这个时候,键盘上除了[Esc]这个按键之外,其他的按键都可以视作为一般的输入按钮了,所以您可以进行任何的编辑啰! (注:在vi里面, [tab]这个按钮所得到的结果与空白字元所得到的结果是不一样的,特别强调一下! )
进入vi的编辑模式
图三、进入vi的编辑模式
3.按下[ESC]按钮回到一般模式;
好了,假设我已经按照上面的样式给他编辑完毕了,那么应该要如何退出呢?是的!没错!就是给他按下[Esc]这个按钮即可!马上你就会发现画面左下角的– INSERT –不见了!
4.在一般模式中按下:wq储存后离开vi !
OK,我们要存档了,存档并离开的指令很简单,输入『:wq』即可存档离开! (注意了,按下:该游标就会移动到最底下一行去!)这时你在提示字元后面输入『 ls -l 』即可看到我们刚刚建立的test.txt档案啦!整个图示有点像底下这样:
利用vi储存档案
图四、利用vi储存档案
如此一来,您的档案test.txt就已经建立起来啰!很简单吧!需要注意的是,如果您的档案权限不对,例如为-r--r--r--时,那么可能会无法写入,那么可以使用『强制写入』的方式吗?可以!使用『:wq!』多加一个惊叹号即可!不过,需要特别注意呦!那个是在『您的权限可以改变』的情况下才能成立的!关于权限的概念,请参考一下Linux的档案权限概念啰!
小标题的图示命令列内容说明
如前所述,所谓的命令列或命令模式,就是在最下面一行没有显示『--INSERT--』或者『--REPLACE--』字样的时候。通常在命令列中的指令有下面几种:(注意,当按下『:』时,游标会自动移动到萤幕的最下面一行!)
一般模式:移动游标的方法
h或向左方向键(←)
游标向左移动一个字元
j或向下方向键(↓)
游标向下移动一个字元
k或向上方向键(↑)
游标向上移动一个字元
l或向右方向键(→)
游标向右移动一个字元
如果想要进行多次移动的话,例如向下移动30行,可以使用"30j"或"30↓"的组合按键,亦即加上想要进行的次数(数字)后,按下动作即可!
[Ctrl] + [f]
萤幕『向下』移动一页,相当于[Page Down]按键(常用)
[Ctrl] +
萤幕『向上』移动一页,相当于[Page Up]按键(常用)
[Ctrl] + [d]
萤幕『向下』移动半页
[Ctrl] +
萤幕『向上』移动半页
+
游标移动到非空白字元的下一列
-
游标移动到非空白字元的上一列
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行(常用)
一般模式:搜寻与取代
/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)是否需要取代! (常用)
一般模式:删除、复制与贴上
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则为贴在游标上一行!举例来说,我目前游标在第20行,且已经复制了10行资料。则按下p后,那10行资料会贴在原本的20行之后,亦即由21行开始贴。但如果是按下P呢?那么原本的第20行会被推到变成30行。 (常用)
J
将游标所在列与下一列的资料结合成同一列
c
重复删除多个资料,例如向下删除10行,[ 10cj ]
u
复原前一个动作。 (常用)
[Ctrl]+r
重做上一个动作。 (常用)
这个u与[Ctrl]+r是很常用的指令!一个是复原,另一个则是重做一次~利用这两个功能按键,您的编辑,嘿嘿!很快乐的啦!
.
不要怀疑!这就是小数点!意思是重复前一个动作的意思。如果您想要重复删除、重复贴上等等动作,按下小数点『.』就好了! (常用)
进入编辑模式
i, I
插入:在目前的游标所在处插入输入之文字,已存在的文字会向后退;其中, i为『从目前游标所在处插入』, I为『在目前所在行的第一个非空白字元处开始插入』。 (常用)
a, A
a为『从目前游标所在的下一个字元处开始插入』, A为『从游标所在行的最后一个字元处开始插入』。 (常用)
o, O
这是英文字母o的大小写。 o为『在目前游标所在的下一行处插入新的一行』; O为在目前游标所在处的上一行插入新的一行! (常用)
r, R
取代:r会取代游标所在的那一个字元;R会一直取代游标所在的文字,直到按下ESC为止;(常用)
上面这些按键中,在vi画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。由名称就知道该动作了吧! !特别注意的是,我们上面也提过了,你想要在档案里面输入字元时,一定要在左下角处看到INSERT/REPLACE才能输入喔!
Esc
退出编辑模式,回到一般模式中(常用)
指令列命令模式
: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相反,为取消行号!
特别注意,在vi中,『数字』是很有意义的!数字通常代表重复做几次的意思!也有可能是代表去到第几个什么什么的意思。举例来说,要删除50行,则是用『50dd』对吧!数字加在动作之前~那我要向下移动20行呢?那就是『20j』或者是『20↓』即可。
OK!会这些指令就已经很厉害了,因为常用到的指令也只有不到一半!通常vi的指令除了上面鸟哥注明的常用的几个外,其他是不用背的,你可以做一张简单的指令表在你的萤幕墙上,一有疑问可以马上的查询呦!
小标题的图示一个案例练习
来来来!测试一下您是否已经熟悉vi这个指令呢?请依照底下的需求进行您的指令动作。 (底下的操作为使用FC4的预设档案来进行练习的。您可以在这里下载: http://linux.vbird.org/linux_basic/0310vi/man.config。)看看您的显示结果与鸟哥的结果是否相同啊? !
1.请在/tmp这个目录下建立一个名为vitest的目录;
2.进入vitest这个目录当中;
3.将/etc/man.config拷贝到本目录底下(或由上述的连结下载man.config档案);
4.使用vi开启本目录下的man.config这个档案;
5.在vi中设定一下行号;
6.移动到第58行,向右移动40个字元,请问您看到的双引号内是什么目录?
7.移动到第一行,并且向下搜寻一下『 bzip2 』这个字串,请问他在第几行?
8.接着下来,我要将50到100行之间的man改为MAN,并且一个一个挑选是否需要修改,如何下达指令?
9.修改完之后,突然反悔了,要全部复原,有哪些方法?
10.我要复制51到60行这十行的内容,并且贴到最后一行之后;
11.删除11到30行之间的20行;
12.将这个档案另存成一个man.test.config的档名;
13.去到第29行,并且删除15个字元;
14.储存后离开吧!
整个步骤可以如下显示:
1. 『mkdir /tmp/vitest』
2. 『cd /tmp/vitest』
3. 『cp /etc/man.config .』
4. 『vi man.config』
5. 『:set nu』
6.先按下『58G』再按下『40→』会看到『/dir/bin/foo』这个字样在双引号内;
7.先执行『1G』或『gg』后,直接输入『/bzip2』,则会去到第116行才对!
8.直接下达『 :50100s/man/MAN/gc 』即可!
9. (1)简单的方法可以一直按『 u 』回复到原始状态,(2)使用不储存离开『 :q! 』之后,再重新读取一次该档案;
10. 『51G』然后再『 10yy 』之后按下『 G 』到最后一行,再给他『 p 』贴上十行!
11. 『11G』之后,再给他『 20dd 』即可删除20行了;
12. :w man.test.config
13. 『29G』之后,再给他『 15x 』即可删除15个字元;
14. 『:wq!』
如果您的结果都可以查的到,那么vi的使用上面应该没有太大的问题啦!剩下的问题会是在…..打字练习…。
小标题的图示关于档案的回复与暂存档
另外,其实vi是具有『可回复』功能的呢!那么vi凭什么帮我们进行回复的功能呢?很简单啊!凭暂存档啊!举例来说,当我们编辑一个档案时,假设名称为 /tmp/passwd ,那么在这个/tmp底下就会有一个暂存档案,档名为『 /tmp/.passwd.swp 』,这是一个隐藏档,我们所进行的一些修改都会暂时存在这个档案当中,万一在档案修改过程中,系统挂了,那么下次你再重新vi /tmp/passwd时,系统就会告诉您,是否需要回复『Recovery 』成修改过程中的模样?如果您按下(R) ,嘿嘿!就可以将资料回复到修改过程的样子,而不是原始档案啰!这是个很有用的功能喔! ^_^
这也就是说,如果有一天,您去/tmp底下,执行ls -al时,发现到底下有两个档案,档名分别为passwd与.passwd.swp的话,那么(1)可能有人在编辑这个档案; (2)之前您在编辑这个档案时,因为某些不知名的因素导致vi程式中断,则该暂存档就会存在。如果是状态(2) ,则此时您可以将该.passwd.swp档案删除,或者是,直接vi /tmp/passwd ,在vi出现是否回复时,选择回复,然后储存更新/tmp/passwd ,之后再将这个/tmp/.passwd.swp档案删除即可!如果不删除的话,那么每次编辑这个档案,都会告知您该档案有问题啊! @_@
大标题的图示vim的额外功能
其实,目前大部分的distributions都以vim取代vi的功能了!如果您使用vi后,却看到画面的右下角有显示目前游标所在的行列号码,那么您的vi已经被vim所取代啰~为什么要用vim呢?因为vim具有颜色显示的功能,并且还支援许多的程式语法(syntax),因此,当您使用vim编辑程式时(不论是C语言,还是shell script ),我们的vim将可帮您直接进行『程式除错(debug)』的功能!真的很不赖吧! ^_^
如果您在文字模式下,输入alias时,出现这样的画面:
[root@linux ~]# alias
alias vi='vim'
这表示当您使用vi这个指令时,其实就是执行vim啦!如果您没有这一行,那么您就必须要使用vim filename来启动vim啰!基本上, vim的一般用法与vi完全一模一样~没有不同啦!那么我们就来看看vim的画面是怎样啰!假设我想要编辑/etc/man.config ,则输入『vim /etc/man.config』
#
# Generated automatically from man.conf.in by the
# configure script.
#
# man.conf from man-1.5p
#
# For more information about this file, see the man pages man(1)
# and man.conf(5).
"man.config" 138L, 4506C 1,1 Top
上面的图示是vim一画面一角~他有几个特色要讲:
1.最底下一行说明这个档案的特色,包括138行,共4506字元等等。
2.那个1,1代表目前游标在第一行的第一个字元上。您可以看到第一行有个游标的存在啊!
3.那个Top则表示,这个画面是整个档案的最上方!
至少就有这些资讯。而在您移动游标时,那个1,1的游标定位也会跟着变动,是否很方便啊!好了,底下我们就来谈一谈其他vim的用法吧!
小标题的图示区块选择(Visual Block)
刚刚我们提到的简单的vi操作过程中,几乎提到的都是以行为单位的操作。那么如果我想要搞定的是一个区块范围呢?举例来说,像底下这种格式的档案:
192.168.1.1 host1.class.net
192.168.1.2 host2.class.net
192.168.1.3 host3.class.net
192.168.1.4 host4.class.net
.....中间省略......
这个档案我将他放置到http://linux.vbird.org/linux_basic/0310vi/hosts ,您可以自行下载来看一看这个档案啊!如果我想要复制的只是前面的IP数字部分,后面的主机名称部分就不给他复制,那怎么办?这个时候就得需要使用区块选择(Visual Block)的功能了。当我们按下v或者V或者[Ctrl]+v时,这个时候游标移动过的地方就会开始反白,这三个按键的意义分别是:
区块选择的按键意义
v字元选择,会将游标经过的地方反白选择!
V行选择,会将游标经过的行反白选择!
[Ctrl]+v区块选择,可以用长方形的方式选择资料
y将反白的地方复制起来
d将反白的地方删除掉
我们以上面的IP对应主机名称为范例,如果想要复制的是IP的话,而且仅想要前面四行,那么我可以:
1.将游标移动到第一行的第一个字元( 1G );
2.然后按下[Ctrl]+v (按着[ctrl]不放,再按下v );
3.然后移动方向键,向下向右移动数格,让整个反白区域涵盖191.168.1.1到192.168.1.4 ;
4.按下y复制(此时反白会自动的不见) ;
5.移动到任何想要插入的区域,按下p就可以插入刚刚复制的区块内容!举例来说,移动到第1行的第13个字元处按下小写的p ,看看会怎样?
这个区块选择在已经格式的档案中,就会显的很有帮助喔!尤其是我们想要大量复制其中一个区块,而不是整行复制的场合中,就会很有用的啦!
小标题的图示多档案编辑
假设一个例子,你想要将刚刚我们的hosts内的IP复制到您的/etc/hosts这个档案去,那么该如何编辑?我们知道在vi内可以使用:r filename来读入某个档案的内容,不过,这样毕竟是将整个档案读入啊!如果我只是想要部分内容呢?呵呵!这个时候多档案同时编辑就很有用了。我们可以使用vim后面同时接好几个档案来同时开启喔!相关的按键有:
多档案编辑的按键
:n编辑下一个档案
:N编辑上一个档案
:files列出目前这个vim的开启的所有档案
这个功能也很棒啊!现在您可以做一下练习看看说!假设您要将刚刚鸟哥提供的hosts内的IP复制到您的/etc/hosts档案内,那可以怎么进行呢?可以这样啊:
[root@linux ~]# vi hosts /etc/hosts
#在这个档案中利用上个小节提到的区块选择,按下[ctrl]+v来进行区块选择,并复制。
#然后按下:n在指令列的地方输入这玩意儿,就会转到下一个档案去,这个时候,
#就可以按下p将刚刚复制的IP给贴到您的档案中啰!如果您按下:files ,则:
192.168.1.4 host4.class.net
192.168.1.5 host5.class.net
~
~
:files
1 %a "hosts" line 1
2 # "/etc/hosts" line 1
Hit ENTER or type command to continue
#看到否?在指令列输入:files就可以显示目前所编辑的档案资讯啰!
看到了吧?利用多档案编辑的功能,可以让您很快速的就将需要的资料复制到正确的档案内。当然啰,这个功能也可以利用视窗介面来达到,那就是底下要提到的多视窗功能。
小标题的图示多视窗功能
想像两个情况:
*当我有一个档案非常的大,我查阅到后面的资料时,想要『对照』前面的资料,是否需要使用[ctrl]+f与[ctrl]+b来跑前跑后查阅?
*我有两个需要对照着看的档案,不想使用前一小节提到的多档案编辑功能;
这样的情况下,开一个vim里头有两个视窗的环境,就有需要啦!那么如何开启新视窗呢?很简单啊!在指令列模式输入:『:sp {filename}』,那个filename可有可无,如果想要在新视窗启动另一个档案,就加入档名,否则仅输入:sp时,出现的则是同一个档案在两个视窗间!例如鸟哥使用vim hosts后,再以:sp /etc/hosts ,结果出现如下图示:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.1.11 vbird-work
192.168.1.2 vbird-server
~
/etc/hosts 5,1 All
192.168.1.1 host1.class.net
192.168.1.2 host2.class.net
192.168.1.3 host3.class.net
192.168.1.4 host4.class.net
192.168.1.5 host5.class.net
hosts 1,1 Top
怎样?帅吧!两个档案同时在一个萤幕上面显示,您还可以利用『[ctrl]+w+j』及『[ctrl]+w+k』在两个视窗之间移动呢!这样的话,复制啊、查阅啊等等的,就变的很简单啰~指令的功能有很多,不过,您只要记得这几个就好了:
多视窗情况下的按键功能
:sp [filename]开启一个新视窗,如果有加filename,表示在新视窗开启一个新档案,否则表示两个视窗为同一个档案内容(同步显示)。
[ctrl]+wj按键的按法是:先按下[ctrl]不放,再按下w后放开所有的按键,然后再按下j ,则游标可移动到下方的视窗。
[ctrl]+wk同上,不过游标移动到上面的视窗。
[ctrl]+wq其实就是:q结束离开啦!举例来说,如果我想要结束下方的视窗,那么利用[ctrl]+wj移动到下方视窗后,按下:q即可离开,也可以按下[ctrl]+wq啊!
发表评论
-
linux网络流量监控工具: iftop
2011-04-17 18:46 1065主页:http://www.ex-parrot.com ... -
建立NFS共享
2011-04-17 18:41 783服务端: 修改 /etc/exports,增加共享目录 /ex ... -
巧用Linux命令完成统计排序功能
2011-03-11 16:50 874前几天碰到一个问题: ... -
linux 程序运行前后台切换
2011-03-10 21:57 1213Shell支持作用控制,有 ... -
Socket基础知识(建立连接的三次握手,关闭连接的四次握手)
2011-01-27 15:46 7763refer to: http://www.cnitblog.c ... -
关于linux服务器出现大量的Time_WAIT socket连接问题
2011-01-26 18:07 2254修改linux系统/etc/sysctl.conf配置来解决这 ... -
通过修改Linux服务自动启动指定应用程序(涉及运行级别)
2011-01-24 10:16 919转自:http://www.cnblogs.com/inter ... -
linux shell编程if语句内判断参数详解
2011-01-23 21:28 889shell 编程中使用到得if语句内判断参数 –b 当f ... -
【转载】配置开发支持高并发TCP连接的Linux应用程序全攻略
2010-12-15 23:46 877原文见:http://www.cppblog. ... -
命令收集(notepad)
2010-12-07 21:11 7271. grep cat app.log | grep 'ERR ... -
linux上面的sz,rz命令与ssh的配合
2010-09-10 14:16 755问题的提出: 一 ... -
apache动态加载module
2010-08-26 17:58 766From blog: http://fangrn.iteye. ... -
apt命令详解
2010-08-22 16:11 824常用的APT命令参数: apt-cache searc ... -
linux学习网址
2010-08-19 17:09 6811. http://lamp.linux.gov.cn -
jboss部署成为linux服务
2010-08-10 17:00 18291. 创建jboss用户 useradd -m jbos ... -
Shell学习
2010-08-10 14:14 7541. 如何清空一个文件 cat /dev/null &g ... -
关于网络
2010-08-05 10:41 7381. OSI七层协议 物理层,数据链路层,网络层, ... -
关于linux中环境变量的设置
2010-05-10 11:49 803at /etc/profile append the fol ... -
eclipse查看安装-dropins
2010-04-22 14:35 1559Eclipse 3.4插件安装方式 以前安 ... -
ftp命令详解
2010-04-21 16:46 987linux下ftp命令 FTP命令是Internet用户使用 ...
相关推荐
vi 使用手册及详解 vi 编辑器是 Unix 操作系统中的一个基本编辑器,vi 编辑器提供了许多实用的功能和命令,帮助用户快速高效地编辑文件。本文将对 vi 编辑器的使用手册和详解进行介绍,旨在帮助初学者快速掌握 vi ...
vi 使用手册(中文)标准 word 文档 vi 是 UNIX 系统中最基本的编辑器,它提供了一个视窗设备,通过它可以编辑文件。vi 的基本概念可以分为三种操作状态,即命令模式(Command mode)、插入模式(Insert mode)和...
vi使用手册,vi使用手册vi使用手册vi使用手册
《vi使用手册》详细解析 在Linux和Unix操作系统中,vi(Visual Editor)是一种非常流行的文本编辑器。它以其高效和强大的功能深受程序员和系统管理员的喜爱。本手册旨在提供一个简单明了的vi编辑器使用指南,帮助...
Linux中的vi(Visual Editor)是一款强大的文本编辑器,它在各种Unix和类Unix系统中广泛使用,包括Linux。vi编辑器的设计简洁、高效,虽然初学者可能会...希望这份简要的vi使用手册能为你开启Linux文本编辑的新篇章。
《Unix vi使用手册》是一本面向初学者的指南,详细介绍了Unix系统中的vi编辑器的使用方法。vi编辑器是Unix及其类似系统中广泛使用的文本编辑工具,它分为指令模式和输入模式,提供了丰富的文本编辑功能。 在Unix...
### Linux-Vi使用手册知识点详解 #### 一、vi编辑器简介 vi(visual editor)是一种功能强大的全屏幕文本编辑器,在大多数Unix系统以及Linux发行版中都可以找到它。vi编辑器具有两种基本操作模式:命令模式和输入...
### Vi使用手册详解 #### 一、Vi编辑器的基本模式 Vi编辑器是Linux和Unix系统中最常用的文本编辑工具之一,它拥有强大的功能且界面简洁。在启动Vi时,默认会进入命令模式,此模式下可以执行多种命令进行文本操作。...
### Linux/Unix 下 VI 使用手册知识点详解 #### 基本移动操作 - **h l j k**: 分别表示向左、向右、向下、向上移动一个字符。 - **b w**: 向左、向右移动到单词的开头或结尾。 - **e g e**: 移动到单词或标记的末尾...
### vi使用手册知识点详解 #### 一、vi编辑器简介 **vi**(visual editor)是Unix及类Unix系统(如Linux)中一个非常重要的文本编辑器。它具有强大的功能和高度的灵活性,能够帮助用户高效地进行文本编辑工作。本...
vi的详细使用说明以及各种技巧说明 vi的详细使用说明以及各种技巧说明
### VI编辑器使用手册:命令与操作技巧详解 VI(Visual Editor)是Unix及类Unix系统上广泛使用的文本编辑器,其强大而高效的操作模式深受系统管理员和程序员的喜爱。本手册将详细介绍VI编辑器的基本使用方法、命令...
### VI/VIM 使用手册及详解:命令集精解 #### 移动光标与浏览文本 VI/VIM作为一款强大的文本编辑器,提供了多种快捷方式来帮助用户高效地浏览和编辑文本。以下是一些基本的光标移动命令: - **上、下、左、右移动...
### Linux中VI编辑器的使用手册及其指导 对于Linux初学者而言,掌握VI(或VIM)编辑器是一项必备技能。本文将详细解读VI编辑器的基本概念、操作模式及常用命令,帮助用户快速上手。 #### 一、VI编辑器简介 VI...