(转)用vim写程序

用vim写程序

Posted in Linux相关§Linux at 7:30 pm by zhou.b02
Tags is vim

算法研究有了小成,要把算法编成实用的代码。matlab下的效率实在是低,我只会用c,而且费尽苦心也没在windows下找到一个好用贴心的纯C编译环境,于是我决定在linux下编程序。环境就是vim+gcc+gdb。

我是个实用主义者,虽然也爱折腾新技术,但是必须在我认为那些功能是使用的这个前提下。vim用了好几年了,但实际上我只会用其中最简单的一些操 作,平时够用了,学了不用也就慢慢忘记了,但是现在要在vim下面编程,估计怎么也有1万来行吧,就不够用了。所以这几个月发现vim我用的要比以前"高 级"多了。

一下操作在任何一个给介绍vim操作的文档中都会有,非常简单,但是我提出来,因为我认为这些对编程特别有用。一下操作加前面加":"的是在command mode下的,不加是在"normal mode"下的。

  • G,$,0,这几个是在文档中跳转的指令,分别可以跳到文档结尾,行末和行首。
  • :n,比如:0,:200,n是一个数字可以跳到任意一行。
  • :?str,:/str,查找分别是向上向下查找,str是要查找的内容。
  • %,跳转到对应的括号处,比如int main(int argc, char* argv[]),把光标放在"("上,%会让光标跳转到")",如果光标在"]",%会让光标跳转到"["。这个在vim7.0后好像就没什么大用了,因为有高亮显示了。
  • 替换,vim的替换是非常灵活的,具体能用多少,就看个人了。由于我不常用,每次需要复杂一点的替换时我还是要查文档的,尽管如此我还是认为掌握替换在编写大型程序的时候可能帮助很大。
  • :v,块操作,最主要用来复制、剪切和粘贴大段的代码。用法是:v,当前光标和随后的目标光标之间的区域被高亮,随后的操作"y"为复制,"d"为剪切,这时这段内容在缓冲区里,如果还需要把这段内容粘贴到另外的地方,移动光标到这里"p"。
  • u、Ctrl+R,撤销和重做。
  • :w file,:wq,:q,编辑完文件之后:w file是另存,:wq是存盘并退出,:q是退出,当然如果修改过:q是不会让你退出的要加强制符号"!"变成:q!。
  • :shell,"ctrl+z"+"fg"。在很多情况下,需要退出到shell下去进行一些操作,然后要马上回来,退出再进入是很麻烦的,有两 种方法比较快的解决这个问题。:shell,在vim下运行一个新的shell。"ctrl+z"让vim后台运行,回到shell界面,如果要回到 vim,在shell下敲入fg。这两个方法原理完全不同,但是我认为往往能完成同一个目的。
  • :make,不退出vim运行本目录下的make。修改程序bug的时候很方便。
  • 分屏,我觉得这个操作对程序员来说最重要了,时常需要看多个程序文件,而文本界面下只能看到一个vim界面,我是在windows下用gvim时 学会的分屏,差一句,在gvim下可以学到很多常用的操作热键。Ctrl+W、v纵向分屏,Ctrl+W、n横向分屏,分屏可以嵌套,Ctrl+W、 Ctrl+W切换屏幕焦点。另外,Ctrl+W和其他健组合还可以调整各个分屏,如+"|"可以最大化当前分屏,+"="可以平分两个分屏等等。

用vim编程还需要对vim进行必要的环境设置。每个用户的vim环境配置文件是~/.vimrc。以下几个环境变量有必要配置:

  • set tabstop = n
  • set softtabstop = n
  • set shiftwidth =n
  • set expandtab
  • set cindent
  • syntax on

前4个决定了tab的风格,具体如何设置可以在vim下看help tabstop,里面提供了4种设置风格。cindent的设置使vim针对C语言实现自动缩进。syntax on打开了高亮显示开关。网上还有很多写好的加入了个人风格的vimrc可以借鉴,大部分都会给编程提供一些额外的便利。

很多程序员还不满足于此,vim毕竟只是一个编辑器,编程序还是像VC这样的工具好,能看到所有的函数,能跳转到声明处,能补全等等。还好vim相 比其他编辑器,它还是能够被扩展,现在有很多第三方插件加强了这方面的功能。常见的有ctags、cscope、taglist、 cppcomplete、global等。我现在的环境使ctags+taglist,我个人感觉已经足够了,cppcomplete能部分实现代码补 全,我觉得不好用,还是不用了,毕竟我们在文本界面下工作,不能要求太高。

  • ctags下载地址:http://ctags.sourceforge.net/ 。这是一个很强的工具,可以分析指定目录的代码的关联关系,在各自目录下生成tags文件,vim程序的时候指定了tags文件就可以让光标跳转到函数或者变量声明的地方。ctags有很多参数我一般这样用:
  • ctags -R `find sourcedir -name "*.c"` `find headerdir -name "*.h"`
  • 为了方便起见在~/.vimrc里设置" set tags=./tags " 这样不用每次在vim里设tags了。另外有一点非常要注意emacs也有一个ctags,和这个ctags是不一样的,如果用debian,要用apt -get install exuberant-ctags。

我就是喜欢linux文本界面下简洁的风格,这样设置后,在享受这种风格的同时,也提高了编程的效率。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值