设为首页 加入收藏

TOP

vi/vim高级命令集粹(二)
2014-11-23 22:55:07 来源: 作者: 【 】 浏览:22
Tags:vi/vim 高级 命令 集粹
1/string2/gp' file1 > file2


23.将/etc/hosts下所有的地址都ping 2次


1 #/usr/bin/sh


2 #grad /etc/hosts and ping each address


3 cat /etc/hosts|grep -v '^#' | while read LINE


4 do


5 ADDR=`awk '{print $1}'`


6 for MACHINE in $ADDR


7 do


8 ping $MACHINE -n 2


9 done


10 done


24


到前一个函数[[ ,到下一个函数]] ,括号配对% ,交叉参考Ctrl_] (事先用ctags做索引),回来用e# ` 编辑一个函数:vi -t 函数名 ,编辑加密文本vi -X


25


在插入模式下ctrl+p,自动补齐剩余单词,以赖规则:tags,以有的单词等等


---------------------------------------------------------------------------


当今世界,文本编辑器种类繁多,大有"乱花渐欲迷人眼"之势。中国有句古语:手巧不如家什妙,作为IT业的专业人士,选择一款优秀的编辑软件至关重要。笔者认为:LINUX下的VIM※以其强大的功能和无穷的魅力将使您终生受益。


作者:闫石 (iloveibm@163.com)


来自:http://www-900.ibm.com/developerWork...15/index.shtml


由于被广泛移植,无论是PC机的DOS和WINDOWS,还是RISC/6000的AIX,乃至于IBM的大型机S/390,都能见到VIM的身影。然而,对于初学者,VIM的用户界面与使用方法非常不符合常规,甚至认为它比较混乱,无所适从。事实上,VIM编辑器是专门为经验丰富的用户设计的,它的界面和使用方法提供了更快的速度和更强的功能。对于熟知它的用户,VIM的许多特性节省了时间和击键次数,并可以完成一些其他编辑器无法完成的功能。


学习的最好方法是实践,唯有如此,才能真正掌握其中的精髓。文中列举的实例,都是笔者在实际工作中遇到的,具有一定的代表性,请大家在阅读的过程中仔细体会。


好了,现在让我们共同畅游神奇的VIM的世界!


例一、两个常用的指令序列


xp 左右交换光标处两字符的位置。


ddp 上下交换光标处两行的位置。


例二、重复输入同一字符


有时,我们可能想多次输入同一字符,VIM的插入功能可以很好的完成这项工作


命令 80i=^ESC 一次可以输入80个字符= ,当然,80a=^ESC 也可以完成上述功能。


请注意:此处的^ESC表示键盘左上方上的ESC键。


例三、将两个文本数据文件按行逐条合并,并给出标尺


数据文件1内容如下:


1-----


2-----


3-----


数据文件2内容如下:


1=====


2=====


3=====


要求的结果如下:


|--------1---------2---------3---------4---------5


1-----


1=====


|--------1---------2---------3---------4---------5


2-----


2=====


|--------1---------2---------3---------4---------5


3-----


3=====


也许您会说,这还不简单,无非是反复拷贝、粘贴,任何一款文本编辑器都能完成上述功能。可是,如果这两个文件都很大,每个文件都成千上万行,恐怕简单的拷贝、粘贴就难以胜任了。因此,我们所关心的,是找到一种行之有效的方 ,把枯燥乏味的工作留给计算机,我们只需发布指令。为达到此目的,请按以下步骤执行:


㈠、将两文件合并,结果如下


1-----


2-----


3-----


1=====


2=====


3=====


㈡、在两文件头尾相接的地方插入标志行,用以区分两个文件,本文采用的是一整行!字符


1-----


2-----


3-----


!!!!!!!!!!!!!!!!!!!!!!!!


1=====


2=====


3=====


㈢、在标志行的下方输入标尺


1-----


2-----


3-----


!!!!!!!!!!!!!!!!!!!!!!!!


|--------1---------2---------3---------4---------5


1=====


2=====


3=====


㈣、执行宏命令脚本merge_2r.vim,即在VIM编辑器中按如下键 :so merge_2r.vim 回车


㈤、按下键盘上的=键,执行的结果如下


|--------1---------2---------3---------4---------5


1-----


1=====


|--------1---------2---------3---------4---------5


2-----


2=====


|--------1---------2---------3---------4---------5


3-----


3=====


|--------1---------2---------3---------4---------5


!!!!!!!!!!!!!!!!!!!!!!!!


|--------1---------2---------3---------4---------5


㈥、将最后三行删除,即可得到我们需要的结果


|--------1---------2---------3---------4---------5


1-----


1=====


|--------1---------2---------3---------4---------5


2-----


2=====


|--------1---------2---------3---------4---------5


3-----


3=====


怎么样,简单吗?请大家自己实际尝试一下。下面,我来详细讲解宏命令脚本merge_2r.vim 。


该脚本内容如下:


"--------------------------------------------------------------------


"Macro Function : Merge File1 And File2,Have Ruler in every record


" Date : 2001/12/01


" Author : Yan Shi


"--------------------------------------------------------------------


"1-----


"2----- } Sample File1


"3-----


"!!!!!!!!!!!!!!!!!!!!!!!! Flag Row


"|--------1---------2---------3---------4---------5 Ruler


"1=====


"2===== } Sample File2


"3=====


"--------------------------------------------------------------------


:1


:map = ma/!!!!!^M+:.co 'a-1^M/!!!!!^M2+:.m'a^M+=


前14行每行都以"开始,表明该行是注释行,实际并不执行,只是方便读者阅读,只有最后两行才是真正的代码行。请注意:本例中的^M表示键盘上的回车键,并非^和M两个字符。为了讲述清楚,我把命令行分解开,逐一说明。


首先将第一行置

首页 上一页 1 2 3 4 5 下一页 尾页 2/5/5
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Fedora下手动编译升级到Kernel2.6.. 下一篇Red Hat9.0 Linux系统下搭建Java..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: