最后更新于 .

前言:

  • 好久没写Vim插件了,这次给Vimer们带来个好福利!-- 用Vim(gVim)发腾讯微博
  • 昨晚折腾了大半夜,总算成功实现!~~ 当然,代价就是今天头痛的厉害……

昨天突发奇想,当我用vim读文档,看代码的时候,如果有一段我觉得特别好,想要分享给大家,有没有快捷点的方式呢? 所以需求也就来了,在Vim里面分享内容~而目前用的最广的,自然是微博~(由于笔者只用腾讯微博,所以只实现了腾讯微博……)

细化一下功能:

  1. 分享文章中的一段文字,并支持评论
  2. 直接发送微博

如果你读这篇文章比较早,应该还能看到页面右侧的微博里有这条微博:

花了一晚上,终于把用vim发腾讯微博给折腾出来了,明天写博客跟大家分享,敬请期待! 来自weibo.vim

在正式开始介绍之前,声明一下:

  1. 文中所使用的QQ登录的API均为对外公开的API,不存在任何使用保密API的问题
  2. 笔者是用 vimer.cn 来申请了 QQ登录,但是access_token在生成之后,笔者不会对这个信息做任何保存,如果有所怀疑,请不要使用。
  3. weibo.vim插件本身不会主动发起任何发送微博的操作

OK,废话不多说,开始介绍吧

一. 环境依赖

  1. python

二. 安装

  1. http://www.vim.org/scripts/script.php?script_id=3839 下载 weibo.vim
  2. weibo.vim 放在 plugin目录

三. 配置 目前支持的配置如下:

  • g:weibo_access_token oauth2.0的access_token,是由QQ登录提供的授权token,貌似过期时间是1个月。后面会写出获取这个token的方法。
  • g:weibo_access_token 签名档,默认值是“来自weibo.vim”,如果不喜欢可以配置为空

在_vimrc中配置:

let g:weibo_access_token = '第四步会生成的access_token'

四. 生成access_token

  1. 点击如下链接:
  2. 生成access_token
  3. 在进行QQ登录之后,会跳转到类似如下链接:
  4. https://www.vimer.cn/#access_token=4E6421B8719124324217AF48E085F&expires_in=7776000 其中access_token=后面的即要获取的access_token。
  5. 将其配置到第二步的g:weibo_access_token中。

如果在使用中,提示 access_token 过期的话,只要按照上面的步骤重新申请一遍即可。

五. 命令

  1. 分享选中的的文字
  2. 选中要分享的文字后,按下 “,at”, 如果不需要写评论,则直接回车;如果需要评论,则输入空格后,输入评论,回车。
  3. 直接发送微博
  4. 在normal模式下,直接按下 “,at”, 输入空格后,输入文字,回车。

OK,就是这样,enjoy it!

最后再贴一下下载地址: http://www.vim.org/scripts/script.php?script_id=3839

Pingbacks

  1. 用Vim发新浪微博 - 死拍照的 on #

    [...] 前几天把笔记本上的gVim给小搞了下,正好看到这篇用Vim(gVim)发腾讯微博-weibo.vim,所以又想着把腾讯微博改成新浪微博的,可以学习下OAUTH,顺便还能看看Vim的插件开发。 [...]

Pingbacks已打开。

Trackbacks

引用地址

