vim程序编辑器
2015-07-21 16:08
323 查看
since2012/04/23 | ||||||||||||||
第十章、vim 程序编辑器 最近更新日期:2009/08/20 3. vim 的额外功能 3.1 区块选择(Visual Block) 3.2 多档案编辑 3.3 多窗口功能 3.4 vim 环境设定与记录: ~/.vimrc, ~/.viminfo 3.5 vim 常用指令示意图 vim 的额外功能 其实,目前大部分的 distributions 都以 vim 取代 vi 的功能了!如果你使用 vi 后,却看到画面的右下角有显示目前光标所在的行列号码,那么你的 vi 已经被 vim 所取代啰~ 为什么要用 vim 呢?因为 vim 具有颜色显示的功能,并且还支持许多的程序语法 (syntax), 因此,当你使用 vim 编辑程序时( 不论是 C 语言,还是 shell script ), 我们的 vim 将可帮你直接进行『程序除错 (debug)』的功能!真的很不赖吧!^_^ 如果你在文本模式下,输入 alias 时,出现这样的画面:
图3.0.1、 vim 的图示示意 上面是 vim 的画面示意图,在这个画面中有几点特色要说明喔: 由于 man.config 是系统规划的配置文件,因此 vim 会进行语法检验,所以你会看到画面中内部主要为深蓝色, 且深蓝色那一行是以批注符号 (#) 为开头; 最底下一行的左边显示该档案的属性,包括 141行与 4617 字符; 最底下一行的右边出现的 1,1 表示光标所在为第一行, 第一个字符位置之意(请看一下上图中的游标所在); 所以,如果你向下移动到其他位置时,出现的非批注的数据就会有点像这样: 图3.0.2、 vim 的图示示意 看到了喔!除了批注之外,其他的行就会有特别的颜色显示呢!可以避免你打错字啊!而且, 最右下角的 30% 代表目前这个画面占整体档案的 30% 之意!这样瞭乎? 区块选择(Visual Block) 刚刚我们提到的简单的 vi 操作过程中,几乎提到的都是以行为单位的操作。那么如果我想要搞定的是一个区块范围呢? 举例来说,像底下这种格式的档案:
等等复制起来, 并且加到每一行的后面,亦即每一行的结果要是『 192.168.1.2 host2.class.net host2 』这样的情况时, 在传统或现代的窗口型编辑器似乎不容易达到这个需求,但是咱们的 vim 是办的到的喔!那就使用区块选择 (Visual Block) 吧!当我们按下 v 或者 V 或者 [Ctrl]+v 时, 这个时候光标移动过的地方就会开始反白,这三个按键的意义分别是:
使用 vim hosts 来开启该档案,记得该档案请由上述的连结下载先! 将光标移动到第一行的 host 那个 h 上头,然后按下 [ctrl]-v ,左下角出现区块示意字样: 图 3.1.1、进入区块功能的示意图 将光标移动到最底部,此时光标移动过的区域会反白!如下图所示: 图 3.1.2、区块选择的结果示意图 此时你可以按下『 y 』来进行复制,当你按下 y 之后,反白的区块就会消失不见啰! 最后,将光标移动到第一行的最右边,并且再用编辑模式向右按两个空格键,回到一般模式后, 再按下『 p 』后,你会发现很有趣!如下图所示: 图 3.1.3、将区块的资料贴上后的结果 透过上述的功能,你可以复制一个区块,并且是贴在某个『区块的范围』内,而不是以行为单位来处理你的整份文件喔! 鸟哥个人是觉得这玩意儿非常的有帮助啦!至少在进行排列整齐的文本文件中复制/删除区块时,会是一个非常棒的功能! 多档案编辑 假设一个例子,你想要将刚刚我们的 hosts 内的 IP 复制到你的 /etc/hosts 这个档案去, 那么该如何编辑?我们知道在 vi 内可以使用 :r filename 来读入某个档案的内容, 不过,这样毕竟是将整个档案读入啊!如果我只是想要部分内容呢?呵呵!这个时候多档案同时编辑就很有用了。 我们可以使用 vim 后面同时接好几个档案来同时开启喔!相关的按键有:
现在你可以做一下练习看看说!假设你要将刚刚鸟哥提供的 hosts 内的前四行 IP 数据复制到你的 /etc/hosts 档案内,那可以怎么进行呢?可以这样啊: 透过『 vim hosts /etc/hosts 』指令来使用一个 vim 开启两个档案; 在 vim 中先使用『 :files 』察看一下编辑的档案数据有啥?结果如下所示。 至于下图的最后一行显示的是『按下任意键』就会回到 vim 的一般模式中! 图 3.2.1、多档案编辑示意图" 在第一行输入『 4yy 』复制四行; 在 vim 的环境下输入『 :n 』会来到第二个编辑的档案,亦即 /etc/hosts 内; 在 /etc/hosts 下按『 G 』到最后一行,再输入『 p 』贴上; 按下多次的『 u 』来还原原本的档案数据; 最终按下『 :q 』来离开 vim 的多档案编辑吧! 看到了吧?利用多档案编辑的功能,可以让你很快速的就将需要的资料复制到正确的档案内。 当然啰,这个功能也可以利用窗口接口来达到,那就是底下要提到的多窗口功能。 多窗口功能 在开始这个小节前,先来想象两个情况: 当我有一个档案非常的大,我查阅到后面的数据时,想要『对照』前面的数据, 是否需要使用 [ctrl]+f 与 [ctrl]+b (或 pageup, pagedown 功能键) 来跑前跑后查阅? 我有两个需要对照着看的档案,不想使用前一小节提到的多档案编辑功能; 在一般窗口接口下的编辑软件大多有『分割窗口』或者是『冻结窗口』的功能来将一个档案分割成多个窗口的展现, 那么 vim 能不能达到这个功能啊?可以啊!但是如何分割窗口并放入档案呢? 很简单啊!在指令列模式输入『:sp {filename}』即可!那个 filename 可有可无, 如果想要在新窗口启动另一个档案,就加入档名,否则仅输入 :sp 时, 出现的则是同一个档案在两个窗口间! 让我们来测试一下,你先使用『 vim /etc/man.config 』打开这个档案,然后『 1G 』去到第一行,之后输入『 :sp 』 再次的打开这个档案一次,然后再输入『 G 』,结果会变成底下这样喔: 图 3.3.1、窗口分割的示意图 万一你再输入『 :sp /etc/hosts 』时,就会变成下图这样喔: 图 3.3.2、窗口分割的示意图 怎样?帅吧!两个档案同时在一个屏幕上面显示,你还可以利用『[ctrl]+w+↑』及『[ctrl]+w+↓』 在两个窗口之间移动呢!这样的话,复制啊、查阅啊等等的,就变的很简单啰~ 分割窗口的相关指令功能有很多,不过你只要记得这几个就好了:
vim 环境设定与记录: ~/.vimrc, ~/.viminfo 有没有发现,如果我们以 vim 软件来搜寻一个档案内部的某个字符串时,这个字符串会被反白, 而下次我们再次以 vim 编辑这个档案时,该搜寻的字符串反白情况还是存在呢!甚至于在编辑其他档案时, 如果其他档案内也存在这个字符串,哇!竟然还是主动反白耶!真神奇! 另外,当我们重复编辑同一个档案时,当第二次进入该档案时, 游标竟然就在上次离开的那一行上头呢!真是好方便啊~但是,怎么会这样呢? 这是因为我们的 vim 会主动的将你曾经做过的行为登录下来,好让你下次可以轻松的作业啊! 那个记录动作的档案就是: ~/.viminfo !如果你曾经使用过 vim, 那你的家目录应该会存在这个档案才对。这个档案是自动产生的, 你不必自行建立。而你在 vim 里头所做过的动作,就可以在这个档案内部查询到啰~ ^_^ 此外,每个 distributions 对 vim 的预设环境都不太相同,举例来说,某些版本在搜寻到关键词时并不会高亮度反白, 有些版本则会主动的帮你进行缩排的行为。但这些其实都可以自行设定的,那就是 vim 的环境设定啰~ vim 的环境设定参数有很多,如果你想要知道目前的设定值,可以在一般模式时输入『 :set all 』 来查阅,不过.....设定项目实在太多了~所以,鸟哥在这里仅列出一些平时比较常用的一些简单的设定值, 提供给你参考啊。
举例来说,可以是这样的一个档案:
vim 常用指令示意图 为了方便大家查询在不同的模式下可以使用的 vim 指令,鸟哥查询了一些 vim 与 Linux 教育训练手册, 发现底下这张图非常值得大家参考!可以更快速有效的查询到需要的功能喔!看看吧! 图 3.5.1 、 vim 常用指令示意图 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2001-2011. ksu.edu
本网页主要以Firefox配合解析度 1024x768 作为设计依据 鸟哥自由软件整合应用研究室
相关文章推荐
- SVN切分支步骤
- 设计模式之-----代理模式
- Read_tip_MenuActivity
- layer属性
- vim操作命令-笔记
- 【Android】动态注册广播接收器
- [Leetcode] Subset II
- ThinkPHP实现移动端访问自动切换主题模板
- ExecutorService的execute和submit方法
- 深入理解HTTP Session
- 一小时了解数据挖掘④:商务智能原理解读的数据挖掘九大定律
- xcode模拟器不弹出键盘解决方法
- Project Euler:Problem 82 Path sum: three ways
- 杭电 2027 统计元音
- Lync 2013常用Powershell总结
- 诡异的Linux磁盘空间被莫名其妙占用问题
- LA3266 - Tian Ji -- The Horse Racing
- SODBASE CEP学习进阶篇(五):与分布式缓存集成
- java设计模式之代理模式Proxy--静态代理
- thinkphp自动创建数据对象分析