一.  开篇前言

  (图片显示越界的话,请刷新)

  装好Ubuntu15.04系统之后呢,玩了玩 Ubuntu,感觉还是很不错的。比windows快,一开机就可以打开你想要的程序,但是在windows下你要等他启动一些必须项才可以正常启用。感觉 Linux 和 MacOs 有得一比。只是在linux下软件会少很多。

  之前写过一篇博文是关于Vim的简单使用,也是从零开始去接触和使用Vim,了解了那篇博文里的命令后,就可以使用vim来高效地完成你的编辑工作了,当然,如果需要到格式的控制,使用vim还是不够的,需要到 markdown 了,如果Vim能加上Markdown的话,那编辑起来堪称完美了吧,哈哈。

  Vim 不仅是“编辑器之神”,而且Vim的插件丰富,完全可以打造成开发环境IDE,接下来就记录一下我的vim,整个过程下来,感觉就像是自己搭建了一个IDE,不错哦。

  本博文可以完成的效果包括:(左侧目录,分割窗口,代码补全,C/C++/Java/Python 的编译运行/语法补全/Tagbar[右侧大钢导航])

  Vim作为IDE,可以达到的效果,先来解解馋:

二.  本篇博文介绍到的Vim的配置功能

1. 先来安装吧

  安装的话,在 Linux 下是很简单的,打开终端,输入几条命令就可以完成了。

  sudo apt-get install vim

  sudo apt-get install gvim

  sudo apt-get install git  (这个很重要,到后面下载插件的时候要用 git 来下载)


  

  这是第一条命令,这里说我已经安装好了,不必安装。装好以后在终端直接输入 vim 或 git 或 gvim 就可以知道有没有装好了。

还可一使用 aptitude 来安装,在使用 aptitude 来安装之前要先安装 aptitude

  sudo aptitude install vim
  sudo aptitude install gvim
  sudo aptitude install git

  然后,在用户的主目录中建立 .vim 目录,在 .vim 目录中建立 bundle 目录,以后Vundle自动下载的插件都保存在这里。

vundle可以自动下载和安装插件,只需要在“My Bundles Here”注释后面使用 Bundle 命令把所需要的插件列出来,每个插件一行,然后运行 :BundleInstall 命令即可。Vundle支持 github.com 和Vim的官网 vim.org 。

    mkdir .vim/bundle

  然后,进入 Bundle 目录,使用 git clone 命令下载vundle。

   git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle 

  执行下载完成的话就可以在 bundle 下看到 vundle 目录了。

2.  创建和基本配置一下 .vimrc 文件

  可以在终端输入 vim 然后输入 :echo $VIM 看到自己的 vim 目录,然后在该目录下看看有没有  .vimrc 文件,没有的话就自己创建。

  我的 .vimrc 文件是在 /usr/share/vim 目录下(不知道大家的.vimrc是不是也是在这个目录下),没有的话就自己用命令创建:touch .vimrc

  先来基本的配置,不要插件,映射那些比较高级的东西先吧。可以完成:代码配色,tab缩进,自动保存,特别显示当前编辑行,括号匹配,查找搜索,与系统公用剪贴板,代码折叠等。如下:

  注:更改.vimrc文件需要 sudo vim vimrc使用vim来修改,也可以使用 sudo gedit vimrc

我的基本配置:

"-----------------------------------基本------------------------------------
"处理未保存或只读文件时,弹出确认
set confirm "自动保存
set autowrite "历史记录数
set history= "编码设置
set fenc=utf-
set fencs=utf-,ucs-bom,shift-jis,gb18030,gbk,gb2313,cp936 "语法高亮
if has("syntax")
syntax on
endif "设置配色方案
colorscheme ron
"设置行号
set nu "设置缩进
set tabstop=
set sts=
set smartindent
set expandtab
set softtabstop=
set shiftwidth=
"设置自动格式化,解决复制代码过来的时候出现格式混乱
 "shift +v 开头 
 "shift +g 结尾
 "==

 "格式化全文: gg=G

 "自动缩进当前行: ==

 set formatoptions=tcrqn

 
