Vim 扩展工具 vim-ide (转)
通过简单的配置文件将 vim 打造成专业 ide,支持 mac linux cygwin。看过数篇 vim 配置文件,必要时去定制vim 的插件,将 vim 的 ide 用户体验尽量做到极致。
使用范围
系统要求:vim 7.2及以上版本,安装有ctags和cscope,完美支持linux, mac, cygwin. (mac下为更良好地用户体验,请将shell的描述文件成pro)
功能:浏览和编写c/c++, python项目
特点:安装绿色简单,功能可比source insight,但保持了原汁原味的vim。
安装方法
1.把.vimrc和.vim文件夹拷贝到家目录下,如果终端背景为白色,将.vimrc中background选项改为light。
2.安装cscope ctags。用apt-get安装: apt-get install ctags cscope(用yum安装: yum install ctags cscope, 用brew安装: brew install ctags cscope)
使用到的插件
tagbar #函数变量列表(修改部分BUG,修改配置文件)
nerdcommenter #注释功能(修改C语言默认用//注释,修改配置文件)
a #切换头文件和实现文件(修改跨目录不能找到的问题,无修改配置文件)
nerdtree #目录树(无修改,修改配置文件)
omnicpp #C/C++的自动补全插件(无修改,修改配置文件)
bufexplorer #当前打开的文件列表(无修改,无修改配置文件)
AutoComplPop #自动弹出补全菜单 (无修改,无修改配置文件)
SuperTab #按tab补全 (无修改,无修改配置文件)
自己总结的浏览和编写C/C++工程的常规的使用方法
打开项目:
cd到工程根目录下,vim (回车),必须是工程根目录。按F2打开文件列表,选择文件打开。
建立索引:
第一次打开项目,及代码更新后按F7更新索引,这个索引与source insight中的更新索引意义相同。
浏览C/C++代码:
浏览代码会常用的几个功能:
1.跳转
F3 通过tagbar函数列表跳转到当前文件的某个函数
ctrl-] 跳转到光标下单词在工程中定义的位置
gd 如果光标下单词是局部变量,按这个跳转到它定义的位置
:tag word 跳转到word定义的位置
ctrl-2 g 跳转到光标下单词在/usr/include中定义的位置
ctrl-h, j, k, l 光标在各个窗口间跳转
% 在一个大小中括号跳转到对应括号
[[ 跳转到当前函数的开头
][ 跳转到当前函数的结尾
ctrl-o 回退到光标之前的位置。
ctrl-i 按ctrl-o后返回。
2.搜索
ctrl-[ s 在整个工程里面搜索光标下单词,但不包括字符串和注释。
ctrl-[ t 在整个工程里面搜索光标下单词,包括字符串和注释。
:cscope find t word 在工程中搜索字符串word。
<F5> 高亮光标下单词
# 向上搜索光标下单词
* 向下搜索光标下单词
/word 搜索单词word
/\<word\> 搜索单词word,并要求整词匹配
3.切换到工程下的另一个文件
F2 通过文件树跳转。
F4 已经打开的文件列表
F6 在头文件和实现文件两个文件切换。
ctrl-[ f 跳转到文件名含有光标下单词的文件。
ctrl-[ i 跳转到包含光标下单词对应文件的文件。
ctrl-[ I 跳转到包含当前文件的文件。
编写C/C++代码:
1.替换功能
:%s /word1/word2/g 将这个文件里的word1替换成word2。
2.对齐代码
= 对齐选中行代码
== 对齐当前行代码
gg=G 对齐整个文件
3.注释及反注释
, 注释选中行
. 反注释选中行
TODO
1.ctags在文件编码与终端编码不相同且跳转行有中文的情况下无法跳转
2.在cygwin下在同时打开nerdtree和tagbar的情况下退出,退出会出错
缘起
刚开始做Linux C/C++的时候试了很多编辑方式,包括:
souce insight:通过Linux上的samba服务去写Linux主机里的代码(我觉得不通过定制版的vim和emacs之外最好的选择,一方面不需要打开虚拟机界面,另一方面souce insight写代码也确实挺好用的。
eclipse:很好用,但不得打开Linux图形界面,另外eclipse运行很慢,尤其大项目
qt creator:即使不是QT项目,当然也可以在Linux图形界面用QT CREATOR写代码,比eclipse运行快,当然如果是Linux下的QT项目当然QT creator也是首选。
VIM与EMACS:作为开发环境都要加跳转及自动补全类的插件。它们虽然功能上可能并没有其他IDE境强大,但其他IDE都需要打开很耗资源的图形界面,另外VIM和EMACS有很多其他IDE都不具备的好处,比如所有操作都不需要鼠标,能一键搜索等。另外它们都可以直接ssh到Linux主机然直接使用,缺点在于上手起来都较不容易。VIM与EMACS都可以无界限的加任何功能的插件,理论在一个上面能实现的功能在另一个上面一定能实现,不存在谁比谁强大的问题。从基本操作上个人还是更喜欢emacs,但因为折腾emcas插件比vim更难所以选择了vim。
这个VIM的定制是在一年的时间里逐渐完善起来的,其中一段时间转了emacs,后来折腾cedet实在没折腾不完善,也找不到谁用能交流下,所以最终回到了vim。这个vim定制的原则是尽量保持精简快速与更好的兼容性,但实现更多更强更实用更加人性化的功能。
Vim 扩展工具 vim-ide (转)的更多相关文章
- 只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs
只有文本编辑器才是王道, 什么ide都是evil的浮云, 看看linus linux的内核开发工具vim emacs [ide is evil] (http://i.cnblogs.com/EditP ...
- 【转】手把手教你把Vim改装成一个IDE编程环境(图文)
手把手教你把Vim改装成一个IDE编程环境(图文) By: 吴垠 Date: 2007-09-07 Version: 0.5 Email: lazy.fox.wu#gmail.com Homepage ...
- Vim扩展YouCompleteMe插件
在Vim中安装YouCompleteMe插件 一.安装前的说明: 1.确保vim版本>=7.4,若MAC OS,建议直接安装MacVim(8.0版本). ps:如果不想使用MacVim的GUI, ...
- Vim改装成一个IDE编程环境
1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个 ...
- 04-手把手教你把Vim改装成一个IDE编程环境(图文)
Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重 ...
- Openstack 实现技术分解 (3) 开发工具 — VIM & dotfiles
目录 目录 前文列表 扩展阅读 前言 插件管理 Vundle 主题 Solarized 浏览项目目录结构 Nerdtree Symbol 窗口 Tagbar 文件模糊查询 CtrlP 代码补全 You ...
- Vim配置及说明——IDE编程环境
Vim配置及说明——IDE编程环境 Vim配置及说明——IDE编程环境 1.基本及字体 2.插件管理 3.主题风格 4.窗口设置 5.目录树导航 6.标签导航 7.taglist 8.多文档编辑 9. ...
- 开发者和系统管理者最喜爱的开源工具Vim 起步学习的五个技巧
多年来,我一直想学 Vim.如今 Vim 是我最喜欢的 Linux 文本编辑器,也是开发者和系统管理者最喜爱的开源工具.我说的学习,指的是真正意义上的学习.想要精通确实很难,所以我只想要达到熟练的水平 ...
- Use Vim as a Python IDE
Use Vim as a Python IDE I love vim and often use it to write Python code. Here are some useful plugi ...
随机推荐
- swfobject.js 2.2简单使用方法
swfobject.js 2.2简单使用方法 官方网址介绍http://code.google.com/p/swfobject/wiki/documentation 用法:html部分<div ...
- java-随学随记之基础篇
一.Java是一门高级语言,具有跨平台性(一次编译到处运行) 1.javac.exe命令,编译器 javac 源文件名.java 2.java.exe命令,启动虚拟机 java 类名 二.环境变量 ...
- WCF Rest:不使用UriTemplate使用post方式传参解决HTTP400问题以及参数映射问题
在使用POST方式向服务提交数据时,出现HTTP400异常,以下代码描述: 服务接口定义: [OperationContract] [WebInvoke(ResponseFormat = WebMes ...
- tomcat https jks 沃通免费证书安装 解决方案
网上百度了一天什么没百度到,最后谷歌到了一篇文章启发之下解决之. 代理谷歌网站推荐一个,可以直接上谷歌: https://www.yundou.info ----------------------- ...
- HttpClient基础教程
1.HttpClient相关的重要资料 官方网站:http://hc.apache.org/ API:http://hc.apache.org/httpcomponents-client-4.3.x/ ...
- node.js中favicon.ico请求两次问题
var http=require("http"); var server=http.createServer(); server.on("request",fu ...
- setTimeout setInterval 带参数的问题
转载http://www.jb51.net/article/36233.htm 在JS中无论是setTimeout还是setInterval,在使用函数名作为调用句柄时都不能带参数,而在许多场合必须要 ...
- UVA 10129 Play on Words
欧拉回路 以字母为结点,单词为边:注意两个相同的单词表示两条边. 并查集判断是否连通,出度,入度判断是否是欧拉回路 #include <iostream> #include <cst ...
- JS常见操作
//第一篇博文,希望大家多多支持 /***** BasePage.js 公共的 脚本文件 部分方法需引用jquery库 *****/ //#region 日期操作 //字符串转化为时间. functi ...
- SQL Server 查看正在运行的事务信息的 2 种方法。
方法 1.sys.dm_tran_session_transactions; 方法 2.dbcc opentran ------------------------------------------ ...