⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0310vi.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
		<li>『vi man.config』
		<li>『:set nu』
		<li>先按下『58G』再按下『40→』会看到『/dir/bin/foo』这个字样在双引号内;
		<li>先执行『1G』或『gg』后,直接输入『/bzip2』,则会去到第 116 行才对!
		<li>直接下达『 :50,100s/man/MAN/gc 』即可!
		<li>(1)简单的方法可以一直按『 u 』回复到原始状态,(2)使用不储存离开『 :q! 』之后,再重新读取一次该档案;
		<li>『51G』 然后再『 10yy 』之后按下『 G 』到最后一行,再给他『 p 』贴上十行!
		<li>『11G』 之后,再给他『 20dd 』即可删除 20 行了;
		<li>:w man.test.config
		<li>『29G』 之后,再给他『 15x 』即可删除 15 个字元;
		<li>『:wq!』

		</ol></font></span>

		如果您的结果都可以查的到,那么 vi 的使用上面应该没有太大的问题啦!剩下的问题会是在┅..打字练习┅。<br><br>
	</div>

	<hr><a name="vi_temp"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>关于档案的回复与暂存档</span><br>
	<div class=block2>

		另外,其实 vi 是具有『可回复』功能的呢!那么 vi 凭什么帮我们进行回复的功能呢?
		很简单啊!凭暂存档啊!举例来说,当我们编辑一个档案时,假设名称为 /tmp/passwd ,
		那么在这个 /tmp 底下就会有一个暂存档案,档名为『 <span class=text_import2><font
		face="细明体">/tmp/.passwd.swp</font></span> 』,这是一个隐藏档,
		我们所进行的一些修改都会暂时存在这个档案当中,万一在档案修改过程中,
		系统挂了,那么下次你再重新 vi /tmp/passwd 时,系统就会告诉您,是否需要回复『Recovery』成修改过程中的模样?
		如果您按下 (R) ,嘿嘿!就可以将资料回复到修改过程的样子,而不是原始档案棉!
		这是个很有用的功能喔! ^_^<br><br>

		这也就是说,如果有一天,您去 /tmp 底下,执行 ls -al 时,发现到底下有两个档案,
		档名分别为 passwd 与 .passwd.swp 的话,那么 <span class=text_import2>(1) 可能有人在编辑这个档案; 
		(2) 之前您在编辑这个档案时,因为某些不知名的因素导致 vi 程式中断,则该暂存档就会存在。</span>
		如果是状态 (2) ,则此时您可以将该 .passwd.swp 档案删除,或者是,直接 vi /tmp/passwd ,
		在 vi 出现是否回复时,选择回复,然后储存更新 /tmp/passwd ,之后再将这个 /tmp/.passwd.swp 档案删除即可!
		如果不删除的话,那么每次编辑这个档案,都会告知您该档案有问题啊! @_@<br><br>
	</div>
</div>

<hr><a NAME="vim"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">vim 的额外功能</span><br>
<div class=block1>
	其实,目前大部分的 distributions 都以 vim 取代 vi 的功能了!
	如果您使用 vi 后,却看到画面的右下角有显示目前游标所在的行列号码,
	那么您的 vi 已经被 vim 所取代棉~
	为什么要用 vim 呢?因为 vim 具有颜色显示的功能,并且还支援许多的程式语法 (syntax),
	因此,当您使用 vim 编辑程式时( 不论是 C 语言,还是 shell script ),
	我们的 vim 将可帮您直接进行『程式除错 (debug)』的功能!真的很不赖吧!^_^<br><br>

	如果您在文字模式下,输入 alias 时,出现这样的画面∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>alias</span>
alias vi='vim'
</pre></td></tr></table>

	这表示当您使用 vi 这个指令时,其实就是执行 vim 啦!如果您没有这一行,那么您就必须要使用 vim filename 
	来启动 vim 棉!基本上, vim 的一般用法与 vi 完全一模一样~没有不同啦!那么我们就来看看 vim 
	的画面是怎样棉!假设我想要编辑 /etc/man.config ,则输入『<span class=text_import2>vim /etc/man.config</span>』<br>

<table class="term"><tr><td class="term"><pre>
<span style="background-color:white; color:black">#</span>
# 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).
<span class=term_write>"man.config" 138L, 4506C                               1,1          Top</span>
</pre></td></tr></table>

	上面的图示是 vim 一画面一角~他有几个特色要讲∶<ol>
	<li>最底下一行说明这个档案的特色,包括 138 行,共 4506 字元等等。
	<li>那个 1,1 代表目前游标在第一行的第一个字元上。您可以看到第一行有个游标的存在啊!
	<li>那个 Top 则表示,这个画面是整个档案的最上方!</ol>
	至少就有这些资讯。而在您移动游标时,那个 1,1 的游标定位也会跟著变动,是否很方便啊!
	好了,底下我们就来谈一谈其他 vim 的用法吧!<br><br>

	<hr><a name="vim_v"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>区块选择(Visual Block)</span><br>
	<div class=block2>
		刚刚我们提到的简单的 vi 操作过程中,几乎提到的都是以行为单位的操作。那么如果我想要搞定的是一个区块范围呢?
		举例来说,像底下这种格式的档案∶<br>

<table class="term"><tr><td class="term"><pre>
<span class=term_write>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
<span class=term_say>.....中间省略......</span></span>
</pre></td></tr></table>

		这个档案我将他放置到 <A href="0310vi/hosts">http://linux.vbird.org/linux_basic/0310vi/hosts</a> 
		,您可以自行下载来看一看这个档案啊!
		如果我想要复制的只是前面的 IP 数字部分,后面的主机名称部分就不给他复制,那怎么办?
		这个时候就得需要使用区块选择(Visual Block)的功能了。当我们按下 v 或者 V 或者 [Ctrl]+v 时,
		这个时候游标移动过的地方就会开始反白,这三个按键的意义分别是∶<br><br>

