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 ...
随机推荐
- 16进制字符串转换为byte数组
/// <summary> /// 16进制字符转换为byte数组 /// </summary> /// <param name="hexString" ...
- net 2.0使用ajax
asp.net ajax中用到了几个dll文件,这些可以从网上下载.http://ajax.asp.net站点下可以找到相关的下载.这其中包括:System.Web.Extensions.dll.Sy ...
- 设置Proxy Server和SQL Server实现互联网上的数据库安全
◆首先,我们需要了解一下SQL Server在WinSock上定义协议的步骤: 1. 在”启动”菜单上,指向”程序/Microsoft Proxy Server”,然后点击”Microsoft Man ...
- sql 事务和回滚
(1) set ANSI_NULLS ON --见图1 set QUOTED_IDENTIFIER ON go ALTER proc [dbo].[procname] as begin begin t ...
- MySQL基础之 path环境变量的作用 (科普)
在谈mysql配置环境变量之前,先谈一下windows环境变量的作用,有时候在windows cmd窗口运行命令时,经常会出现“XXX不是内部或外部命令的提示” 原因是系统没有找到执行相应命令的文件( ...
- Qt 小技巧之“To-Do 事项”
Qt Creator 2.5 版本的时候增加了这个插件 一直没怎么用到 现在想起来 google了一下 做个总结吧 先晒图 就是这样啦 用法也很简单 在项目的随便一个位置 写一个注释 只要以上面5个关 ...
- [?]Unity快捷键
Super=Win键. Rererence: What are Unity's keyboard and mouse shortcuts?
- C++标准程序库读书笔记-第四章通用工具
1.Pairs(对组) (1)class pair可以将两个值视为一个单元.任何函数需返回两个值,也需要pair. (2)便捷地创建pair对象可以使用make_pair函数 std::make_pa ...
- 从汇编看c++的虚拟继承以及其内存布局(一)
先看第一种最简单的情形,所有类中没有任何虚函数的菱形继承. 下面是c++源码: class Top {//虚基类 public: int i; Top(int ii) { i = ii; } }; c ...
- PHP记录点击数方法
1.第一种方法: $id = $_GET['id']; //获取文章ID $sql = "UPDATE base SET hits = hits+1 WHERE id = '$id'&quo ...