评论

  1. kikyous

    kikyous on #

    弄个新浪的吧,新浪的也有python接口

    Reply

    1. Dante

      Dante on #

      嗯,近期考虑支持。

      Reply

      1. helloxyz

        helloxyz on #

        弄个twitter的才对

        Reply

        1. Dante

          Dante on #

          vim.org已经有了的。

          Reply

          1. youanan

            youanan on #

            哦,去找找看!

            Reply

  2. ieipi

    ieipi on #

    发表失败! 可能原因为: access_token无效或者过期、网络有问题
    按步骤四重新生成还是有问题

    Reply

    1. Dante

      Dante on #

      没道理呀,把插件113行的注释打开

      <pre lang="python" line="1">
      #print 'exception occur.msg[%s], traceback[%s]' % (str(e), __import__('traceback').format_exc())
      </pre>

      看一下详细错误?

      Reply

      1. ieipi

        ieipi on #

        exception occur.msg['openid'], traceback[Traceback (most recent call last):
        File "", line 70, in handle_add_t
        File "", line 48, in api_get_openid
        KeyError: 'openid'
        ]
        发表失败! 可能原因为: access_token无效或者过期、网络有问题

        帮忙分析下吧

        Reply

        1. Dante

          Dante on #

          貌似是access_token无效,导致没有换取成功的openid,可否打印一下82行的data?

          Reply

          1. ieipi

            ieipi on #

            是直接用print data吗?

            callback( {"error":100016,"error_description":"access token check failed"} );
            exception occur.msg['openid'], traceback[Traceback (most recent call last):
            File "", line 72, in handle_add_t
            File "", line 50, in api_get_openid
            KeyError: 'openid'
            ]
            发表失败! 可能原因为: access_token无效或者过期、网络有问题

            Reply

            1. Dante

              Dante on #

              就是access_token的问题哦。。

              Reply

              1. ieipi

                ieipi on #

                那该咋整呢

                Reply

                1. Dante

                  Dante on #

                  生成的方法是按照文中说的吗??

                  Reply

                  1. Dante

                    Dante on #

                    你不会直接用的这个token把?
                    4E6421B8719124324217AF48E085F

                    Reply

                    1. ieipi

                      ieipi on #

                      我错了
                      我把后面的&amp;expires_in=7776000也一起拷贝过去了

                      Reply

                      1. Dante

                        Dante on #

                        汗。。。

                        Reply

  3. vimest

    vimest on #

    进来直接看到插件名字,就以为是weibo.com的插件,汗。
    刚才试了下,登录跳转的时候没有出气那token链接,不知道是啥问题。
    如果下次出了新浪微博的插件,不知道该叫什么名字好了。

    Reply

    1. Dante

      Dante on #

      特意试了一下,可以出token呀。。

      呃,说起来我很期待一个和我一样骨灰的vimer,特意写一个新浪微博的版本。。

      Reply

      1. vimest

        vimest on #

        可能是浏览器的问题吧,我用的opera。

        Reply

      2. vimest

        vimest on #

        刚刚又试了下,还是没有。但实际是有的。在用firebug看的时候会有请求,第二次的时候就速度复制下来了,嘿嘿。

        Reply

        1. Dante

          Dante on #

          哈哈,标准程序员风格~~ 咱博客就喜欢这样的~~

          Reply

          1. vimest

            vimest on #

            我也喜欢这样的,哈哈,可是我不喜欢男的。

            Reply

            1. Dante

              Dante on #

              哈哈哈哈~~~

              Reply

              1. vimest

                vimest on #

                HOHOHOHO~~~

                Reply

  4. zcq100

    zcq100 on #

    获取token直接就跳你博客首页了,看都没看清楚。
    还有,你不会把跳过来的accessToken都保存了吧。

    Reply

    1. Dante

      Dante on #

      关于token怎么获取,请仔细看文章。

      关于token是否保存,如果有所怀疑,请不要使用。

      原文引用:
      笔者是用 vimer.cn 来申请了 QQ登录,但是access_token在生成之后,笔者不会对这个信息做任何保存,如果有所怀疑,请不要使用。

      Reply

  5. 石牛

    石牛 on #

    能不能把access_key改成新浪那边的呢,然后就发新浪微博了,能实现么?

    Reply

    1. Dante

      Dante on #

      这个做不到。
      新浪那边有自己的权限控制,而且发微博的链接也都不一样。

      Reply

  6. vimest

    vimest on #

    有了这插件我放弃了新浪微博了。

    Reply

    1. zdl1016

      zdl1016 on #

      dante, 你给腾讯微博挖了不少客户。应该授予你奖章。

      Reply

  7. MiaQ

    MiaQ on #

    很神奇的样子

    Reply

  8. Shiina Luce

    Shiina Luce on #

    中文编码似乎有点问题?发送出去是乱码……gVim的$LANG和langmenu都设成en_US.UTF-8了

    Reply

  9. 广东省企业信息中心

    广东省企业信息中心 on #

    <a href="http://www.8sme.com/" rel="nofollow">很精彩的文章!支持一下。</a>

    Reply

  10. www.chaojishop.com

    www.chaojishop.com on #

    来顶博主了。

    Reply

  11. flay521

    flay521 on #

    我用类似vim快捷键做一个客户端。可以试一下。

    Reply

    1. Dante

      Dante on #

      嗯? 链接是?

      Reply

  12. x-snail

    x-snail on #

    别的都会就是那修正pythony不太懂,因为现在没有接触过python,望博主能告诉如何解决,现在的情况是打开vim提示无法加载python27.dll,此命令不可用,

    Reply

    1. Dante

      Dante on #

      装一下python2.7

      Reply

  13. gabriel

    gabriel on #

    请问出现”处理 function 24 AddT 时发生错误“怎么处理!

    Reply

    1. Dante

      Dante on #

      呃,这个能把详细信息贴出来吗?

      Reply

      1. gabriel

        gabriel on #

        具体信息如下:

        处理 function 24 AddT 时发生错误“
        第 11行:
        Traceback (most recent call last);
        File "", line 8, in
        File "", line 86, in handle_add_t
        UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 0: ordinal not in range(128)

        ps:这个是手动打的,另外想请教vim中如何导出错误信息!!

        Reply

        1. Dante

          Dante on #

          应该是编码的问题,你打开文件的默认编码是utf8吗?要是utf8才行。

          这个导出的问题,之前也和很多朋友聊过。。貌似还有方案的说。。

          Reply

          1. gabriel

            gabriel on #

            看了set encoding 和set fileencoding,都是utf-8,我是使用linux系统和默认的python 2.6.5,这个会有影响吗?

            Reply

  14. 未来走过

    未来走过 on #

    呵呵

    Reply

  15. 笨猫猫

    笨猫猫 on #

    新手。。。那个 ",at" 怎么按啊?

    Reply

    1. Michael Ding

      Michael Ding on #

      就是依次在键盘上按",at"三个键,要在normal模式下或者visual模式下,要按得快

      Reply

  16. vimtips

    vimtips on #

    专门分享vim 技巧的新浪微博,欢迎@vimtips,http://weibo.com/u/2628187703

    Reply

  17. Michael Ding

    Michael Ding on #

    Hi,想参与开发新浪微博版:-),如果楼主去申请weibo的appkey,我乐意来尝试做微博版

    Reply

  18. hi

    hi on #

    linux终端下的vim可以实现么

    Reply

  19. sarrow104

    sarrow104 on #

    围脖,没用过这东西。我连个人网站、博客都没有弄过。

    Reply

  20. Mika_sleeping

    Mika_sleeping on #

    下面的分享,选中后直接按,at这怎么弄啊,还有,我的为什么只显示 发表失败! 可能原因为: access_token无效或者过期、网络有问题

    我的网没有问题啊?access_token也没有问题啊?

    Reply

  21. charstale

    charstale on #

    测试了下,是挺方便的,但是不能同步到qq空间里的说说,求帮助,直接用腾讯微博发是可以同步的

    Reply

发表评论