"设置括号配对情况
set showmatch
set matchtime= "设置没有自动备份
set noswapfile
set nobackup "设置纵向虚线对齐 "底部显示光标的位置的状态行
set ruler "设置查找
"搜索模式忽略大小写
set ignorecase
"如果搜索模式包含大小写则不适用ignorecase
set smartcase
"禁止搜索到文件两端时重新搜索
set nowrapscan
"高亮显示搜索到的文本
set hlsearch
"逐字符高亮
set incsearch
"使用鼠标
"按住 shift 才由鼠标右键处理操作
set mouse=a "和系统共用剪贴板
set clipboard+=unnamed


“在vim中把代码复制到系统剪贴板:

”选择需要复制的代码后:
 “+y(这个 ” 是必须要的)
 “就可以了
定位到某一行:4H  定位到第四行
复制某几行
4H
shift +v
6H


"突出显示当前编辑行
set cursorline "开启折叠,并设置空格来开关折叠
set foldenable
set foldmethod=syntax
set foldcolumn=
setlocal foldlevel=
set foldclose=all
nnoremap <space> @=((foldclosed(line('.'))<)?'zc':'zo')<CR>
"搜索和undo时不展开设置好的折叠
set foldopen-=search
set foldopen-=undo

完成到这里,就可以去敲代码了,但是还不够啊,作为IDE还不够啊,怎么没有树状目录?没有一键编译,运行?没有语法补全?

三.  可实现的功能

  分割窗口:


  分割窗口很简单,这样用vim打开文件就可以: vim -o file_path_name1 file_path_name2  (-o时横向切割,-O是纵向切割)


  左侧目录:


  要有左侧目录的话,这里就需要用到插件了。之前讲到,用Vundle可以很方便地下载和管理插件,现在就要用到了。

先来配置一下 .vimrc ,在 .vimrc 文件后添加:

set nocompatible                
filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc() 在vimrc文件中添加以下插件配置:

  Bundle 'The-NERD-tree'

  Bundle 'The-NERD-Commenter'

按下esc,输入:wq 保存退出

再次进入vim后使用:BundleInstall 进行安装


现在弄好了,而且也已经把打开和关闭目录映射成 CTRL+N 。
    map <key_you want> :NERDTreeTogggle<CR>
要知道 ctrl+w+l是切换到右边窗口,ctrl+w+h是切换到左边窗口,目录栏的控制是:Enter进入目录,光标的上下移动和vim一样

和编辑文件一样,通过h j k l移动光标定位
o    打开关闭文件或者目录,如果是文件的话,光标出现在打开的文件中
go 效果同上,不过光标保持在文件目录里,类似预览文件内容的功能
i和s 可以水平分割或纵向分割窗口打开文件,前面加g类似go的功能
t   在标签页中打开
T   在后台标签页中打开
p   到上层目录
P   到根目录
K   到同目录第一个节点
J   到同目录最后一个节点
m   显示文件系统菜单(添加、删除、移动操作)
?     帮助
q     关闭

  代码自动补全:



  说到这个,肯定要说到YouCompleteMe,可以补全C/C++/Java/Python然而,我却并不能安装成功,唉。先说怎么安装,再说我碰到的问题。
安装:像安装 目录的那个插件一样,直接在 .vimrc 下加上:
    Bundle 'Valloric/YouCompleteMe'
然后保存退出,再进入 vim 输入:BundleInstall来安装。安装的话肯定会遇到这个提示:
      Done! With errors; press l to view log

    到 .vim/bundle/YouCompleteMe 下打开终端

    输入:./install.sh --clang-completer

    参数是为了支持c/c++ 的补全。

 然后就去编译YouCompleteMe:然后我就出现错误了:

      Some folders in /home/sky-tm/.vim/bundle/YouCompleteMe/third_party/ycmd/third_party are empty; you probably forgot to run:    git submodule update --init --recursive

解决:

      按照提示输入:git submodule update --init --recursive

    结束后输入:   ./install.sh --clang-completer

然而,我的却并没有起到作用。

推荐几篇安装YouCompleteMe博文吧!

  虽然没有装YouCompleteMe,但是我发现,在编写代码的时候,有些关键字还是可以用 CTRL+N来进行补全的,还会自动添加你敲过的关键字进入备选项。期待效果:

  


没有YouCompleteMe也没关系,我装了 Python 的自动补全插件


来自:http://www.linuxidc.com/Linux/2014-04/99669.htm