<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr bgcolor=lightblue align=center><td colspan=2>区块选择的按键意义</td></tr>
	<tr><td align=center><font face="细明体">v</font></td><td>字元选择,会将游标经过的地方反白选择!</td></tr>
	<tr><td align=center><font face="细明体">V</font></td><td>行选择,会将游标经过的行反白选择!</td></tr>
	<tr><td align=center><font face="细明体">[Ctrl]+v</font></td><td>区块选择,可以用长方形的方式选择资料</td></tr>
	<tr><td align=center><font face="细明体">y</font></td><td>将反白的地方复制起来</td></tr>
	<tr><td align=center><font face="细明体">d</font></td><td>将反白的地方删除掉</td></tr>
</table><br>

		我们以上面的 IP 对应主机名称为范例,如果想要复制的是 IP 的话,而且仅想要前面四行,
		那么我可以∶<ol>

		<li>将游标移动到第一行的第一个字元 ( 1G );
		<li>然后按下 [Ctrl]+v (按著 [ctrl] 不放,再按下 v );
		<li>然后移动方向键,向下向右移动数格,让整个反白区域涵盖 191.168.1.1 到 192.168.1.4 ;
		<li>按下 y 复制 (此时反白会自动的不见) ;
		<li>移动到任何想要插入的区域,按下 p 就可以插入刚刚复制的区块内容!举例来说,移动到第
			1 行的第 13 个字元处按下小写的 p ,看看会怎样?</ol>

		这个区块选择在已经格式的档案中,就会显的很有帮助喔!尤其是我们想要大量复制其中一个区块,
		而不是整行复制的场合中,就会很有用的啦!<br><br>
	</div>

	<hr><a name="vim_files"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>多档案编辑</span><br>
	<div class=block2>
		假设一个例子,你想要将刚刚我们的 hosts 内的 IP 复制到您的 /etc/hosts 这个档案去,
		那么该如何编辑?我们知道在 vi 内可以使用 :r filename 来读入某个档案的内容,
		不过,这样毕竟是将整个档案读入啊!如果我只是想要部分内容呢?呵呵!这个时候多档案同时编辑就很有用了。
		我们可以使用 vim 后面同时接好几个档案来同时开启喔!相关的按键有∶<br><br>

<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr bgcolor=lightblue align=center><td colspan=2>多档案编辑的按键</td></tr>
	<tr><td align=center><font face="细明体">:n</font></td><td>编辑下一个档案</td></tr>
	<tr><td align=center><font face="细明体">:N</font></td><td>编辑上一个档案</td></tr>
	<tr><td align=center><font face="细明体">:files</font></td><td>列出目前这个 vim 的开启的所有档案</td></tr>
</table><br>

		这个功能也很棒啊!现在您可以做一下练习看看说!假设您要将刚刚鸟哥提供的 hosts 内的 IP 复制到您的
		/etc/hosts 档案内,那可以怎么进行呢?可以这样啊∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi hosts /etc/hosts</span>
<span class=term_say># 在这个档案中利用上个小节提到的区块选择,按下 [ctrl]+v 来进行区块选择,并复制。
# 然后按下 :n 在指令列的地方输入这玩意儿,就会转到下一个档案去,这个时候,
# 就可以按下 p 将刚刚复制的 IP 给贴到您的档案中棉!如果您按下 :files ,则∶</span>

<hr>192.168.1.4    host4.class.net
192.168.1.5    host5.class.net
<font color=blue>~
~</font>
<span class=term_write>:files</span>
  1 %a   "hosts"                        line 1
  2 #    "/etc/hosts"                   line 1
<font color=green>Hit ENTER or type command to continue</font>
<hr>
<span class=term_say># 看到否?在指令列输入 :files 就可以显示目前所编辑的档案资讯棉!</span>
</pre></td></tr></table>

		看到了吧?利用多档案编辑的功能,可以让您很快速的就将需要的资料复制到正确的档案内。
		当然棉,这个功能也可以利用视窗介面来达到,那就是底下要提到的多视窗功能。<br><br>
	</div>

	<hr><a name="vim_ws"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>多视窗功能</span><br>
	<div class=block2>
		想像两个情况∶<ul>
		<li>当我有一个档案非常的大,我查阅到后面的资料时,想要『对照』前面的资料,
			是否需要使用 [ctrl]+f 与 [ctrl]+b 来跑前跑后查阅?
		<li>我有两个需要对照著看的档案,不想使用前一小节提到的多档案编辑功能;</ul>
		这样的情况下,开一个 vim 里头有两个视窗的环境,就有需要啦!那么如何开启新视窗呢?
		很简单啊!在指令列模式输入∶『:sp {filename}』,那个 filename 可有可无,
		如果想要在新视窗启动另一个档案,就加入档名,否则仅输入 :sp 时,
		出现的则是同一个档案在两个视窗间!例如鸟哥使用 vim hosts 后,再以 :sp /etc/hosts ,
		结果出现如下图示∶<br>

<table class="term"><tr><td class="term"><pre>
<font color=blue># Do not remove the following line, or various programs
# that require network functionality will fail.</font>
127.0.0.1       localhost.localdomain localhost
192.168.1.11    vbird-work
192.168.1.2     vbird-server
<font color=blue>~</font>
<span style="background-color:white; color:black">/etc/hosts                   5,1            All</span>
192.168.1.1    host1.class.net
192.168.1.2    host2.class.net

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -