Ubuntu16.04 IDE: 用Vim逐步打造一个IDE
目前打造完成的IDE主要有: terminator+Bundle+NERDtree+YCF(youcompleteme)+UltiSnips+新创建文件自动补充注释和作者,版权信息等
1,当任务比较多的时候,如果在Ubuntu下切换多个终端,会比较麻烦,这里我找到一个比较好的终端(terminator)
sudo apt-get install terminator
安装完之后的效果:
右键可以分割窗口或者新建tab, preference可以定制外观
2,安装YouCompleteMe
bundle是一个插件安装管理器,安装完成之后,就会在家目录下面的.vim目录生成bundle目录及相关配置
我采用的是git安装,bundle安装太慢了,看不见进度
在家目录下,cd .vim/bundle/
下载YouCompleteMe:
git clone --recursive https://github.com/Valloric/YouCompleteMe.git
以下为主要安装命令和需要安装的东西:
cd YouCompleteMe/
sudo apt-get install llvm-3.9 clang-3.9 libclang-3.9-dev libboost-all-dev
sudo apt-get install python-dev python3-dev
mkdir ~/.ycm_build
cd ~/.ycm_build
cmake -G "Unix Makefiles" . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
cmake -G "Unix Makefiles" -DUSE_SYSTEM_BOOST=ON -DUSE_SYSTEM_LIBCLANG=ON . ~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp
cmake --build . --target ycm_core --config Release
cp ~/.vim/bundle/YouCompleteMe/third_party/ycmd/examples/.ycm_extra_conf.py ~/.vim/
参考资料:
http://valloric.github.io/YouCompleteMe/
https://www.jianshu.com/p/d908ce81017a?nomobile=yes
http://blog.jobbole.com/58978/
3,用bundle安装nerdtree
安装:
在.vimrc中,写入需要安装的插件
打开一个vim, 运行:BundleInstall
补充2个小技巧:
1,shift + R可以自动刷新文件列表
2,在NERDTree树形管理文件中,按ma可以创建文件或者目录
使用
1、在linux命令行界面,用vim打开一个文件。
2、输入 :NERDTree ,回车
3、进入当前目录的树形界面,通过小键盘上下键,能移动选中的目录或文件
4、ctr+w+h 光标focus左侧树形目录,ctrl+w+l 光标focus右侧文件显示窗口。多次摁 ctrl+w,光标自动在左右侧窗口切换
5、输入:q回车,关闭光标所在窗口
安装Vim 插件——UltiSnips 配置代码片段( Bundle方式 )
1.安装,在~/.vimrc中添加UltiSnips plugin.
Plugin 'SirVer/ultisnips'
Plugin 'honza/vim-snippets'
2,然后在VIM的末行模式,键入命令 执行插件的安装
:PluginInstall
3.配置的参考代码在 ~/.vim/bundle/vim-snippets
cp ~/.vim/bundle/vim-snippets/UltiSnips/c.snippets ~/.vim/UltiSnips/
YCM和Ultisnips按键冲突解决方案(只使用TAB键 )
1,添加功能函数到.vimrc
function! g:UltiSnips_Complete()
call UltiSnips#ExpandSnippet()
if g:ulti_expand_res ==
if pumvisible()
return "\<C-n>"
else
call UltiSnips#JumpForwards()
if g:ulti_jump_forwards_res ==
return "\<TAB>"
endif
endif
endif
return ""
endfunction function! g:UltiSnips_Reverse()
call UltiSnips#JumpBackwards()
if g:ulti_jump_backwards_res ==
return "\<C-P>"
endif return ""
endfunction if !exists("g:UltiSnipsJumpForwardTrigger")
let g:UltiSnipsJumpForwardTrigger = "<tab>"
endif
if !exists("g:UltiSnipsJumpBackwardTrigger")
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
endif
2,为上面的函数创建一个自动BufEnter
au InsertEnter * exec "inoremap <silent> " . g:UltiSnipsExpandTrigger . " <C-R>=g:UltiSnips_Complete()<cr>"
au InsertEnter * exec "inoremap <silent> " . g:UltiSnipsJumpBackwardTrigger . " <C-R>=g:UltiSnips_Reverse()<cr>"
Ubuntu16.04 IDE: 用Vim逐步打造一个IDE的更多相关文章
- 【转】手把手教你把Vim改装成一个IDE编程环境(图文)
手把手教你把Vim改装成一个IDE编程环境(图文) By: 吴垠 Date: 2007-09-07 Version: 0.5 Email: lazy.fox.wu#gmail.com Homepage ...
- Ubuntu16.04下使用sublime text3搭建Python IDE
本来是想用pycharm,但你看它的内存要求,我的虚拟机一共也就1G Vim太别扭了,就算有代码颜色,不能自动对齐,不能规范格式,跳转到函数定义,显示文档,要配置起来太费劲,所以就尝试着用sublim ...
- Vim改装成一个IDE编程环境
1 写在前面 Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个 ...
- 04-手把手教你把Vim改装成一个IDE编程环境(图文)
Linux下编程一直被诟病的一点是: 没有一个好用的IDE, 但是听说Linux牛人, 黑客之类的也都不用IDE. 但是对我等从Windows平台转移过来的Coder来说, 一个好用的IDE是何等的重 ...
- 把Vim改装成一个IDE编程环境
一:安装中文帮助手册 1. 打开一个终端 2.下载vimcdoc-1.5.0.tar.gz 下载地址: http://nchc.dl.sourceforge.net/source ...
- ubuntu16.04(beaglebone) 下vim 和gcc 的信息
root@arm:~# dpkg -L gcc /. /usr /usr/bin /usr/bin/c99-gcc /usr/bin/c89-gcc /usr/share /usr/share/doc ...
- php入门一ubuntu16.04中php环境配置及一个网页
1.PHP(全称:PHP:Hypertext Preprocessor,即"PHP:超文本预处理器")是一种通用开源脚本语言. 2.PHP 文件可包含文本.HTML.JavaScr ...
- Ubuntu16.04下编译vim with python support失败的原因
- youcompleteme原话:On Ubuntu 16.04, Python support was not working due to enabling both Python2 and P ...
- Linux基础(Ubuntu16.04):安装vim及配置
1.进入终端 Ctrl + Alt +T 出现终端窗口 2.输入命令: sudo apt-get install vim-gtk 3.验证是否成功 安装完vim后查看命令 vi tab键,就会关联出 ...
随机推荐
- RxAndroid中observable的基本使用和表单校验操作
RxAndroid 响应式编程 类似于监听-观察者模式 在观察者模式中,你的对象需要实现 RxJava 中的两个关键接口:Observable 和 Observer.当 Observable 的状态改 ...
- WebLogic部署报java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory cannot be cast to javax.xml.parsers.SAXParserFactory
今天在部署WebLogic项目时,报了java.lang.ClassCastException: weblogic.xml.jaxp.RegistrySAXParserFactory cannot b ...
- extjs 关于dom操作的几个库
经过几天的学习研究,发现ext与jquery的设计思路完全是来自两个方向. jquery是内聚,把所有东西都放在$的下面,而ext是采用分模块的设计思路,每个功能封装一个库.这样就形成了各自的实用风格 ...
- 走进Linux01-磁盘分区与文件夹结构
近期学习Linux,首先安装系统,遇到了磁盘分区.之前仅仅知道Linux分区是从/(根文件夹)開始的,至于磁盘格式,多块盘怎样挂载全然不了解,系统的查询了一下Linux磁盘分区和文件夹结构,整理一下. ...
- Android 訪问权限清单
Android权限设置 概述 权限 说明 訪问登记属性 android.permission.ACCESS_CHECKIN_PROPERTIES 读取或写入登记check-in数据库属性表的权限 获取 ...
- 7、创建ROS msg和srv
一.msg和srv介绍 msg: msg文件使用简单的文本格式声明一个ROS message的各个域. 仅须要创建一个msg文件,就能够使用它来生成不同语言的message定义代码. srv:srv文 ...
- Git 经常使用命令总结
一 关于加入.删除和回退 1 git rm --cached file 想要git不再跟踪这个文件,可是又不想在硬盘中删除该文件 2 在被git管理的文件夹中删除文件时,能够选择例如以下两种方式: ...
- Struts2报错org.apache.jasper.JasperException: Invalid directive原因
struts标签书写错误.<s:textfield name="us.username"/>对的<s:textfield name="us.userna ...
- 快看Sample代码,速学Swift语言(1)-语法速览
Swift是苹果推出的一个比较新的语言,它除了借鉴语言如C#.Java等内容外,好像还采用了很多JavaScript脚本里面的一些脚本语法,用起来感觉非常棒,作为一个使用C#多年的技术控,对这种比较超 ...
- websocket简介
在我们做web项目的过程中,经常需要做的一个模块是消息模块.典型的场景:一个商城系统的后台管理,我想实现如果前台有客户下单,后台就会接到消息,以便尽快发货处理. 要实现上述的功能,我们有几种备选的方案 ...