<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[阿Tim日志]]></title> 
<link>https://atim.cn/index.php</link> 
<description><![CDATA[专业的php开发者.开发团队的带队人]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[阿Tim日志]]></copyright>
<item>
<link>https://atim.cn/post/413/</link>
<title><![CDATA[VI 命令操作]]></title> 
<author>bkkkd &lt;partybase@gmail.com&gt;</author>
<category><![CDATA[linux/unix 命令解释]]></category>
<pubDate>Wed, 06 Aug 2008 09:10:19 +0000</pubDate> 
<guid>https://atim.cn/post/413/</guid> 
<description>
<![CDATA[ 
	<br/>退出Vi&nbsp;&nbsp;<br/><div class="code"><br/>&nbsp;&nbsp;　　当编辑完文件，准备退出Vi返回到shell时，可以使用以下几种方法之一。&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　在命令模式中，连按两次大写字母Z，若当前编辑的文件曾被修改过，则Vi保存该文件后退出，返回到shell；若当前编辑的文件没被修改过，则Vi直接退出,&nbsp;&nbsp; 返回到shell。&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　在末行模式下，输入命令&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　:w&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　Vi保存当前编辑文件，但并不退出，而是继续等待用户输入命令。在使用w命令时，可以再给编辑文件起一个新的文件名。&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　&#91;例6&#93;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　:w&nbsp;&nbsp; newfile&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　此时Vi将把当前文件的内容保存到指定的newfile中，而原有文件保持不变。若newfile是一个已存在的文件，则Vi在显示窗口的状态行给出提示信息：&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　File&nbsp;&nbsp; exists&nbsp;&nbsp; (use&nbsp;&nbsp; !&nbsp;&nbsp; to&nbsp;&nbsp; override)&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　此时，若用户真的希望用文件的当前内容替换newfile中原有内容，可使用命令&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　:w!&nbsp;&nbsp; newfile&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　否则可选择另外的文件名来保存当前文件。&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　在末行模式下，输入命令&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　:q&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　系统退出Vi返回到shell。若在用此命令退出Vi时，编辑文件没有被保存，则Vi在显示窗口的最末行显示如下信息：&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　No&nbsp;&nbsp; write&nbsp;&nbsp; since&nbsp;&nbsp; last&nbsp;&nbsp; change&nbsp;&nbsp; (use&nbsp;&nbsp; !&nbsp;&nbsp; to&nbsp;&nbsp; overrides)&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　提示用户该文件被修改后没有保存，然后Vi并不退出，继续等待用户命令。若用户就是不想保存被修改后的文件而要强行退出Vi时，可使用命令&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　:q!&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　Vi放弃所作修改而直接退到shell下。&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　在末行模式下，输入命令&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　:wq&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　Vi将先保存文件，然后退出Vi返回到shell。&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　在末行模式下，输入命令&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;　　:x&nbsp;&nbsp;<br/>&nbsp;&nbsp;　　该命令的功能同命令模式下的ZZ命令功能相同。 <br/></div><br/><br/>进入vi的命令<br/><div class="code"><br/>vi filename: 打开或新建文件，并将光标置于第一行首<br/><br/>vi +n filename: 打开文件，并将光标置于第n行首<br/><br/>vi + filename: 打开文件，并将光标置于最后一行首<br/><br/>vi +/pattern filename: 打开文件，并将光标置于第一个与pattern匹配的串处<br/><br/>vi -r filename: 在上次正用vi编辑时发生系统崩溃，恢复filename<br/><br/>vi filename....filename: 打开多个文件，依次进行编辑 <br/></div><br/><br/>移动光标类命令<br/><div class="code"><br/>h: 光标左移一个字符<br/><br/>l: 光标右移一个字符<br/><br/>space: 光标右移一个字符<br/><br/>Backspace: 光标左移一个字符<br/><br/>k或Ctrl+p: 光标上移一行<br/><br/>j或Ctrl+n: 光标下移一行<br/><br/>Enter: 光标下移一行<br/><br/>w或W : 光标右移一个字至字首<br/><br/>b或B : 光标左移一个字至字首<br/><br/>e或E : 光标右移一个字至字尾<br/><br/>): 光标移至句尾<br/><br/>(: 光标移至句首<br/><br/>&#125;: 光标移至段落开头<br/><br/>&#123;: 光标移至段落结尾<br/><br/>nG: 光标移至第n行首<br/><br/>n+: 光标下移n行<br/><br/>n-: 光标上移n行<br/><br/>n$: 光标移至第n行尾<br/><br/>H: 光标移至屏幕顶行<br/><br/>M: 光标移至屏幕中间行<br/><br/>L: 光标移至屏幕最后行<br/><br/>0: 光标移至当前行首<br/><br/>$: 光标移至当前行尾 <br/></div><br/><br/>屏幕翻滚类命令<br/><div class="code"><br/>Ctrl+u: 向文件首翻半屏<br/><br/>Ctrl+d: 向文件尾翻半屏<br/><br/>Ctrl+f: 向文件尾翻一屏<br/><br/>Ctrl＋b: 向文件首翻一屏<br/><br/>nz: 将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。 <br/></div><br/><br/>插入文本类命令<br/><div class="code"><br/>i: 在光标前<br/><br/>I: 在当前行首<br/><br/>a: 光标后<br/><br/>A: 在当前行尾<br/><br/>o: 在当前行之下新开一行<br/><br/>O: 在当前行之上新开一行<br/><br/>r: 替换当前字符<br/><br/>R: 替换当前字符及其后的字符，直至按ESC键<br/><br/>s: 从当前光标位置处开始，以输入的文本替代指定数目的字符<br/><br/>S: 删除指定数目的行，并以所输入文本代替之<br/><br/>ncw或nCW: 修改指定数目的字<br/><br/>nCC: 修改指定数目的行 <br/></div><br/><br/>删除命令<br/><div class="code"><br/>ndw或ndW: 删除光标处开始及其后的n-1个字<br/><br/>do: 删至行首<br/><br/>d$: 删至行尾<br/><br/>ndd: 删除当前行及其后n-1行<br/><br/>x或X: 删除一个字符，x删除光标后的，而X删除光标前的<br/><br/>Ctrl+u: 删除输入方式下所输入的文本 <br/><br/>1,$d: 删除全文<br/></div><br/><br/>搜索及替换命令<br/><div class="code"><br/>/pattern: 从光标开始处向文件尾搜索pattern<br/>?pattern: 从光标开始处向文件首搜索pattern<br/>n: 在同一方向重复上一次搜索命令<br/>N: 在反方向上重复上一次搜索命令<br/>:s/p1/p2/g: 将当前行中所有p1均用p2替代<br/>:n1,n2s/p1/p2/g: 将第n1至n2行中所有p1均用p2替代<br/>:g/p1/s//p2/g: 将文件中所有p1均用p2替换<br/></div><br/><br/>选项设置<br/><div class="code"><br/>all: 列出所有选项设置情况<br/><br/>term: 设置终端类型<br/><br/>ignorance: 在搜索中忽略大小写<br/><br/>list: 显示制表位(Ctrl+I)和行尾标志($)<br/><br/>number: 显示行号<br/><br/>report: 显示由面向行的命令修改过的数目<br/><br/>terse: 显示简短的警告信息<br/><br/>warn: 在转到别的文件时若没保存当前文件则显示NO write信息<br/><br/>nomagic: 允许在搜索模式中，使用前面不带“&#92;”的特殊字符<br/><br/>nowrapscan: 禁止vi在搜索到达文件两端时，又从另一端开始<br/><br/>mesg: 允许vi显示其他用户用write写到自己终端上的信息 <br/></div><br/><br/>最后行方式命令<br/><div class="code"><br/>:n1,n2 co n3: 将n1行到n2行之间的内容拷贝到第n3行下<br/>:n1,n2 m n3:将n1行到n2行之间的内容移至到第n3行下<br/>:n1,n2 d: 将 n1行到n2行之间的内容删除<br/>:w: 保存当前文件<br/>:e filename: 打开文件filename进行编辑<br/>:x: 保存当前文件并退出<br/>:q: 退出vi<br/>:q!: 不保存文件并退出vi<br/>:!command: 执行shell命令command<br/>:n1,n2 w!command: 将文件中n1行至n2行的内容作为command的输入并执行之，<br/> 若不指定n1，n2，则表示将整个文件内容作为command的输入<br/>:r!command: 将命令command的输出结果放到当前行<br/></div><br/><br/>寄存器操作<br/><div class="code"><br/>&quot;?nyy: 将当前行及其下n行的内容保存到寄存器？中，其中?为一个字母，n为一个数字<br/><br/>&quot;?nyw: 将当前行及其下n个字保存到寄存器？中，其中?为一个字母，n为一个数字<br/><br/>&quot;?nyl: 将当前行及其下n个字符保存到寄存器？中，其中?为一个字母，n为一个数字<br/><br/>&quot;?p: 取出寄存器？中的内容并将其放到光标位置处。这里？可以是一个字母，也可以是一个数字<br/><br/>ndd: 将当前行及其下共n行文本删除，并将所删内容放到1号删除寄存器中 <br/></div>
]]>
</description>
</item><item>
<link>https://atim.cn/post/413/#blogcomment5031</link>
<title><![CDATA[[评论] VI 命令操作]]></title> 
<author>KANDARI &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Sun, 26 Feb 2012 18:29:15 +0000</pubDate> 
<guid>https://atim.cn/post/413/#blogcomment5031</guid> 
<description>
<![CDATA[ 
	学习了！
]]>
</description>
</item>
</channel>
</rss>