前言:
- 好久没写Vim插件了,这次给Vimer们带来个好福利!-- 用Vim(gVim)发腾讯微博
- 昨晚折腾了大半夜,总算成功实现!~~ 当然,代价就是今天头痛的厉害……
昨天突发奇想,当我用vim读文档,看代码的时候,如果有一段我觉得特别好,想要分享给大家,有没有快捷点的方式呢? 所以需求也就来了,在Vim里面分享内容~而目前用的最广的,自然是微博~(由于笔者只用腾讯微博,所以只实现了腾讯微博……)
细化一下功能:
- 分享文章中的一段文字,并支持评论
- 直接发送微博
如果你读这篇文章比较早,应该还能看到页面右侧的微博里有这条微博:
花了一晚上,终于把用vim发腾讯微博给折腾出来了,明天写博客跟大家分享,敬请期待! 来自weibo.vim
在正式开始介绍之前,声明一下:
- 文中所使用的QQ登录的API均为对外公开的API,不存在任何使用保密API的问题
- 笔者是用 vimer.cn 来申请了 QQ登录,但是access_token在生成之后,笔者不会对这个信息做任何保存,如果有所怀疑,请不要使用。
- weibo.vim插件本身不会主动发起任何发送微博的操作
OK,废话不多说,开始介绍吧
一. 环境依赖
- python
二. 安装
- 去 http://www.vim.org/scripts/script.php?script_id=3839 下载 weibo.vim
- 将 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
- 点击如下链接:
- 生成access_token
- 在进行QQ登录之后,会跳转到类似如下链接:
- http://www.vimer.cn/#access_token=4E6421B8719124324217AF48E085F&expires_in=7776000 其中access_token=后面的即要获取的access_token。
- 将其配置到第二步的g:weibo_access_token中。
如果在使用中,提示 access_token 过期的话,只要按照上面的步骤重新申请一遍即可。
五. 命令
- 分享选中的的文字
- 选中要分享的文字后,按下 “,at”, 如果不需要写评论,则直接回车;如果需要评论,则输入空格后,输入评论,回车。
- 直接发送微博
- 在normal模式下,直接按下 “,at”, 输入空格后,输入文字,回车。
OK,就是这样,enjoy it!
最后再贴一下下载地址: http://www.vim.org/scripts/script.php?script_id=3839
kikyous on #
弄个新浪的吧,新浪的也有python接口
Reply
Dante on #
嗯,近期考虑支持。
Reply
helloxyz on #
弄个twitter的才对
Reply
Dante on #
vim.org已经有了的。
Reply
youanan on #
哦,去找找看!
Reply
ieipi on #
发表失败! 可能原因为: access_token无效或者过期、网络有问题
按步骤四重新生成还是有问题
Reply
Dante on #
没道理呀,把插件113行的注释打开
<pre lang="python" line="1">
#print 'exception occur.msg[%s], traceback[%s]' % (str(e), __import__('traceback').format_exc())
</pre>
看一下详细错误?
Reply
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
Dante on #
貌似是access_token无效,导致没有换取成功的openid,可否打印一下82行的data?
Reply
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
Dante on #
就是access_token的问题哦。。
Reply
ieipi on #
那该咋整呢
Reply
Dante on #
生成的方法是按照文中说的吗??
Reply
Dante on #
你不会直接用的这个token把?
4E6421B8719124324217AF48E085F
Reply
ieipi on #
我错了
我把后面的&expires_in=7776000也一起拷贝过去了
Reply
Dante on #
汗。。。
Reply
vimest on #
进来直接看到插件名字,就以为是weibo.com的插件,汗。
刚才试了下,登录跳转的时候没有出气那token链接,不知道是啥问题。
如果下次出了新浪微博的插件,不知道该叫什么名字好了。
Reply
Dante on #
特意试了一下,可以出token呀。。
呃,说起来我很期待一个和我一样骨灰的vimer,特意写一个新浪微博的版本。。
Reply
vimest on #
可能是浏览器的问题吧,我用的opera。
Reply
vimest on #
刚刚又试了下,还是没有。但实际是有的。在用firebug看的时候会有请求,第二次的时候就速度复制下来了,嘿嘿。
Reply
Dante on #
哈哈,标准程序员风格~~ 咱博客就喜欢这样的~~
Reply
vimest on #
我也喜欢这样的,哈哈,可是我不喜欢男的。
Reply
Dante on #
哈哈哈哈~~~
Reply
vimest on #
HOHOHOHO~~~
Reply
zcq100 on #
获取token直接就跳你博客首页了,看都没看清楚。
还有,你不会把跳过来的accessToken都保存了吧。
Reply
Dante on #
关于token怎么获取,请仔细看文章。
关于token是否保存,如果有所怀疑,请不要使用。
原文引用:
笔者是用 vimer.cn 来申请了 QQ登录,但是access_token在生成之后,笔者不会对这个信息做任何保存,如果有所怀疑,请不要使用。
Reply
石牛 on #
能不能把access_key改成新浪那边的呢,然后就发新浪微博了,能实现么?
Reply
Dante on #
这个做不到。
新浪那边有自己的权限控制,而且发微博的链接也都不一样。
Reply
vimest on #
有了这插件我放弃了新浪微博了。
Reply
zdl1016 on #
dante, 你给腾讯微博挖了不少客户。应该授予你奖章。
Reply
MiaQ on #
很神奇的样子
Reply
Shiina Luce on #
中文编码似乎有点问题?发送出去是乱码……gVim的$LANG和langmenu都设成en_US.UTF-8了
Reply
广东省企业信息中心 on #
<a href="http://www.8sme.com/" rel="nofollow">很精彩的文章!支持一下。</a>
Reply
www.chaojishop.com on #
来顶博主了。
Reply
flay521 on #
我用类似vim快捷键做一个客户端。可以试一下。
Reply
Dante on #
嗯? 链接是?
Reply
x-snail on #
别的都会就是那修正pythony不太懂,因为现在没有接触过python,望博主能告诉如何解决,现在的情况是打开vim提示无法加载python27.dll,此命令不可用,
Reply
Dante on #
装一下python2.7
Reply
gabriel on #
请问出现”处理 function 24 AddT 时发生错误“怎么处理!
Reply
Dante on #
呃,这个能把详细信息贴出来吗?
Reply
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
Dante on #
应该是编码的问题,你打开文件的默认编码是utf8吗?要是utf8才行。
这个导出的问题,之前也和很多朋友聊过。。貌似还有方案的说。。
Reply
gabriel on #
看了set encoding 和set fileencoding,都是utf-8,我是使用linux系统和默认的python 2.6.5,这个会有影响吗?
Reply
未来走过 on #
呵呵
Reply
笨猫猫 on #
新手。。。那个 ",at" 怎么按啊?
Reply
Michael Ding on #
就是依次在键盘上按",at"三个键,要在normal模式下或者visual模式下,要按得快
Reply
vimtips on #
专门分享vim 技巧的新浪微博,欢迎@vimtips,http://weibo.com/u/2628187703
Reply
Michael Ding on #
Hi,想参与开发新浪微博版:-),如果楼主去申请weibo的appkey,我乐意来尝试做微博版
Reply
hi on #
linux终端下的vim可以实现么
Reply
sarrow104 on #
围脖,没用过这东西。我连个人网站、博客都没有弄过。
Reply
Mika_sleeping on #
下面的分享,选中后直接按,at这怎么弄啊,还有,我的为什么只显示 发表失败! 可能原因为: access_token无效或者过期、网络有问题
我的网没有问题啊?access_token也没有问题啊?
Reply
charstale on #
测试了下,是挺方便的,但是不能同步到qq空间里的说说,求帮助,直接用腾讯微博发是可以同步的
Reply