1.下载:git clone https://github.com/vim-scripts/Pydiction ~/下载目录

  包括三个文件

    python_pydiction.vim #vim插件

    complete-dict #python关键字和模块列表,

    pydiction.py  #python脚本,可以添加更多的模块

2.配置

#1.查看家目录下是否有.vim目录,若没有则创建。

    mkdir  -p  ~/.vim/after/ftplugin/pydiction

#2.把上面下载的三个文件放到指定的位置

    mv  python_pydiction.vim  ~/.vim/after/ftplugin/

    mv complete-dict pydiction.py  ~/.vim/after/ftplugin/pydiction/

#3.修改 ~/.vimrc文件,若没有则创建,在该文件中添加下面两行。

    filetype plugin on

    let g:pydiction_location='~/.vim/after/ftplugin/pydiction/complete-dict'


  快速编译与运行


  每次敲好想要调试一下都要退vim肯定是不怎么友好的,所以就去查了怎么在写完后可以  一键编译运行  。
不多说了,直接贴上我的 .vimrc 配置吧:

 我的编译与运行(C/C++/JAVA/PYTHON)
我试过把所有的编译与运行都映射到F5,但是在实际使用的时候却无法奏效,于是把不同语言的快捷键分开映射了,我想,应该是有方法自动侦测文件类型然后选择编译的吧,这样就不用映射那么多键了。
"--------------------------------编译与运行---------------------------------

"-------------Java---------------

func! CompileJava()
exec "!javac %"
endfunc func! CompileCode()
exec "w"
if $filetype == "java"
exec "call CompileJava()"
endif
endfunc func! RunResult()
exec "w"
if &filetype =="java"
exec "!java %<"
endif
endfunc
map <F4> :call CompileCode()<CR>
map <F5> :call RunResult()<CR> "-------------Python------------- map <F6> :w<cr>:!python %<cr> "--------------C++--------------- map <F3> :call CompileRunGpp()<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc "---------------C---------------- map <F2> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc
特别说明一下,java的运行需要先按下 F5然后F6才行,第一次编译嘛!
最后再贴我的 .vimrc(未完成 YouCompleteMe)
"-----------------------------------基本------------------------------------
"处理未保存或只读文件时,弹出确认
set confirm "自动保存
set autowrite "历史记录数
set history= "编码设置
set fenc=utf-
set fencs=utf-,ucs-bom,shift-jis,gb18030,gbk,gb2313,cp936 "语法高亮
if has("syntax")
syntax on
endif "设置配色方案
colorscheme ron
"设置行号
set nu "设置缩进
set tabstop=
set sts=
set smartindent
set expandtab
set softtabstop=
set shiftwidth= "设置自动格式化 解决复制代码过来的时候出现格式混乱
"shift +v 开头
"shift +g 结尾
"==
"格式化全文: gg=G "自动缩进当前行: == "set formatoptions=tcrqn "设置括号配对情况
set showmatch
set matchtime= "设置没有自动备份
set noswapfile
set nobackup "设置纵向虚线对齐 "底部显示光标的位置的状态行
set ruler "设置查找
"搜索模式忽略大小写
set ignorecase
"如果搜索模式包含大小写则不适用ignorecase
set smartcase
"禁止搜索到文件两端时重新搜索
set nowrapscan
"高亮显示搜索到的文本
set hlsearch
"逐字符高亮
set incsearch
"使用鼠标
"按住 shift 才由鼠标右键处理操作
set mouse=a "和系统共用剪贴板
set clipboard+=unnamed "突出显示当前行
set cursorline "开启折叠,并设置空格来开关折叠
set foldenable
set foldmethod=syntax
set foldcolumn=
setlocal foldlevel=
set foldclose=all
nnoremap <space> @=((foldclosed(line('.'))<)?'zc':'zo')<CR>
"搜索和undo时不展开设置好的折叠
set foldopen-=search
set foldopen-=undo "----------------------------------插件-------------------------------------
"侦测文件类型
filetype on
"载入插件
filetype plugin on
"为特定文件类型载入相关缩进文件
filetype indent on "------------Pyghon----------------
let g:pydiction_location='~/.vim/after/ftplugin/pydiction/complete-dict' "配置vundle
set nocompatible
"filetype off
set rtp+=~/.vim/bundle/vundle/
call vundle#rc() "安装插件
"Bundle 'Valloric/YouCompleteMe'
Bundle 'The-NERD-tree'
Bundle 'The-NERD-Commenter'
map <C-n> :NERDTreeToggle<CR> "命令
"BundleList
"BundleInstall
"BundleClean "--------------------------------编译与运行--------------------------------- "-------------Java--------------- func! CompileJava()
exec "!javac %"
endfunc func! CompileCode()
exec "w"
if &filetype == "java"
exec "call CompileJava()"
endif
endfunc func! RunResult()
exec "w"
if &filetype =="java"
exec "!java %<"
endif
endfunc
map <F4> :call CompileCode()<CR>
map <F5> :call RunResult()<CR> "-------------Python-------------
map <F7> :w<cr>:!python %<cr> "--------------C++--------------- map <F6> :call CompileRunGpp()<CR>
func! CompileRunGpp()
exec "w"
exec "!g++ % -o %<"
exec "! ./%<"
endfunc "---------------C---------------- map <F3> :call CompileRunGcc()<CR>
func! CompileRunGcc()
exec "w"
exec "!gcc % -o %<"
exec "! ./%<"
endfunc "--------------------------------------------------------------------------
"set ignorecase " Do case insensitive matching
"set smartcase " Do smart case matching
"set incsearch " Incremental search
"set autowrite " Automatically save before commands like :next and :make
"set hidden " Hide buffers when they are abandoned
"set mouse=a " Enable mouse usage (all modes) " Source a global configuration file if available if filereadable("/etc/vim/vimrc.local")
source /etc/vim/vimrc.local
endif

  Tagbar右侧导航,

