﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-zheng's footprint-文章分类-linux</title><link>http://www.blogjava.net/alex-zheng/category/47197.html</link><description>---on my way</description><language>zh-cn</language><lastBuildDate>Mon, 29 Nov 2010 01:25:15 GMT</lastBuildDate><pubDate>Mon, 29 Nov 2010 01:25:15 GMT</pubDate><ttl>60</ttl><item><title>vim基本命令</title><link>http://www.blogjava.net/alex-zheng/articles/339269.html</link><dc:creator>alex_zheng</dc:creator><author>alex_zheng</author><pubDate>Sun, 28 Nov 2010 14:02:00 GMT</pubDate><guid>http://www.blogjava.net/alex-zheng/articles/339269.html</guid><wfw:comment>http://www.blogjava.net/alex-zheng/comments/339269.html</wfw:comment><comments>http://www.blogjava.net/alex-zheng/articles/339269.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/alex-zheng/comments/commentRss/339269.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/alex-zheng/services/trackbacks/339269.html</trackback:ping><description><![CDATA[正在学习传说中的神器vim，以下内容转载自<a href="http://www.cnblogs.com/hlz789456123/archive/2009/03/19/1417193.html">http://www.cnblogs.com/hlz789456123/archive/2009/03/19/1417193.html</a><br />
<br />
vi编辑器是所有
Unix及Linux系统下标准的编辑器，它的强大不逊色于任何最新的文本编辑器，这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及
Linux系统的任何版本，vi编辑器是完全相同的，因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器，学会它
后，您将在Linux的世界里畅行无阻。<br />
<br />
1、vi的基本概念<br />
基本上vi可以分为三种状态，分别是命令模式（command mode）、插入模式（Insert mode）和底行模式（last line mode），各模式的功能区分如下：<br />
<br />
1) 命令行模式command mode）<br />
<br />
控制屏幕光标的移动，字符、字或行的删除，移动复制某区段及进入Insert mode下，或者到 last line mode。<br />
<br />
2) 插入模式（Insert mode）<br />
<br />
只有在Insert mode下，才可以做文字输入，按「ESC」键可回到命令行模式。<br />
<br />
3) 底行模式（last line mode）<br />
<br />
将文件保存或退出vi，也可以设置编辑环境，如寻找字符串、列出行号&#8230;&#8230;等。<br />
<br />
不过一般我们在使用时把vi简化成两个模式，就是将底行模式（last line mode）也算入命令行模式command mode）。<br />
<br />
2、vi的基本操作<br />
a) 进入vi<br />
<br />
在系统提示符号输入vi及文件名称后，就进入vi全屏幕编辑画面：<br />
<br />
$ vi myfile<br />
<br />
<br />
不过有一点要特别注意，就是您进入vi之后，是处于「命令行模式（command mode）」，您要切换到「插入模式（Insert
mode）」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标，结果电脑一直哔哔叫，把自己气个半死，所以进入vi后，先不要乱动，转换到
「插入模式（Insert mode）」再说吧！<br />
<br />
b) 切换至插入模式（Insert mode）编辑文件<br />
<br />
在「命令行模式（command mode）」下按一下字母「i」就可以进入「插入模式（Insert mode）」，这时候你就可以开始输入文字了。<br />
<br />
c) Insert 的切换<br />
<br />
您目前处于「插入模式（Insert mode）」，您就只能一直输入文字，如果您发现输错了字！想用光标键往回移动，将该字删除，就要先按一下「ESC」键转到「命令行模式（command mode）」再删除文字。<br />
<br />
d) 退出vi及保存文件<br />
<br />
在「命令行模式（command mode）」下，按一下「：」冒号键进入「Last line mode」，例如：<br />
<br />
: w filename （输入 「w filename」将文章以指定的文件名filename保存）<br />
<br />
: wq (输入「wq」，存盘并退出vi)<br />
<br />
: q! (输入q!， 不存盘强制退出vi)<br />
<br />
<br />
3、命令行模式（command mode）功能键<br />
1）. 插入模式<br />
<br />
按「i」切换进入插入模式「insert mode」，按&#8220;i&#8221;进入插入模式后是从光标当前位置开始输入文件；<br />
<br />
按「a」进入插入模式后，是从目前光标所在位置的下一个位置开始输入文字；<br />
<br />
按「o」进入插入模式后，是插入新的一行，从行首开始输入文字。<br />
<br />
2）. 从插入模式切换为命令行模式<br />
<br />
按「ESC」键。<br />
<br />
3）. 移动光标<br />
<br />
vi可以直接用键盘上的光标来上下左右移动，但正规的vi是用小写英文字母「h」、「j」、「k」、「l」，分别控制光标左、下、上、右移一格。<br />
<br />
按「ctrl」+「b」：屏幕往&#8220;后&#8221;移动一页。<br />
<br />
按「ctrl」+「f」：屏幕往&#8220;前&#8221;移动一页。<br />
<br />
按「ctrl」+「u」：屏幕往&#8220;后&#8221;移动半页。<br />
<br />
按「ctrl」+「d」：屏幕往&#8220;前&#8221;移动半页。<br />
<br />
按数字「0」：移到文章的开头。<br />
<br />
按「G」：移动到文章的最后。<br />
<br />
按「$」：移动到光标所在行的&#8220;行尾&#8221;。<br />
<br />
按「^」：移动到光标所在行的&#8220;行首&#8221;<br />
<br />
按「w」：光标跳到下个字的开头<br />
<br />
按「e」：光标跳到下个字的字尾<br />
<br />
按「b」：光标回到上个字的开头<br />
<br />
按「#l」：光标移到该行的第#个位置，如：5l,56l。<br />
<br />
4）. 删除文字<br />
<br />
「x」：每按一次，删除光标所在位置的&#8220;后面&#8221;一个字符。<br />
<br />
「#x」：例如，「6x」表示删除光标所在位置的&#8220;后面&#8221;6个字符。<br />
<br />
「X」：大写的X，每按一次，删除光标所在位置的&#8220;前面&#8221;一个字符。<br />
<br />
「#X」：例如，「20X」表示删除光标所在位置的&#8220;前面&#8221;20个字符。<br />
<br />
「dd」：删除光标所在行。<br />
<br />
「#dd」：从光标所在行开始删除#行<br />
<br />
5）. 复制<br />
<br />
「yw」：将光标所在之处到字尾的字符复制到缓冲区中。<br />
<br />
「#yw」：复制#个字到缓冲区<br />
<br />
「yy」：复制光标所在行到缓冲区。<br />
<br />
「#yy」：例如，「6yy」表示拷贝从光标所在的该行&#8220;往下数&#8221;6行文字。<br />
<br />
「p」：将缓冲区内的字符贴到光标所在位置。注意：所有与&#8220;y&#8221;有关的复制命令都必须与&#8220;p&#8221;配合才能完成复制与粘贴功能。<br />
<br />
6）. 替换<br />
<br />
「r」：替换光标所在处的字符。<br />
<br />
「R」：替换光标所到之处的字符，直到按下「ESC」键为止。<br />
<br />
7）. 回复上一次操作<br />
<br />
「u」：如果您误执行一个命令，可以马上按下「u」，回到上一个操作。按多次&#8220;u&#8221;可以执行多次回复。<br />
<br />
8）. 更改<br />
<br />
「cw」：更改光标所在处的字到字尾处<br />
<br />
「c#w」：例如，「c3w」表示更改3个字<br />
<br />
9）. 跳至指定的行<br />
<br />
「ctrl」+「g」列出光标所在行的行号。<br />
<br />
「#G」：例如，「15G」，表示移动光标至文章的第15行行首。<br />
<br />
4、Last line mode下命令简介<br />
在使用「last line mode」之前，请记住先按「ESC」键确定您已经处于「command mode」下后，再按「：」冒号即可进入「last line mode」。<br />
<br />
A) 列出行号<br />
<br />
「set nu」：输入「set nu」后，会在文件中的每一行前面列出行号。<br />
<br />
B) 跳到文件中的某一行<br />
<br />
「#」：「#」号表示一个数字，在冒号后输入一个数字，再按回车键就会跳到该行了，如输入数字15，再回车，就会跳到文章的第15行。<br />
<br />
C) 查找字符<br />
<br />
「/关键字」：先按「/」键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按「n」会往后寻找到您要的关键字为止。<br />
<br />
「?关键字」：先按「?」键，再输入您想寻找的字符，如果第一次找的关键字不是您想要的，可以一直按「n」会往前寻找到您要的关键字为止。<br />
<br />
D) 保存文件<br />
<br />
「w」：在冒号输入字母「w」就可以将文件保存起来。<br />
<br />
E) 离开vi<br />
<br />
「q」：按「q」就是退出，如果无法离开vi，可以在「q」后跟一个「!」强制离开vi。<br />
<br />
「qw」：一般建议离开时，搭配「w」一起使用，这样在退出的时候还可以保存文件。<br />
<br />
5、vi命令列表<br />
1、下表列出命令模式下的一些键的功能：<br />
<br />
h<br />
左移光标一个字符<br />
<br />
l<br />
右移光标一个字符<br />
<br />
k<br />
光标上移一行<br />
<br />
j<br />
光标下移一行<br />
<br />
^<br />
光标移动至行首<br />
<br />
0<br />
数字&#8220;0&#8221;，光标移至文章的开头<br />
<br />
G<br />
光标移至文章的最后<br />
<br />
$<br />
光标移动至行尾<br />
<br />
Ctrl+f<br />
向前翻屏<br />
<br />
Ctrl+b<br />
向后翻屏<br />
<br />
Ctrl+d<br />
向前翻半屏<br />
<br />
Ctrl+u<br />
向后翻半屏<br />
<br />
i<br />
在光标位置前插入字符<br />
<br />
a<br />
在光标所在位置的后一个字符开始增加<br />
<br />
o<br />
插入新的一行，从行首开始输入<br />
<br />
ESC<br />
从输入状态退至命令状态<br />
<br />
x<br />
删除光标后面的字符<br />
<br />
#x<br />
删除光标后的＃个字符<br />
<br />
X<br />
(大写X)，删除光标前面的字符<br />
<br />
#X<br />
删除光标前面的#个字符<br />
<br />
dd<br />
删除光标所在的行<br />
<br />
#dd<br />
删除从光标所在行数的#行<br />
<br />
yw<br />
复制光标所在位置的一个字<br />
<br />
#yw<br />
复制光标所在位置的#个字<br />
<br />
yy<br />
复制光标所在位置的一行<br />
<br />
#yy<br />
复制从光标所在行数的#行<br />
<br />
p<br />
粘贴<br />
<br />
u<br />
取消操作<br />
<br />
cw<br />
更改光标所在位置的一个字<br />
<br />
#cw<br />
更改光标所在位置的#个字<br />
<br />
<br />
2、下表列出行命令模式下的一些指令<br />
w filename<br />
储存正在编辑的文件为filename<br />
<br />
wq filename<br />
储存正在编辑的文件为filename，并退出vi<br />
<br />
q!<br />
放弃所有修改，退出vi<br />
<br />
set nu<br />
显示行号<br />
<br />
/或?<br />
查找，在/后输入要查找的内容<br />
<br />
n<br />
与/或?一起使用，如果查找的内容不是想要找的关键字，按n或向后（与/联用）或向前（与?联用）继续查找，直到找到为止。<br />
<br />
<img src ="http://www.blogjava.net/alex-zheng/aggbug/339269.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/alex-zheng/" target="_blank">alex_zheng</a> 2010-11-28 22:02 <a href="http://www.blogjava.net/alex-zheng/articles/339269.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>