程序员的编辑器——vim

上传人:子 文档编号:41864453 上传时间:2018-05-31 格式:DOC 页数:18 大小:56KB
返回 下载 相关 举报
程序员的编辑器——vim_第1页
第1页 / 共18页
程序员的编辑器——vim_第2页
第2页 / 共18页
程序员的编辑器——vim_第3页
第3页 / 共18页
程序员的编辑器——vim_第4页
第4页 / 共18页
程序员的编辑器——vim_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《程序员的编辑器——vim》由会员分享,可在线阅读,更多相关《程序员的编辑器——vim(18页珍藏版)》请在金锄头文库上搜索。

1、程序员的编辑器程序员的编辑器VIMVIM一、VIM 的历史1976 年左右 Bill Joy 开发了 vi,他也是伯克利大学的毕业生,后来他跟其他人一起成立了 Sun Microsystems 公司并成为了 Sun 的首席科学家。一开始 Bill 开发了 ex,尔后开发了 vi 作为 ex 的visual interface,也就是说 vi 允许一次能看到一屏的文本而非一行,vi 也因此得名。“早期,当键盘和视频终端成为最新的计算机交互手段时,人们开发了 VI。那时候的键盘不具有目前熟悉的全部功能键,所以,VI 就设计成只需要打字机 的键盘加上退出键就能完成对文本的输入和修改(现在有的还接受一

2、些其他的键输入方式,如光标控制键) 。尽管看起来受了限制,不能充分利用现代键盘新增的许 多键,可是祸中有福 ,限制带来的好处是手指不离开打字区就能完成所有的编辑工作。 ”技术不断进步,需求也在不断提高,VI 的各种变种也不断涌现,知名的有 nvi,elvis,VIM,vile,yzis,其中移植性最好、特性最 多、使用最广的当属 VIM,VIM 主要是 Bram Moolenaar 开发的。最初 Bram 在 Amiga 计算机上改进一个叫 Stevie 的 VI 版本,他称之为“Vi IMitation” 。随着功能的逐渐丰富,VIM 的含义也就改成了“Vi IMproved” 。相比原始的

3、 VI,VIM 增加的一项最重要的功能便是多级撤销,VI 只支持一级撤销。separator二、VI/VIM 基础知识很多人应该都知道 VI 是个有模式的编辑器:编辑模式和命令模式,按 ESC 回到命令模式,用 i 或者 a 进入编辑模式,由于区分了模式,导致 VI 的命令非常简洁,而无模式编辑器比如 Emacs,所有的命令都需要加上控制键 Ctrl 或 Alt。VI 继承了 ed 的理念,另外也有历史原因,VI 追求的是快捷启动程序迅速,编辑文本高效,功能专注,而 Emacs 追求的是功能的丰富强大以及集成带来的方便。在 VIM 里头:help mode 可以看到 VIM 的所有模式,主要有

4、如下几种:? Normal mode 即通常所谓的命令模式,在此模式使用a、i、A、I、o、O 等进入 Insert mode ? Insert mode 即通常所谓的编辑模式,在此模式使用ESC 进入 Normal mode 或者 Ctrl-o 临时进入 Normal mode。 ? Command-line mode 命令行模式,在 Normal mode 下按冒号进入,按 ESC 取消执行命令或者回车执行命令,然后回到 Normal mode。 (Visual Studio.Net 也添加了命令行脚本功能,幸甚) ? Visual mode 即选择模式(注意跟用鼠标选择不同) ,用v,V

5、,C-v 或 C-q 进入 ? Select mode 鼠标选择 ? Replace mode 在 Normal mode 下按 R 进入,按 ESC 返回Normal mode,相当于 Windows 下命令行中按 Insert 键进入的覆盖模式 从 VI/VIM 中退出:按 ESC 确认返回到 Normal mode,然后? :wq 保存并退出 ? :q! 不保存并退出 ? 退出,如果文件更改则保存 ? ZZ 退出,如果文件更改则保存(按住 Shift,再按两次z) VI 的命令是非常具有美感的,下面是几个例子:? i 在光标前插入 I 在行首插入 ? a 在光标后插入 A 在行末插入 ?

6、 o 在下一行插入 O 在上一行插入 ? x 删除当前字符 X 删除前一个字符 类似的还有 b,B,ge,gE,w,W,e,E,f,F,t,T,这些命令都可以用:help cmdname 查到帮助。? dd 删除一行 yy 拷贝一行 ? h j k l 左下上右移动光标 ? Ctrl-w h,Ctrl-w j,Ctrl-w k,Ctrl-w l 切换到左下上右窗口 类似 ed,VI/VIM 的命令大多都可以带一个数字前缀或者一个数字范围,比如:? 5dd 从当前行开始删除 5 行 ? 5yy 从当前行开始拷贝 5 行 ? 1,3d 删除 1 至 3 行 ? 1,3y 拷贝 1 至 3 行 (.

7、代表当前行,$代表最后一行) d,y,c,v分别代表删除/拷贝/修改/选择命令指定的范围,比如int main(void);将光标放在处,然后输入 v%就可以把大括号中内容选定,然后按=就可以按照 C 语言格式缩排(:help =可以看到=命令的描述) ,%命令的作用是跳到匹配处,比如括号之间,C 的宏指令#if #else #endif 之间。int some_ugly_modifier and some_ugly_name (void)如果光标放在第一个 s 上,想删除到“(”为止,则输入 dt(就可以了,t(的作用是跳到下一个“(“前。dG 可以从当前位置一直删除到文件末尾,因为 G 的

8、作用是跳到文件最后一行。VIM 的命令可以非常快捷的做到一些复杂的编辑操作。命令解释如下:? % 全文(“%”是“1,$”范围的缩写) ? s 替换 ? / 搜索字符串开始 ? ( 左括号 ? ) 开始记录匹配 ? d+ 一个或多个数字 ? ) 结束记录匹配 ? ) 右括号 ? / 搜索字符串结束 ? = 把后面的表达式计算出来作为替换字符串 ? “(“ 左括号 ? . 字符串连接运算符 ? (submatch(1) + 1) 把第一个匹配的结果加一作为一个整体返回 ? .”)” 添上右括号 ? /g 替换字符串结束,g 表示替换每一行的所有匹配结果。 ? :set ve=all 使得光标可以

9、定位到屏幕任何位置(缺省下VIM 的光标只能放在行内的字符上) ? gg 到文件第一行 ? /s+c:winntsystem32vcvars32.batcd vim7srcrem .sh 文件跟其它程序有关联,避免运行 VC 的 link 时执行了link.shren link.sh link.sh.oldecho cleanrem clean 时加入这些选项是因为$(OUTDIR)和$(OBJDIR)根据这些标志合成的,rem 如果不加这些标志, 在 rmdir /s /q 时会找不到目录, 从而没有删除掉。nmake -f Make_mvc.mak clean FEATURES=HUGE

10、GUI=yes OLE=yes MBYTE=yes IME=yes GDYNAMIC_IME=yes GIME=yes PERL=d:workprogramPerl DYNAMIC_PERL=yes PERL_VER=58 PYTHON=d:workprogramPython24 DYNAMIC_PYTHON=yes PYTHON_VER=24 SNIFF=yes CSCOPE=yes CPUNU=i586 DEBUG=yes MAP=linesecho build big debug versionnmake -f Make_mvc.mak all FEATURES=HUGE GUI=yes

11、 OLE=yes MBYTE=yes IME=yes GDYNAMIC_IME=yes GIME=yes PERL=d:workprogramPerl DYNAMIC_PERL=yes PERL_VER=58 PYTHON=d:workprogramPython24 DYNAMIC_PYTHON=yes PYTHON_VER=24 SNIFF=yes CSCOPE=yes CPUNU=i586 DEBUG=yes MAP=linesren link.sh.old link.shecho done.pauseecho onrem 对于 MinGW,echo offecho cleanmake -

12、f Make_ming.mak clean DEBUG=yesecho makemake -f Make_ming.mak all GUI=yes OLE=yes MBYTE=yes IME=yes GDYNAMIC_IME=yes GIME=yes PERL=d:/work/program/Perl DYNAMIC_PERL=yes PERL_VER=58 PYTHON=d:/work/program/Python24 DYNAMIC_PYTHON=yes PYTHON_VER=24 CSCOPE=yes CPUNU=i586 DEBUG=yes MAP=linesecho done.pau

13、seecho on如果发现 MinGW 编译出来的 gvimd.exe 非常大(约 45MB) ,可以用 MinGW 自带的 strip 处理一下。3. 安装如果你的系统先前有一份不同版本的 VIM,那么需要先卸载掉(运行 vimvimXXuninstal.exe,或者在拷贝完文件后运行新版 VIM 的 install.exe,它也会提示卸载旧版本) ,最近的 VIM 7 CVS代码安装目录也从 vim70aa 转变到 vim70b,也需要卸载原先的vim70aa,这一步主要是删除一些注册表项。如果你从 CVS 上更新代码后,install 要求的安装目录名字没有改变(也就是说 VIM 版本没

14、变) ,那么不需要卸载原先的版本,直接拷贝文件覆盖即可,如果你想更改目录安装的话也需要卸载。cd vim7dir /s/b *.exedir /s/b *.dllxcopy vim7runtime d:workprogramvimvim70b (vim70b 是一个目录)copy vim7src*.exe d:workprogramVimvim70bcopy vim7srcxxdxxd.exe d:workprogramVimvim70bcopy vim7srcvimtbar.dll d:workprogramVimvim70bcopy vim7srcGvimExtgvimext.dll d:

15、workprogramVimvim70bcopy vim7srcVisVimVisvim.dll d:workprogramVimvim70b然后进入 vim70b 目录运行 install.exe,如果发现一个 DOS 窗口一闪而逝,那么很可能是建立的 vim70b 目录名不对,比如笔者 前几天升级后使用的仍然是 vim70aa 目录名,在 DOS 窗口中运行install.exe 它就提示需要在 vim70b 目录下运行,将 vim70aa 改名 即可。 install.exe 的源代码是 vim7srcdosinst.c,这里面修改了注册表,并拷贝一些文件到 WINDOWS 目录下等等。4善后视情况你需要更新 PATH 环境变量、文件关联、_vimrc 中的路径名等,并将 diff.exe,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号