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

📄 0310vi.htm

📁 鸟哥的linux私房菜
💻 HTM
📖 第 1 页 / 共 5 页
字号:
192.168.1.3    host3.class.net
192.168.1.4    host4.class.net
192.168.1.5    host5.class.net
<span style="background-color:white; color:black">hosts                        1,1            Top</span>

</pre></td></tr></table>

		怎样?帅吧!两个档案同时在一个萤幕上面显示,您还可以利用『[ctrl]+w+j』及『[ctrl]+w+k』
		在两个视窗之间移动呢!这样的话,复制啊、查阅啊等等的,就变的很简单棉~
		指令的功能有很多,不过,您只要记得这几个就好了∶<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 width=150><font face="细明体">:sp [filename]</font></td><td>开启一个新视窗,如果有加 filename,
		表示在新视窗开启一个新档案,否则表示两个视窗为同一个档案内容(同步显示)。</td></tr>
	<tr><td align=center><font face="细明体">[ctrl]+wj</font></td><td>按键的按法是∶先按下 [ctrl] 不放,
		再按下 w 后放开所有的按键,然后再按下 j ,则游标可移动到下方的视窗。</td></tr>
	<tr><td align=center><font face="细明体">[ctrl]+wk</font></td><td>同上,不过游标移动到上面的视窗。</td></tr>
	<tr><td align=center><font face="细明体">[ctrl]+wq</font></td><td>其实就是 :q 结束离开啦!
		举例来说,如果我想要结束下方的视窗,那么利用 [ctrl]+wj 移动到下方视窗后,按下 :q 即可离开,
		也可以按下 [ctrl]+wq 啊!</td></tr>
</table><br>
	</div>

	<hr><a name="vim_set"></a><img src="../images/penguin-s.gif" alt="小标题的图示" height="23" width="16" align="middle" /><span class=text_h2>vim 环境设定</span><br>
	<div class=block2>
		有没有发现,如果我们以 vim 软体来搜寻一个档案内部的某个字串时,这个字串会被反白,
		而下次我们再次以 vim 编辑这个档案时,该搜寻的字串还是存在呢!甚至于,
		编辑其他档案时,如果其他档案也存在这个字串,哇!!竟然还是主动反白耶!
		另外,当我们重复编辑同一个档案时,当第二次进入该档案时,
		游标竟然就在上次离开的那一行上头呢!真是好方便啊~但是,怎么会这样呢?<br><br>

		这是因为我们的 vim 会主动的将您曾经做过的行为登录下来,好让您下次可以轻松的作业啊!
		那个记录动作的档案就是∶ <span class=text_import2>~/.viminfo</span>
		这个档案啦!每个人的家目录都应该会存在这个档案才对~这个档案是自动产生的,
		您不必自行建立。而你在 vim 里头所做过的动作,就可以在这个档案内部查询到棉~ ^_^<br><br>

		此外,某些 distributions 的 vim 当中,利用搜寻时,他并不会显示反白,
		有些 distributions 则会主动的帮您进行缩排的行为 (<span class=text_vbird>所谓的缩排,
		就是当您按下 Enter 编辑新的一行时,游标不会在行首,而是在与上一行的第一个非空白字元处对齐!</span>)。
		这些其实都可以进行设定的,那就是 vim 的环境设定棉~
		vim 的环境设定参数有很多,如果您想要知道目前的设定值,可以在一般模式时输入∶『 :set all 』
		来查阅,不过.....设定项目实在太多了~所以,鸟哥在这里仅列出一些平时比较常用的一些简单的设定值,
		提供给您参考啊∶<br><br>

<table width=95% border=1 cellspacing=0 cellpadding=3 bgcolor=lightyellow>
<tr bgcolor=lightblue align=center><td colspan=2>vim 的环境设定参数</td></tr>
	<tr><td align=center width=170><font face="细明体">:set nu</font></td><td>还记得这个吧?!就是设定行号啊!取消的话,就是 
		:set nonu</td></tr>
	<tr><td align=center><font face="细明体">:set hlsearch</font></td><td>这个就是设定是否将搜寻的字串反白的设定值。
		预设值就是 hlsearch ,如果不想要反白,就 :set nohlsearch 。</td></tr>
	<tr><td align=center><font face="细明体">:set autoindent</font></td><td>是否自动缩排?autoindent 就是自动缩排,
		不想要缩排就 :set noautoindent 。</td></tr>
	<tr><td align=center><font face="细明体">:set backup</font></td><td>是否自动储存备份档?一般是 nobackup 的,
		如果设定 backup 的话,那么当你更动任何一个档案时,则原始档案会被另存成一个档名为 filename~ 的档案。
		举例来说,我们编辑 hosts ,设定 :set backup ,那么当更动 hosts 时,在同目录下,就会产生 hosts~ 
		档名的档案,记录原始的 hosts 档案内容~</td></tr>
	<tr><td align=center><font face="细明体">:set ruler</font></td><td>还记得我们提到的右下角的一些状态列说明吗?
		这个 ruler 就是在显示或不显示该设定值的啦!</td></tr>
	<tr><td align=center><font face="细明体">:set showmode</font></td><td>这个则是,是否要显示 --INSERT-- 
		之类的字眼在左下角的状态列。</td></tr>
	<tr><td align=center><font face="细明体">:set backspace=(012)</font></td><td>一般来说,
		如果我们按下 i 进入编辑模式后,可以利用倒退键 (backspace) 来删除任意字元的。
		但是,某些 distribution 则不许如此。此时,我们就可以透过 backspace 来设定棉~
		当 backspace 为 2 时,就是可以删除任意值;0 或 1 时,仅可删除刚刚输入的字元,
		而无法删除原本就已经存在的文字了!</td></tr>
	<tr><td align=center><font face="细明体">:set all</font></td><td>显示目前所有的环境参数设定值。</td></tr>
	<tr><td align=center><font face="细明体">:syntax (off|on)</font></td><td>是否依据程式相关语法显示不同颜色?
		举例来说,在编辑一个纯文字档时,如果开头是以 # 开始,那么该行就会变成蓝色。
		如果您懂得写程式,那么这个 :syntax on 还会主动的帮您除错呢!但是,
		如果您仅是编写纯文字档案,要避免颜色对您的萤幕产生的干扰,则可以取消这个设定 :syntax off 。</td></tr>
</table><br>

		总之,这些设定值很有用处的啦!但是......我是否每次使用 vim 都要重新设定一次各个参数值?
		这不太合理吧?!没错啊!所以,我们可以透过设定档来直接规定我们习惯的 vim 操作环境呢!
		整体 vim 的设定值一般是放置在 /etc/vimrc 这个档案,不过,不建议您修改他!
		你可以修改 ~/.vimrc 这个档案 (预设不存在,请您自行手动建立!),将您所希望的设定值写入!
		举例来说,可以是这样的一个档案∶<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>vi ~/.vimrc</span>
<span class=term_write>:set hlsearch
:set backspace=2
:set autoindent
:set ruler
:set showmode
:syntax on
</pre></td></tr></table>

		这样,当您下次重新以 vim 编辑某个档案时,该档案的预设环境设定就是上头写的棉~
		这样,是否很方便您的操作啊!多多利用 vim 的环境设定功能呢!^_^
	</div>
</div>

<hr><a NAME="study"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">利用 vi 编辑前面章节的练习</span><br>
<div class=block1>
	我们前面提到很多的资料,例如 <a href="0160startlinux.php#manual_man">man</a> 与 
	<a href="0220filemanager.php#locate">updatedb</a> 等等的内容,对于设定档都是简单的提过而已。
	在这里,我们就透过 vi 的编辑功能,来直接对我们前面提到的章节来进行一些练习吧!OK!来棉~<br><br>

<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题一∶我今天自己安装了一套软体,这套软体的 man page 放置在 /opt/vbirdsoft/man 这个目录下,
那我希望未来只要输入类似 man vbirdcommand 就可以查阅到我这个软体的说明文件,该如何是好?<br>
答∶<ul>我以 FC4 为例, FC4 的 man page 设定档在 /etc/man.config 底下我可以找到该档案大约 47 行的地方,
新增如下的资料∶<ul><br><font face="Times" color="darkblue">MANPATH &nbsp; /opt/vbirdsoft/man</font></ul><br>
储存后离开,从此以后,就可以查询到属于我自己的指令的线上说明文件了。</ul>
</td></tr></table><br>

<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题二∶我知道查询档案可以利用 <a href="0220filemanager.php#locate">locate</a> 来进行查询,但是,
该程式必须要配合资料库的更新才行 (updatedb)。现在,我想让我的 FC4 每天进行档案资料库的更新,
并且『不要更新 /var/cache 』这个目录,该如何是好?<br>
答∶<ul>以 FC4 为例,他的 updatedb 资料库更新设定档在 /etc/updatedb.conf 这个档案中。
我以 vi 开启这个档案后将该档案修订成为∶<ul><br><font face="Time">
DAILY_UPDATE=<span class=text_import1>yes</span><br>
PRUNEFS="selinuxfs usbdevfs NFS nfs afs sfs smbfs cifs autofs auto iso9660 udf"<br>
PRUNEPATHS="/tmp /usr/tmp /var/spool/cups /var/spool/squid /var/tmp /afs /net /sfs<br> /selinux /udev /media <span class=text_import1>/var/cache"</ul><br></font>
上列粗体部分为新加入的部分。那个 DAILY_UPDATE=yes 代表每日进行更新,至于 PRUNEPATHS 后面则接『不要更新的目录』,
所以,这样就能够达到我们的需求棉!
</ul>
</td></tr></table><br>

