• 个人的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的余下工作。

  • 相关阅读:
    模拟实现atoi函数
    C语言中的字符串函数的实现,strcpy,strlen,strcat,strcmp
    使用repeater实现gridview的功能
    使用NPOI随意创建Excel(含下拉列表)
    使用存储过程来动态调用数据(SELECT)
    判断sql执行效率以及针对临时表的使用
    C#读取Excel显示到repeater中
    ASP.NET使用后台更改前台Style
    js格式化日期
    查询某张表的表结构
  • 原文地址:https://www.cnblogs.com/zheng39562/p/4255358.html
Copyright © 2020-2023  润新知