可以像IDE一样显示类的结构 变量等


  既然是做IDE,那要是能把类视图,右侧可以显示tagbar就更好啦,这样就可以更清晰地了解程序的架构,在插件仿佛的vim里,的确存在这样一个插件,可以实现我们想要的功能,接下来就来安装这个插件:

    先安装依赖库:sudo apt-get install ctags

    仍然使用vundle来安装插件:

      参照上面的方法,在.vimrc里加上 Bundle 'majutsushi/tagbar'

      保存退出后再次进入vim,输入:BundleInstall来安装,装完后输入:BundleList就可以看到已经安装的插件了。

    顺便映射一个快捷键吧,在刚才的代码下添加:

      map <F9> :TagbarToggle<CR>
      " 启动自动focus
      let g:tagbar_autofocus = 1

  

四. 总结

  折腾了几天,虽然最终也基本达到了想要的效果,但是却浪费了不少时间,建议还是用现成的IDE吧,功能齐全,安装方便简单,至少不费心费力啊!!!

  我现在的vim图:

  期待各位的交流和指导!

  我的vimrc:http://files.cnblogs.com/files/tianjintou/vimrc.zip


  博文参考:


http://vim.wikia.com/wiki/Use_Vim_like_an_IDE

http://www.wklken.me/archives.html

http://www.open-open.com/lib/view/open1429884437588.html

http://blog.chinaunix.net/uid-24567872-id-3425929.html

https://github.com/wklken/k-vim

http://www.wklken.me/posts/2013/06/11/linux-my-vim.html#_6

易水博客:

http://easwy.com/blog/archives/advanced-vim-skills-catalog/

Vimer的程序世界

http://www.vimer.cn/

vimrc配置文件

http://blog.csdn.net/rumswell/article/details/9332327#t0

