zoukankan      html  css  js  c++  java
  • 个人的IDE制作(vim)——适用于C++/C

    引用文章A:http://learnvimscriptthehardway.onefloweroneworld.com/

    引用介绍:初学者建议通读一遍。对VIM能有整体性的了解。

    引用文章B:http://blog.csdn.net/wooin/article/details/1858917

    引用介绍:文章本身很好。但把我坑了两天。无它,此博文补全功能不支持C++。但建议浏览,因为可以从整体上知晓如何配置IDE。

    引用文章C:http://easwy.com/blog/archives/advanced-vim-skills-omin-complete/comment-page-1/

    引用介绍:通过此文完成C++补全功能。似乎也是一个系列。有空阅读后再“补全”吧。

    首先,希望制作IDE的孩子们摆正心态。不要期待能够有一个和VS媲美的IDE。VIIM仅仅是一个编辑器而已。

     本文中尚存在疑惑,可以参考以上引用文章。此文并非初学者教程,而是初学者练习结果。所以,更偏向于个人备忘而非教学。

    所以,推荐阅读引用文章。当对引用文章存在疑问时,可以参考此文。

    我的VIM配置:www.github.com/zheng39562/vimrc

    文中需要注意的事项:

    1,符号$ 如无特别指明,皆表示后跟着一个自定义变量。如$path。path表示路径。具体设置,且勿直接带入。

    2,文中大部分插件都可以使用help找到帮助文档。通过阅读帮助来获得更多信息。

    一、语法高亮。

    1:初学者建议使用默认高亮。在vimrc中添加。

    syntax enable
    syntax on

    2:GVIM中可以选择配色。具体在:编辑->配色方案。

    3:如果想添加自己的语法高亮,可以在路径:~/.vim/syntax/中添加。

      1,引用文章B中,有一个简短的例子。

    二、函数,变量,宏的搜索和补全:Ctags。

    1:首先需要安装ctages。此软件通常是默认安装的,如果不是,可以尝试yum(但不确定是否有此软件)或者去官网下载http://ctags.sourceforge.net

    2:使用。

      1,如果是C,只需要输入:ctags -R。如果是C++,默认补全是不支持的,需要安装插件OmniCppComplete。地址:http://www.vim.org/scripts/script.php?script_id=1520

      2,在工程的最上级目录输入指令。下面是C++的补全指令。

    ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
    --c++-kinds=+p  : 为C++文件增加函数原型的标签
    --fields=+iaS   : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
    --extra=+q      : 为标签增加类修饰符。注意,如果没有此选项,将不能对类成员补全

        1)需要注意,每次定义了新的函数或类型,需要更新tags文件。暂时还未找到简易方法。对此有一个初步想法:将其定义成vim快捷键。但实现还存在困难。

      3,声彻tags文件后,你需要在你的当前文件中输入:set tags= $current_path/tags.  $current_path是指工程目录最上级目录。如果此工程目录是常用的,可以添加的.vimrc中。

      4,完成以上步骤后,可以尝试 <C-]>  <C-T> 来确定功能是否成功。

        1)<C-]> : 跳到定义处。  <C-T> : 回跳。

    3:补全功能:文中的补全功能,需要tags文件支持。

    三、源代码总览:TagList。

      1,作用:可以列出当前源文件的函数,变量,类等。对源代码有整体的概览。

        1)此为vim插件。可以在官网下载。

      2,需要在vimrc中添加设置:

    let Tlist_Show_One_File=1
    let Tlist_Exit_OnlyWindow=1

      3,可以使用Tlist打开此插件。

      4,还有很多其他功能,但因时间和需求,暂时搁置。

    四、文件浏览器:netrw.vim

      1,作用:查看当前目录中包含的文件。指令:e $path

      2,常用的目录和文件操作:

    <F1> 显示帮助
    <cr> 如果光标下是目录, 则进入该目录; 如果光标下文件, 则打开该文件
    - 返回上级目录
    c 切换vim 当前工作目录正在浏览的目录
    d 创建目录
    D 删除目录或文件
    i 切换显示方式
    R 文件或目录重命名
    s 选择排序方式
    x 定制浏览方式, 使用你指定的程序打开该文件

    五、窗口管理器:WinManager

      1,作用:可以理解成分窗口的工具。

      2,一个例子:同时打开TList和netrw。可以添加到vimrc中尝试效果。

    et g:winManagerWindowLayout='FileExplorer|TagList'
    nmap wm :WMToggle<cr>

    六、ctags加强版:Cscope.

      1,使用。下载地址:http://cscope.sourceforge.net。

        1)需要解压,编译后安装。不确定yum有没有。

        2)安装好后,在vimrc中添加:set cscopequickfix=s-,c-,d-,i-,t-,e-  // 设定使用quickfix窗口

        3)使用cs需要在工程根目录下设置。

    cscope -Rbq 

      2,"cscope find"的用法: cs find c|d|e|f|g|i|s|t name

    0 或 s 查找本 C 符号(可以跳过注释)
    1 或 g 查找本定义
    2 或 d 查找本函数调用的函数
    3 或 c 查找调用本函数的函数
    4 或 t 查找本字符串
    6 或 e 查找本 egrep 模式
    7 或 f 查找本文件
    8 或 i 查找包含本文件的文件

        1)以下是参考映射:个人更喜欢的映射前缀为:<leader>f。此为引用文章B复制而来,下述指令为通过本人验证,无法确保其正确性。

    nmap <C-_>s :cs find s <C-R>=expand("<cword>")<CR><CR>
    nmap <C-_>g :cs find g <C-R>=expand("<cword>")<CR><CR>
    nmap <C-_>c :cs find c <C-R>=expand("<cword>")<CR><CR>
    nmap <C-_>t :cs find t <C-R>=expand("<cword>")<CR><CR>
    nmap <C-_>e :cs find e <C-R>=expand("<cword>")<CR><CR>
    nmap <C-_>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
    nmap <C-_>i :cs find i <C-R>=expand("<cfile>")<CR><CR>
    nmap <C-_>d :cs find d <C-R>=expand("<cword>")<CR><CR>

     七、报错窗口:quickfix.

      1,介绍:vim自带窗口。机制:将报错信息储存在于一个默认文件中,并使用quickfix打开。

      2,指令:可是在很多场合使用。也可以过滤部分报错。具体设置,需要进一步学习。

    cw // 打开quickfix
    cn // 下一个结果。
    cp // 上一个结果。

    八、多文件浏览(多BUFFER):MiniBufExplorer

      1,效果:打开二个以上文件时,就会自动出现。

      2,指令:TAB / <C-Tab> 进行切换。

    九、h/c文件切换:插件A。引用文章B。

      1,未使用。

    十、搜索和高亮书签:Grep | VisualMark。引用文章B。

      1,未使用。

    十一、补全功能。

      1,功能:补全函数,类,宏等等。

        1)依赖:tags文件。

        2)可以阅读:help new-omni-completion 了解更多详情。

        3)需要在vimrc添加:(暂时不懂原理)

    filetype plugin indent on
    set completeopt=longest,menu

      2,一些补全功能快捷键。

    Ctrl+P 向前切换成员
    Ctrl+N 向后切换成员
    Ctrl+E 表示退出下拉窗口, 并退回到原来录入的文字
    Ctrl+Y  表示退出下拉窗口, 并接受当前选项
       
    Ctrl+X Ctrl+L 整行补全
    Ctrl+X Ctrl+N 根据当前文件里关键字补全
    Ctrl+X Ctrl+K 根据字典补全
    Ctrl+X Ctrl+T 根据同义词字典补全
    Ctrl+X Ctrl+I 根据头文件内关键字补全
    Ctrl+X Ctrl+] 根据标签补全
    Ctrl+X Ctrl+F 补全文件名
    Ctrl+X Ctrl+D 补全宏定义
    Ctrl+X Ctrl+V 补全vim命令
    Ctrl+X Ctrl+U 用户自定义补全方式
    Ctrl+X Ctrl+S 拼写建议

      3,补全功能的缺陷:需要更新tags文件。如果新定义一个类或函数,需要更新tags文件。 

        1)正在尝试直接使用vim快捷键解决此问题。但暂时看来似乎不行。如有成功者,期望能够评论或email:zheng39562@163.com

    十二、补充。

      1,因为时间和需求原因。部分的插件和功能并未完全按张引用文B中来执行。而且,个人并不太希望用太多的插件,而更希望了解机制和原理后,自行完成IDE的余下工作。

  • 相关阅读:
    Leetcode 15 3Sum
    Leetcode 383 Ransom Note
    用i个点组成高度为不超过j的二叉树的数量。
    配对问题 小于10 1.3.5
    字符矩阵的旋转 镜面对称 1.2.2
    字符串统计 连续的某个字符的数量 1.1.4
    USACO twofive 没理解
    1002 All Roads Lead to Rome
    USACO 5.5.1 求矩形并的周长
    USACO 5.5.2 字符串的最小表示法
  • 原文地址:https://www.cnblogs.com/zheng39562/p/4255358.html
Copyright © 2011-2022 走看看