vim中添加快速单词查询功能

本文内容转载整理自网上的文章,Vim - 闲耘™.Wiki > 其它技巧 > 翻译取词,原始作者不详

从github上下载的一些开源项目提供的文档是英文的,在vim里面看文档遇到不认识的单词还得用鼠标取词去查询, 特别不方便。于是去网上找给vim添加便捷单词查询功能的方法,整理在下面

首先需要安装一个shell下运行的词典工具stardict,可以使用下面的命令来安装

sudo apt-get install sdcv stardict stardict-tools 

安装完成后可以在shell里面使用sdcv命令来查询单词,stardict并没有自带字典文件,需要自己去下载字典文件, 可以用搜索引擎搜索stardict-langdao-ec-gb-2.4.2.tar.bz2来寻找字典数据包的下载地址, 将下载下来的包解压后放入/usr/share/stardict/dic中,这里可能会碰到权限问题,可以用命令来完成。 现在使用sdcv命令查询单词就能出现内容了

ubuntu:~1 sdcv terminal
Found 1 items, similar to terminal.
-->朗道英汉字典5.0
-->terminal
['tә:minәl]
n. 终端机, 终点, 末端, 极限, 终点站
a. 终点的, 定期的, 致死的, 结尾的, 末端的, 晚期的
【计】 终端; 终端设备
【化】 接线端
【医】 终末的, 末端, 端
【经】 终站, 终点, 定期
  

下面就是给vim添加命令,让vim调用shell命令去查询单词,把结果显示到vim中,在vimrc中添加下面的函数, 需要查词的时候把光标移动到要查的词内,默认使用<leader>f进行查询,在左侧会打开一个窗口,显示查询结果。 快捷键和窗口的设置都可以通过修改下面的函数来进行自定义。网上提供的函数代码,打开查询结果的窗口后光标也会跟随到新窗口去, 还需要再通过命令跳转回文本窗口,不是很方便。我在函数后面加了一行命令 "wincmd p",来跳转回刚才的窗口,这样查词就方便多了

function! Mydict()
"执行sdcv命令查询单词的含义,返回的值保存在expl变量中
let expl=system('sdcv -n ' . expand("<cword>"))
"在每个窗口中执行命令,判断窗口中的文件名是否是dict-tmp,如果是,强制关闭
windo if expand("%")=="dict-tmp" |q!|endif	
"纵向分割窗口,宽度为25,新窗口的内容为dict-tmp文件的内容
25vsp dict-tmp
"设置查询结果窗口的属性,不缓存,不保留交换文件
setlocal buftype=nofile bufhidden=hide noswapfile
"将expl的内容显示到查询结果窗口
1s/^/\=expl/
"跳转回文本窗口
wincmd p
endfunction
"按键绑定,将调用函数并执行
nmap <leader>f :call Mydict()<CR>

JQuery DataTables插件中文文档

下面内容翻译自官网: DataTables (table plug-in for jQuery) 是一个jQuery的表格插件。 是以渐进增强理念为基础构建的一个高度灵活的工具,可以在任何HTML表格上实现高级交互控制。 抽时间将帮助文档翻译成了中文版,地址: JQuery-DataTables插件中文文档

主要特点:

  1. 可变长度分页
  2. 即时表格数据过滤
  3. 与数据类型自动检测相结合的多列排序
  4. 智能处理列宽
  5. 可以从几乎任何数据源加载数据(DOM,Javascript array,Ajax file and server-side processing)
  6. 表单视图的滚动配置
  7. 完全国际化
  8. jQuery UI ThemeRoller支持
  9. 健壮性,背后是2900项单元测试
  10. 丰富的插件
  11. 免费
  12. 表格状态保持
  13. 隐藏列
  14. 动态创建表格
  15. Ajax自动加载数据
  16. 自定义DOM元素的位置
  17. 单列过滤
  18. 自定义的分页类型
  19. 非侵入式的DOM交互
  20. 高亮排序的列
  21. 先进的数据源控制
  22. 提供商业支持
  23. 提供屏幕阅读器和键盘支持
  24. 压缩后70K,gzip压缩后20k
  25. 多种扩展插件支持
  26. 丰富的文档
  27. 130多个样例

人人网主页在遨游浏览器内超级拖放功能失效

很少在人人网主页使用超级拖放功能进行搜索,今天同学发了一条状态,“6.73很欢乐”。 不知道6.73是什么意思,拖放搜了下,没出结果,我也没在意,直接又选中文字右键搜了下。 排名第一的居然是豆瓣的一个帖子 ,说是Dota出6.73版了

后来同学回复我的状态说超级拖放不能用了,才想着看看是哪的问题。遨游的这类附加功能应该也是监听事件来实现的, 去w3cshool查DOM和javascript中对的事件的支持,并没有拖放事件。不过遨游兼容模式是IE内核,极速模式是WEBKit内核, 去网上搜 "IE 拖放事件",查出来微软在IE里面增加了拖放事件的监听,搜weikit支持的事件,也有对拖放事件的支持。 这样问题就大概清楚了,估计是人人网的javascript脚本拦截或者覆盖了拖放事件,导致遨游浏览器收不到触发的拖放事件, 所以拖放后没有任何反应

用遨游自带的开发者工具看了看人人网js脚本里监听的事件,发现home.js中有代码监听了dragover事件,代码如下:

var _8f8=document.body;
_8f8.addEventListener("dragover",function(e){
e.preventDefault();
return false;
},false);

就是这段代码造成超级拖放失效,代码获取了document的body节点,然后附加拖放事件的监听,如果拖放事件发生了, 代码会调用后面的匿名函数进行处理,e.preventDefault()拦截了事件,通知浏览器不要执行与事件关联的默认动作, 所以当拖放操作发生后,遨游收不到拖放操作发生的通知。 通过实验验证,把人人网主页另存到本地,找到这段代码, 把e.preventDefault()删除,然后再打开就能进行正常的超级拖放。 综合附近的代码来看,监听器是为了实现拖放图片上传的功能


—  原创作品许可 — 署名-非商业性使用-禁止演绎 3.0 未本地化版本 — CC BY-NC-ND 3.0   —