初涉Linux ----------> 打造自己的 Vim IDE的更多相关文章

  1. vim IDE平台-打造属于自己的配置

    vim IDE平台-打造属于自己的配置 一.前言 目前工作环境基本以Linux为主,自然用到VIM也很多,很早就对如何提高VIM的使用效率有所研究,限于时间关系,也没做个系统记录和资料积累,时间久了又 ...

  2. dotfiles for linux/unix users automatically! (python Vim IDE)

    Here is a brief introduction and package of dotfiles for linux/unix user. I think there are enough i ...

  3. VIM IDE

    打造VIM IDE(针对C语言开发者)   ================================使用vim打造IDE, 针对C语言开发者建议使用gvim================== ...

  4. linux学习心得之vim/Cvim篇

    linux学习心得之vim/Cvim篇 在linux 下,vim 时一种最常见的编辑器,很多linux的发行版就自带了.我的是CentOS 6.3. 基本上Vim共分为3种模式,分别是一般模式,编辑模 ...

  5. Linux系统配置VI或VIM的技巧

    Linux系统配置VI或VIM的技巧作者:IT专家网论坛出处:IT专家网论坛2008-10-28 11:08配置VI和VIM的颜色显示,使它能够高亮度显示一些特别的单词,这对编写程序很有用⋯⋯ 1.V ...

  6. Linux命令之vi/vim(一)

    vi仅仅是一个文本编辑器,可以给字符着色,可以自动补全,但不具备windows下word的排版功能.Vim是Vi improved的缩写,是vi的改进版. vi和vim的区别: 多级撤销.在vi中按u ...

  7. Arduino可穿戴教程Linux平台下安装Arduino IDE

    Arduino可穿戴教程Linux平台下安装Arduino IDE Linux平台下安装Arduino IDE Linux平台下的安装方式和Windows下的zip形式安装是类似的,只是Linux下的 ...

  8. Linux系统里让vim支持markdown格式的语法高亮

    Markdown是深受程序员喜爱的一个文件格式. 然而Linux里默认的vim设置,并不支持markdown格式的语法高亮显示. 下面就来介绍如何设置使得markdown格式的文件在vim里也能享有语 ...

  9. Linux文本文件——文本编辑器Vim

    Linux文本文件——文本编辑器Vim 摘要:本文主要学习在Linux系统中使用Vim文本编辑器编辑文本. 什么是Vim Vim是一个基于文本界面的编辑工具,使用简单且功能强大.更重要的是,Vim是所 ...

随机推荐

  1. 为vs2012添加背景和皮肤

    每天对着电脑用VS进行编码开发,难免有点单调.我们可以试着像设置电脑桌面壁纸一样设置VS皮肤. 先看下效果 1.打开vs2012,工具——扩展和更新 2.选择联机,搜索并分别安装如下两个插件 3.安装 ...

  2. linux下使用taskset设置进程cpu绑定不起作用

    自从大规模使用了虚拟化之后,大流量时soft interrupt在某个cpu很高就是个严重的问题,最近一有时间就研究这个问题,如果网卡本身不支持多队列的话,有没有办法缓解这个问题. 一开始使用rps, ...

  3. 七个结构模式之装饰者模式(Decorator Pattern)

    定义: 使用组合的方法,动态给一个类增加一些额外的功能,避免因为使用子类继承而导致类继承结构复杂.并且可以保持和被装饰者同一个抽象接口,从而使客户端透明. 结构图: Component:抽象构件类,定 ...

  4. SQL不同服务器数据库之间的数据操作整理(完整版)

    ---------------------------------------------------------------------------------- -- Author : htl25 ...

  5. 一款经典的jQuery slidizle 幻灯片

    jQuery广告幻灯片进度条,水平/左右切换,垂直/上下切换,自动播放,缩略图列表切换 在线实例 默认效果 水平/左右切换 垂直/上下切换 循环 自动播放 缩略图 进度条 回调函数 使用方法 < ...

  6. Summernote – 基于 Bootstrap 的文本编辑器

    Summernote 是一个简单,灵活,所见即所得(WYSIWYG)的编辑器,基于 jQuery 和 Bootstrap 构建.Summernote 所有主要的操作都支持快捷键,有一个功能强大的 AP ...

  7. Debug - 支持浏览器和 Node 平台的全端调试工具

    Debug 是一个跟踪调试消息的 JavaScript 库.因为它只是对 console.log 的包装,所以支持 Node 和浏览器.它允许你过滤日志输出而不需要改变你的源代码,也输出时间差异,可以 ...

  8. CSS3背景温故

    1.背景的五种基本属性background-color(背景颜色)background-image(背景图片)background-repeat(背景图片展示方式)background-attachm ...

  9. java--POI解析excel兼容性问题

    近日,使用POI解析excel,发现2003版本的excel解析与2007版本的excel解析存在问题.特此总结: 1.所需jar包 : 2.java类代码(读取excel文件): public vo ...

  10. Html技巧 语义化你的代码

    首先是关于语义(Semantics)和默认样式的区别,默认样式是浏览器设定的一些常用tag的表现形式,语义化的主要目的就是让大家直观的认识标签(markup)和属性(attribute)的用途和作用. ...