最后更新于 .

新年回来一直忙于工作,今天忙里偷闲赶紧更新一篇,也给大家拜个晚年~~OK,废话不多说,直接进入正题~ 老博友应该知道本博曾经写过一款自动添加作者信息的插件,链接如下:Vim在源代码中自动添加作者信息 这次对这款插件做了更新,并放到http://www.vim.org上提供下载: AuthorInfo : http://www.vim.org/scripts/script.php?script_id=2902 目前AuthorInfo是支持c,cpp,java,php,python,bash,makefile等等多种语言,基本上只要NERD Commenter支持的类型,AuthorInfo都默认支持~这里展示几个例子,先给大家show一下:

c:

/*=============================================================================
#  Author:          dantezhu - http://www.vimer.cn
#  Email:           zny2008@gmail.com
#  FileName:        test2.cpp
#  Description:     
#  Version:         0.0.1
#  LastChange:      2011-02-15 19:46:03
#  History:         
=============================================================================*/

php:

<?php
/*=============================================================================
#  Author:          dantezhu - http://www.vimer.cn
#  Email:           zny2008@gmail.com
#  FileName:        test4.php
#  Description:     
#  Version:         0.0.1
#  LastChange:      2011-02-15 19:46:30
#  History:         
=============================================================================*/
?>

python:

#!/usr/bin/python
# -*- coding: utf-8 -*-
'''
#=============================================================================
#  Author:          dantezhu - http://www.vimer.cn
#  Email:           zny2008@gmail.com
#  FileName:        y.py
#  Description:     
#  Version:         0.0.1
#  LastChange:      2011-02-15 19:46:52
#  History:         
#=============================================================================
'''

OK,简单说一下AuthorInfo的安装方法:

  • 1.安装The NERD Commenter
  • 2.将AuthorInfo下载后放到plugin目录下
  • 3.在vimrc中进行如下配置:
    let g:vimrc_author='dantezhu' 
    let g:vimrc_email='zny2008@gmail.com' 
    let g:vimrc_homepage='http://www.vimer.cn' 
    
    nmap <F4> :AuthorInfoDetect<cr> 

     

当然,作者名字和邮箱,主页等,请使用个人的配置。 OK,这样在vim中首次按下F4就可以添加作者信息,再次按下就可以自动更新啦. 需要特别说明的是,AuthorInfo在程序中也做了一些小优化:

  • 1.比如对于python,bash等来说,由于文件头经常会有
    #!/usr/bin/python
    # -*- coding: utf-8 -*-

    这种定义,AuthorInfo会自动判断如果发现类似的行,会在这种行之后添加作者信息(参见上文中的python例子),同样对于php,也会自动在<?php之后添加.
  • 2.对于python这种语言,__doc__是可以直接取到作者信息的注释的,所以AuthorInfo自动将python的注释变成了__doc__可以认的格式。

OK,赶紧去试试吧~~

