zoukankan      html  css  js  c++  java
  • 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 

     1 function! g:UltiSnips_Complete()
     2   call UltiSnips#ExpandSnippet()
     3   if g:ulti_expand_res == 0
     4     if pumvisible()
     5       return "<C-n>"
     6     else
     7       call UltiSnips#JumpForwards()
     8       if g:ulti_jump_forwards_res == 0
     9         return "<TAB>"
    10       endif
    11     endif
    12   endif
    13   return ""
    14 endfunction
    15 
    16 function! g:UltiSnips_Reverse()
    17   call UltiSnips#JumpBackwards()
    18   if g:ulti_jump_backwards_res == 0
    19     return "<C-P>"
    20   endif
    21 
    22   return ""
    23 endfunction
    24 
    25 
    26 if !exists("g:UltiSnipsJumpForwardTrigger")
    27   let g:UltiSnipsJumpForwardTrigger = "<tab>"
    28 endif
    29 if !exists("g:UltiSnipsJumpBackwardTrigger")
    30   let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
    31 endif
    View Code

    2,为上面的函数创建一个自动BufEnter

    1 au InsertEnter * exec "inoremap <silent> " . g:UltiSnipsExpandTrigger     . " <C-R>=g:UltiSnips_Complete()<cr>"
    2 au InsertEnter * exec "inoremap <silent> " .     g:UltiSnipsJumpBackwardTrigger . " <C-R>=g:UltiSnips_Reverse()<cr>"
    View Code
  • 相关阅读:
    JavaScript 获取来源地址
    JavaScript 调试&显示变量
    JavaScript Math对象
    JavaScript 封闭函数
    常见泛型委托
    使用BindingSource绑定数据库
    Case Reply
    RSS订阅
    ADO.NET
    泛型的优点
  • 原文地址:https://www.cnblogs.com/ghostwu/p/8124589.html
Copyright © 2011-2022 走看看