<table border=1 width=90% cellspacing=0 cellpadding=5><tr><td>
例题三∶在 partition 格式化的那个章节中,假设我有一个 partition 为 /dev/hdb5 ,
这个 partition 挂载到 /disk2 上面,且目录 /disk2 已经建立好了。该 partition 使用的 filesystem 为 ext3 ,
请问,如果我想要在开机的时候就挂载这个 partition ,该怎么办?<br>
答∶<ul>开机挂载可以修改 /etc/fstab 这个档案,我在这个档案新增如下资讯即可∶<ul><br><font face="Times" color=darkblue>
/dev/hdb5 &nbsp;&nbsp; /disk2 &nbsp;&nbsp; ext3 &nbsp;&nbsp; defaults &nbsp;&nbsp; 2 &nbsp;&nbsp; 2</font></ul><br>
这样修改完毕后,下达 mount -a 测试看看能否正确挂载,之后就可以开机自动挂载棉~
</ul>
</td></tr></table><br>

	vi 很重要的啦!上面的设定档都与 vi 编辑有关呢!重要重要喔! ^_^<br><br>
</div>


<hr><a NAME="dos"></a><img src="images/penguin-m.gif" alt="大标题的图示" height="34" width="25" align="middle" /><span class="text_h1">DOS 与 Linux 的断行字元</span><br>
<div class=block1>
	我们在 <a href="0220filemanager.php">Linux 档案与目录管理</a> 谈到 
	<a href="0220filemanager.php#cat">cat</a> 时,曾经提到过 DOS 与 Linux 断行字元的不同。
	而我们也可以利用 cat -A 来观察以 DOS (Windows 系统) 建立的档案的特殊格式,
	也可以发现在 DOS 使用的断行字元为 ^M$ ,我们称为 CR 与 LF 两个符号。
	而在 Linux 底下,则是仅有 LF ($) 这个断行符号。这个断行符号对于 Linux 的影响很大喔!
	为什么呢?<br><br>

	我们说过,在 Linux 底下的指令在开始执行时,他的判断依据是 『Enter』,而 Linux 的 Enter 为 LF 符号,
	不过,由于 DOS 的断行符号是 CRLF ,也就是多了一个 ^M 的符号出来,
	在这样的情况下,如果是一个 shell script 的程式档案,呵呵~将可能造成『程式无法执行』的状态~
	因为他会误判程式所下达的指令内容啊!这很伤脑筋吧!<br><br>

	那怎么办啊?很简单啊,将格式转换成为 Linux 即可啊!『废话』,这当然大家都知道,但是,
	要以 vi 进入该档案,然后一个一个删除 CR 吗?当然没有这么没人性啦!
	我们可以透过简单的指令来进行格式的转换啊!<br>

<table class="term"><tr><td class="term"><pre>
[root@linux ~]# <span class=term_command>dos2unix [-kn] file [newfile]</span>
[root@linux ~]# <span class=term_command>unix2dos [-kn] file [newfile]</span>
<span class=term_say>参数∶
-k  ∶保留该档案原本的 mtime 时间格式 (不更新档案上次内容经过修订的时间)
-n  ∶保留原本的旧档,将转换后的内容输出到新档案,如∶ dos2unix -n old new
范例∶</span>
<span class=term_hd>范例一∶将我们提供的 hosts 档案格式更新为 dos 格式。</span>
[root@linux ~]# <span class=term_command>unix2dos -k hosts</span>
unix2dos: converting file hosts to DOS format ...
<span class=term_say># 此时 hosts 这个档案的时间不会改变,但是内容主要将断行字元修改成为 DOS 的 CRLF 了。</span>

<span class=term_hd>范例二∶将范例一已经变成 DOS 格式的 hosts 改名成为 hosts.dos ,并且转换 Linux 
        格式到 hosts.linux</span>
[root@linux ~]# <span class=term_command>mv hosts hosts.dos</span>
[root@linux ~]# <span class=term_command>dos2unix -k -n hosts.dos hosts.linux</span>
dos2unix: converting file hosts.dos to file hosts.linux in UNIX format ...
[root@linux ~]# <span class=term_command>ll</span>
-rw-r--r--  1 root root      <span class=term_write>288</span> Aug  1 13:30 hosts.dos
-rw-------  1 root root      <span class=term_write>279</span> Aug  1 13:30 hosts.linux
<span class=term_say># 嘿嘿!由于 DOS 格式当中多了 CR 字符,所以,档案比较大的啦!</span>
</pre></td></tr></table>

	因为断行字符以及 DOS 与 Linux 作业系

⌨️ 快捷键说明

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