Pingbacks

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. xlii

    xlii on #

    123 if hasMul == 1
    124 exe 'normal '.firstLine.'Gv'.lastLine.'G,cm'
    125 else
    126 exe 'normal '.firstLine.'Gv'.lastLine.'G,cl'
    127 endif

    It seems that the mapleader is hardcoded to be ","
    while calling the NERD Commenter.

    Reply

    1. Dante

      Dante on #

      这里的","不是mapleader哦,NERD Commenter就是用","来做第一个字符而已~

      Reply

    2. Dante

      Dante on #

      实在不好意思,我去下了NerdComment的最新版本才发现他的映射已经不是用","写死了,已经上传了最新版本。

      Reply

  2. baby walker

    baby walker on #

    做一个字符是什么意思?是空一个还是就举个例子什么的。

    Reply

    1. Dante

      Dante on #

      ?啥叫做一个字符?

      Reply

      1. baby walker

        baby walker on #

        就是“,”啊,上面的留言看的。。。

        Reply

        1. Dante

          Dante on #

          实在不好意思,我去下了NerdComment的最新版本才发现他的映射已经不是用”,”写死了,已经上传了最新版本。

          Reply

  3. 9hills

    9hills on #

    Good!

    Vim确实神器。。。

    Reply

    1. Dante

      Dante on #

      哈哈,确实如此~~

      Reply

  4. fanhe

    fanhe on #

    借宝地问一个NERD Commenter的问题。NERD Commenter好像注视的时候是在第一个非空字符前添加注释标记。但是我不太喜欢这样,我一般喜欢在行首添加。例如在c源码里,一般都带有缩进,这样在行首添加注释标记不会导致正行后移几个字符。NERD Commenter有这个功能吗。我挺喜欢之前用过的linecommenter的,就是我说的这样注释,只是功能少点而已。

    Reply

    1. Dante

      Dante on #

      你说的确实没有的,应该是思想不同吧,举个例子
      <pre lang="cpp" line="1">
      int main(int argc, const char *argv[])
      {
      return 0;
      }
      </pre>
      注释之后为
      <pre lang="cpp" line="1">
      //int main(int argc, const char *argv[])
      //{
      // return 0;
      //}
      </pre>
      即保证注释都在同一列上,但是如果只注释return 0;这一行就会如下

      <pre lang="cpp" line="1">
      //return 0;
      </pre>

      Reply

  5. max

    max on #

    不知道为什么,我安装了但F4后的信息不正确,The NERD Commenter与AuthorInfo都是vim.org上下载的最新版,C文件出来的信息是这样的
    #==========================
    # FileName: fun.c
    # Desc:
    # Author: Max - http://
    # Email:
    # Version: 0.0.1
    # LastChange: 2011-02-19 10:26:39
    # History:
    #==========================

    Reply

    1. Dante

      Dante on #

      好奇怪,你按下,cl的时候,能正确的注释吗?

      Reply

      1. max

        max on #

        可以正确注释的呢

        Reply

      2. max

        max on #

        哦,似乎跟我的是\有关,我设置成,就OK了。只能用,做?

        Reply

        1. Dante

          Dante on #

          我已经放了最新版本,设置成,和\都可以了,要在vimrc里面加上

          <pre lang="vim" line="1">
          let mapleader = '\'
          let g:mapleader = '\'
          </pre>

          之类的定义即可

          Reply

          1. max

            max on #

            好的,辛苦了

            Reply

  6. 君临天下

    君临天下 on #

    好久没有又发了很多文章,需要慢慢品味!

    Reply

    1. Dante

      Dante on #

      拙文而已,一起多多交流~~

      Reply

  7. kikyo

    kikyo on #

    # Version: 0.0.1

    # LastChange: 2011-02-15 19:46:52

    这个LastChange和Version会自动更新吗?

    Reply

    1. Dante

      Dante on #

      LastChange 会。
      Version因为不知道要变成多少,所以不会。

      Reply

      1. 依云

        依云 on #

        我以前也搞过 Last Change,后来用 git 管理配置了,发现不仅不必要了,而且每次看着它在变更里出现感觉很烦,就去掉了。

        Reply

        1. kikyo

          kikyo on #

          我还是觉得很有必要的,如果不用git就不知道你最后的更新。

          给个建议,加上创建时间吧。

          // @Created: Fri 04 Mar 2011 11:23:11 PM CST

          关于version,我的处理方法:

          // @Revision: 153

          Revision从1开始,当 &amp;modified &amp;&amp; &amp;modifiable 为真时,:wq之后将Revision加1

          Reply

          1. 依云

            依云 on #

            Revision 还是交给版本控制比较好吧?

            Reply

  8. lvxue

    lvxue on #

    我也写了一个:)有空发上来。

    Reply

  9. zhanglistar

    zhanglistar on #

    博主 我想问下你用vim写代码,如何调试? 是开两个term调试呢? 还是把gdb集成到vim里???
    其实,本来我都是开两个term调试的,不过最近看了emacs,可以在emacs里直接调用gdb调试,我去vimonline看了下,好像还没有特别给里的工具。。。。搞的我有点想投入emacs的怀抱了。。。。 博主,拉我一把,怎么在vim里用gdb 调试????

    Reply

    1. fanhe

      fanhe on #

      可以用 pyclewn。
      vim的调试能力远远不足,你如果想找个ide,别找vim,这是vim的软肋。如果你能喜欢emacs,就用emacs吧

      Reply

    2. Dante

      Dante on #

      很多博友都反馈了这种想法,不过对我自己确实从来没想过在vim中用gdb,所以今天也特意试了一下。
      有三种选择:
      1.gdbmgr,这个是纯vim插件,今天用了一下午,确实装上就可以用,也很炫,但是经常报错。果断卸载。
      2.vimgdb
      可以看看易水博客的文章:
      http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/
      3.pyclewn/clewn
      http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-pyclewn/

      Reply

      1. zhanglistar

        zhanglistar on #

        谢谢博主的回复。
        易水博客的那两篇文章我都看过了,
        算了,目前还是没有太给力的插件,
        还是用老颁办法吧。
        这不影响对vim的喜爱。

        Reply

  10. 荒野无灯

    荒野无灯 on #

    正需要这样的插件呢,收下了。

    Reply

  11. 荒野无灯

    荒野无灯 on #

    我F2用作NERDTreeToggle,F3用作Taglist
    F4用作BlogList ,F5到F9 ,F12 用作php debugger
    已经没有Fn可以map 了。。。
    只得:nnoremap aid :AuthorInfoDetect

    Reply

    1. Dante

      Dante on #

      嗯嗯,其实我觉得F*离手指有点远,用字母打起来更快捷一些。

      Reply

  12. 最美不过相识

    最美不过相识 on #

    谢谢博主分享,这个插件找了很久 呵呵

    Reply

  13. kevinbin

    kevinbin on #

    博主你好 用了你的插件很好用,但遇到些问题。现在用pathogen来管理vim插件,调用authorinfo插件时候 会提示e492 not-an-editor-command authorinfodetect 不知道是什么原因,装有nerdcommenter插件。 没用pathogen之前是正常的

    Reply

    1. Dante

      Dante on #

      你好,没用过pathogen。。。

      Reply

      1. amaoxiong

        amaoxiong on #

        博主:我使用和pathogen类似的VUNDLE管理插件,也报E492:不是编辑器的命令:AuthorInfoDetect,后来在git上搜索Authorinfo插件,用了一个把authorinfo.vim放在plugin而不是ftplugin里的变体,就可以使用了。看你前面的安装说明也是在plugin目录里,但在git上就是ftplugin里了,可能是这个原因造成的错误

        Reply

  14. Zhao Cai

    Zhao Cai on #

    authoinfo 在bash下面产生的注释不对,# 跑到后面去了,能不能fix一下。谢谢。

    ============================================================================== #
    FileName: test.sh #
    Desc: #
    Author: Zhao Cai #
    Email: caizhaoff@gmail.com #
    HomePage: #
    Version: 0.0.1 #
    Date Created: Tue Aug 16, 2011 04:46PM #
    Last Modified: Tue Aug 16, 2011 04:46PM #
    History: #
    ============================================================================== #

    Reply

    1. Dante

      Dante on #

      我这里正常呀?
      不过倒是发现
      #!xxx之类的不会被自动跳过,放新版本改了。

      Reply

  15. Scorpio

    Scorpio on #

    您好,請問我按照您的提示在.vimrc裏添加了:
    let g:vimrc_author='dantezhu'
    let g:vimrc_email='zny2008@gmail.com'
    let g:vimrc_homepage='http://www.vimer.cn'

    nmap :AuthorInfoDetect
    同時,也將authorinfo.vim移到了~/.vim/plugin
    但是我在運行的時候出現了:(之前未有此情况,此期間.vimrc没有其他改動)
    No mapping found
    Press ENTER or type command to continue
    在vim裏面也無法使用本插件。
    我更新了runtimepath,以嘗試把F4換成别的,但是也無法解决這個問題。
    在Google查詢了很多網頁之後也没有找到解决方案。請問,這種我現在該做些什麽?如何處理這個問題?
    我使用的是mac os x 10.6.8 vim 7.3

    Reply

    1. nswutong

      nswutong on #

      scriptnames看一下有没有加载脚本

      Reply

      1. Scorpio

        Scorpio on #

        謝謝你,我已經解决這個問題了。是因爲命令的格式有問題。因爲我對於一些内容作了修改,然後格式出現了錯誤。我看過vim命令格式的語法之後,已經結局問題了。

        謝謝
        scorpio

        Reply

  16. nswutong

    nswutong on #

    建议博主改一下插件分类,https://github.com/vim-scripts/AuthorInfo这里更新时候默认放到了ftplugin目录下面

    Reply

    1. Dante

      Dante on #

      我很困惑很困惑的是。。我没有把这些插件传到github去过呀。。。

      Reply

      1. nswutong

        nswutong on #

        所有插件都会被默认同步过去的,我用这个来更新插件,比什么插件管理器都方便,哈~

        Reply

  17. wind128

    wind128 on #

    我想要这如下样式的,应该如何修改?
    /**
    * FileName: 88.html
    * Desc:
    * Author: dantezhu
    * Email: zny2008@gmail.com
    * HomePage: http://www.vimer.cn
    * Version: 1.0.0
    * LastChange: 2012-02-11 23:44:50
    * History:
    */

    Reply

    1. Dante

      Dante on #

      呃,这个研究一下代码吧。。

      Reply

  18. Andy

    Andy on #

    "自动添加格式
    map ggi#!/usr/bin/python# -*- coding: utf-8 -*-:w
    imap ggi#!/usr/bin/python# -*- coding: utf-8 -*-:w
    vmap ggi#!/usr/bin/python# -*- coding: utf-8 -*-:w

    Reply

    1. Andy

      Andy on #

      回复怎么自动转换格式了

      Reply

  19. whitemacboy

    whitemacboy on #

    用Vundle安装的,也安装了The NERD Commenter,单用《F4》时候,显示E492:不是编辑器的命令:AuthorInfo;

    求助啊。谢谢先。

    Reply

  20. http://instanthealthmakeover.com

    http://instanthealthmakeover.com on #

    Hello this is kind of of off topic but I was wanting to know if blogs use WYSIWYG editors or if you have to manually code with
    HTML. I'm starting a blog soon but have no coding know-how so I wanted to get advice from someone with experience. Any help would be greatly appreciated!

    Reply

  21. leyle

    leyle on #

    这个好用,已经添加到我的vim配置里面了。多谢博主了。

    Reply

  22. crysisfair

    crysisfair on #

    额这个功能挺实用啊,为什么不加上去呢?我把你的代码hack了一下,每次更新最后一个Version自动加1,现在感觉挺不错,你看看?if line =~ '^.*Version:S*.*$' let ver_str_list = split(line, '.zs') let ver_str_list_len = len(ver_str_list) let ver_last_num = ver_str_list[ver_str_list_len - 1] let ver_str_list[ver_str_list_len - 1] = str2nr(ver_last_num) + 1 let newline = join(ver_str_list, '') call setline(n,newline) let updated = 1 endif这段就加在TitleDet()里面。

    Reply

    1. 朱念洋

      朱念洋 on #

      赞,这样也挺好~

      Reply

  23. 街角的幸福

    街角的幸福 on #

    楼主,要怎么安装插件啊,我新手

    Reply

发表评论