»
扩展 » Pentadactyl[vimperator分枝]使用心得,期待交流
|

|
31楼
发表于 2011-6-8 01:10
| 只看该作者
请问为什么我用了bftabs之后,当用右键单击在状态栏显示的扩展图标
后弹出的菜单总是不停的闪烁,什么也看不清楚啊?大家有没有遇到这个
问题啊?是我自己的问题么?谢谢 |
|
|
|
|
|
|

|
32楼
发表于 2011-6-8 03:24
| 只看该作者
31# wxuyec
装了 Inspect Context 吧。 |
|
|
|
|
|
|

|
33楼
发表于 2011-6-8 04:45
| 只看该作者
是的,我安装了inspect context,但是没有安装它之前,
也是这个情况,而且我现在卸了inspect context也同样。
谢谢。 |
|
|
|
|
|
|

|
34楼
发表于 2011-6-8 05:14
| 只看该作者
33# wxuyec
我之前也有这个问题,但把Inspect Context禁用就没事了。
pentadactyl与All-in-one sidebar, tile tabs有点不太合得来,可以自己试试。
不过我现在开着 Inspect Context也没问题,莫名其妙的就好了。 |
|
|
|
|
|
|

|
35楼
发表于 2011-6-8 11:04
| 只看该作者
至于weide的问题,我觉得重新定义后的函数肯定会替换原来的,事实上从源代码里能看出来dactyl.modules.hints.show原本只有一句(用:echo也能直接显示出来):
show: function show(mode, opts) ...
harnack 发表于 2011-6-7 20:56  感谢关注及分享通过echo显示代码的方法!
关于“重新编写后的方法是替换原来的,还是在原来的方法执行前或执行后被执行?”,应该是替换。
造成我困扰的原因是对TortoiseHg不熟,每次更新代码都是执行Update,正确做法貌似是先Synchronize,然后在Update,结果就是实际上没有更新到最新的代码。
新代码中从原来的dactyl.modules.Hints中拆分出了dactyl.modules.HintSession,并把原来hints.show的操作放到了HintSession.Show中了- dactyl.modules.hints.show = function(mode, opts) {
- this.hintSession = HintSession(mode, opts);//初始化时,执行了HintSession.Show
- this.hintSession.pageHints.forEach(function(h) {
- h.text =...;//将h.text按照拼音五笔等重新编码,用于下一步过滤
- }
- );
复制代码 更新代码后,推断现在的处理模式是这样的:
进入hints模式后,当按下按键时,会启动一个事件序列,首先由onKeyPress处理,然后由onChange处理:
在onKeyPress中,当按键为hintkeys中定义的按键时,根据hint.number进行过滤显示,并终止事件序列;
当按键不是hintkeys中定义的按键时,不进行处理,交由onChange方法处理;
在onChange方法中,执行show方法,在show方法中根据hint.text(链接或按钮上的文字)进行过滤显示
由此得出结论:
set hintkeys=abcefhilmopqrsuvwxyz
当使用字母型的hintkeys时,通过按下字母对链接文字进行过滤没有意义,准确地说是无法使用hintkeys中的字母进行hint过滤--因为执行不到那一步。
这种情况下,pinyin-hints等装了也白装,浪费资源还用不上
部分代码添加注释备用- //:echo dactyl.modules.HintSession.prototype.onKeyPress
- function onKeyPress(eventList) {
- "use strict";
- const KILL = false, PASS = true;
- var key = events.toString(eventList[0]);
- this.clearTimeout();
- //如果按下的键是HintKey,将在此函数内处理
- //否则返回PASS,由onChange函数处理
- if (!this.escapeNumbers && this.isHintKey(key)) {
- this.prevInput = "number";
- let oldHintNumber = this.hintNumber;
- if (this.usedTabKey) {
- this.hintNumber = 0;
- this.usedTabKey = false;
- }
- this.hintNumber = this.hintNumber * this.hintKeys.length + this.hintKeys.indexOf(key);
- this.updateStatusline();
- if (this.docs.length) {
- //已经有hints的情况下,执行updateValidNumbers
- //主要实现代码:hint.valid = always || hint.span.getAttribute("number").indexOf(string) == 0;
- //也就是说,此时的过滤操作,是根据hint的number进行过滤,而不是对应的链接或按钮上的文字(hint.text)
- this.updateValidNumbers();
- } else {
- //第一次首先生成hints然后显示之,初次生成无需过滤
- this.generate();
- this.show();
- }
- this.showActiveHint(this.hintNumber, oldHintNumber || 1);
- dactyl.assert(this.hintNumber != 0);
- this.checkUnique();//此函数验证dactyl.assert(this.hintNumber <= this.validHints.length);
- return KILL;
- }
- //返回PASS时,事件交由dactyl.modules.HintSession.prototype.onChange
- //该方法内将调用dactyl.modules.HintSession.prototype.show
- //show方法显示有效的hint,这时候是根据hint.text进行过滤的,相关代码:
- // ...var validHint = hints.hintMatcher(this.hintString.toLowerCase());
- // ...hint.valid = validHint(hint.text);
- return PASS;//
- }
复制代码 |
|
|
|
|
|
|

|
36楼
发表于 2011-6-8 11:11
| 只看该作者
| 本帖最后由 yhmybsy 于 2011-6-8 11:12 编辑 hg 分两步,第一部分是pull, 然后是update |
|
|
|
|
|
|

|
37楼
发表于 2011-6-8 12:51
| 只看该作者
hg pull -u
hg 分两步,第一部分是pull, 然后是update
yhmybsy 发表于 2011-6-8 11:11  谢谢指点,用熟了subversion,现在又流行Hg了 |
|
|
|
|
|
|

|
38楼
发表于 2011-6-8 12:57
| 只看该作者
本帖最后由 weide 于 2011-6-14 17:31 编辑
分享插件:g;b模式下,不再过滤hint
适用于:set hintkeys=abcdefghijklmnopqrstuvwxyz
不适用:set hintkeys=0123456789,喜欢pinyin-hint过滤方式
disable-hint-filter.js:- var INFO =
- <plugin name="disable-hint-filter" version="1.5"
- href="http://g.mozest.com/viewthread.php?tid=38908"
- summary="disable hint filter in g;b mode"
- xmlns={NS}>
- <info lang="zh-CN" summary="在g;b模式下,禁用hint过滤,防止无谓闪烁"/>
- <author>weide</author>
- <license href="http://opensource.org/licenses/mit-license.php">MIT</license>
- <project name="Pentadactyl" min-version="1.0"/>
- <p lang="zh-CN">
- 本插件使用于使用字母型hintkeys的情况,如下所示:
- </p>
- <p lang="en-US">
- This plugin is used when set hintkeys=abcdefghijklmnopqrst
- </p>
- <example>
- <p><![CDATA[set hintkeys=abcefhilmopqrsuvwxyz]]></p>
- <p><![CDATA[set hinttimeout=500]]></p>
- <p><![CDATA[map -m hints j -ex normal! <C-f>]]></p>
- <p><![CDATA[map -m hints J -c -ex normal! <count>j]]></p>
- <p><![CDATA[map -m hints k -ex normal! <C-b>]]></p>
- <p><![CDATA[map -m hints K -c -ex normal! <count>k]]></p>
- <p><![CDATA[map -m hints <Space> -ex normal! <C-f>]]></p>
- <p><![CDATA[map -m hints d -ex normal! d]]></p>
- <p><![CDATA[map -m hints D -ex normal! D]]></p>
- <p><![CDATA[map -m hints gg -ex normal! gg]]></p>
- <p><![CDATA[map -m hints G -ex normal! G]]></p>
- <p><![CDATA[map -m hints gt -ex normal! gt<Esc>]]></p>
- <p><![CDATA[map -m hints gT -ex normal! gT<Esc>]]></p>
- </example>
- </plugin>;
- dactyl.modules.HintSession.prototype.updateValidNumbers_org=dactyl.modules.HintSession.prototype.updateValidNumbers;
- dactyl.modules.HintSession.prototype.updateValidNumbers=function(always){
- if(this.hintMode.name=="b" && this.continue)
- this.updateValidNumbers_org(true);
- else
- this.updateValidNumbers_org(always);
- };
- dactyl.modules.HintSession.prototype.process_org=dactyl.modules.HintSession.prototype.process;
- dactyl.modules.HintSession.prototype.process=function(followFirst){
- if(followFirst) dactyl.modules.hints.activeHint = this.validHints[this.hintNumber ? this.hintNumber - 1 : 0];
- return this.process_org(followFirst);
- }
- dactyl.modules.HintSession.prototype.show_org=dactyl.modules.HintSession.prototype.show;
- dactyl.modules.HintSession.prototype.show=function(){
- this.show_org();
- if(this.hintMode.name=="b" && this.continue){
- dactyl.modules.hints.activeHint.active=true;
- setTimeout('dactyl.modules.hints.activeHint.active=true;',300);
- setTimeout('dactyl.modules.hints.activeHint.active=true;',600);
- setTimeout('dactyl.modules.hints.activeHint.active=true;',900);
- setTimeout('dactyl.modules.hints.activeHint.active=true;',1200);
- }
- }
复制代码 |
|
|
|
|
|
|
 
|
39楼
发表于 2011-6-8 15:06
| 只看该作者
本帖最后由 harnack 于 2011-6-8 15:13 编辑
以前我也困惑过当用字母做hintkeys的时候Pentadactyl如何过滤hint,看了weide的分析终于明白了。
看到上面的代码里用到<count>,想顺便说一个大家或许没注意到的改变。最新的每夜版里mappings.js里有这么一段:- if (args[1] && !/^<nop>$/i.test(args[1])
- && !args["-count"] && !args["-ex"] && !args["-javascript"])
- args[1] = "<count>" + args[1];
复制代码 这意味着只要自定义map里没有-c、-j、-e三个参数,Pentadactyl就会自动为其加上<count>。
具体说来,以前如果我们想把gT映射给h,需要写成(另外aryeah提到过可以把-c省掉。)现在已经没有必要这么写了,只要写成就行了,Pentadactyl会自动为其加上<count>。(用:map或:listkeys看下就会发现的确如此。)
不过我自定义的也会被Pentadactyl傻傻地翻译为<count><C-w>,但<C-w>根本不支持[count],还好这倒也没啥副作用。 |
|
|
|
|
|
|

|
40楼
发表于 2011-6-8 16:51
| 只看该作者
34# yhmybsy
all-in-one sidebar和tile tabs我都没有装。
奇怪了。 |
|
|
|
|
|
|

|
41楼
发表于 2011-6-8 16:57
| 只看该作者
37# weide
你好,我记得以前你曾经在pentadactyl中调用
一个扩展的内部函数去保存图片,这样就可以给
定快捷键了。我想请问能不能同样的方法来对付
1g1g的这个扩展啊?谢谢。 |
|
|
|
|
|
|

|
42楼
发表于 2011-6-8 18:23
| 只看该作者
37# weide
你好,我记得以前你曾经在pentadactyl中调用
一个扩展的内部函数去保存图片,这样就可以给
定快捷键了。我想请问能不能同样的方法来对付
1g1g的这个扩展啊?谢谢。 ...
wxuyec 发表于 2011-6-8 16:57  可以的。
你把1g1g扩展解压出来之后,找与oncommand相关的字串应该就有收获了。 |
|
|
|
|
|
|

|
43楼
发表于 2011-6-8 19:45
| 只看该作者
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- ....
- 95
- 96
- 97
- 98
- 99
复制代码- js <<EOF
- function echo(/*count*/) {
- let count = arguments[0];
- let value = "";
- for (var i = 0; i < count; i++) {
- value += i+"\n";
- }
- dactyl.modules.buffer.lastInputField.value = value;
- }
- EOF
- nmap -count -javascript V echo(count)
- " 100V
复制代码 玩一下 -c 选项。 |
|
|
|
|
|
|

|
44楼
发表于 2011-6-8 21:20
| 只看该作者
本帖最后由 yhmybsy 于 2011-6-8 21:22 编辑 有这么多的插件,喜欢buftab
很喜欢delicious.一直希望可以在dacty下使用delicious.可以实现添加书签(tags也能支持最好),并且可以浏览dilicious书签.
找到了以下两个vimperator的插件.不知道能不能帮忙更改下.
1.htt ...
hoolooday 发表于 2011-6-7 18:04  不知不觉中,delicious 已经不是 yahoo的了,我还以为它们会不离不弃呢。
第二个好像需要 delicious 工具栏吧。
第一个:
完成向本地,google bookmark, delicious 同时添加书签
完成tags
不太明白你所说的浏览是什么意思?
求助:
如何解决 delicious 导入本地书签,中文乱码?
如何一次删除 delicious 中所有书签?
我对 delicious 很失望,如何纠正这种心理? |
|
|
|
|
|
|

|
45楼
发表于 2011-6-8 21:25
| 只看该作者
你把1g1g扩展解压出来之后,找与oncommand相关的字串应该就有收获了。
yhmybsy 发表于 2011-6-8 18:23  这么干好像麻烦了点,之前有人推荐的扩展:
Dom Inspector:https://developer.mozilla.org/En/DOM_Inspector
Inspect Context:https://addons.mozilla.org/en-US/firefox/addon/inspect-context/
之后在任何菜单、按钮上打开右键菜单->Inspect,在打开窗口中显示的DOM元素,通常有id,command,oncommand
有oncommand的,通常之后的语句就可以直接执行了,比如切换最大化的按钮:- command! -d=切换窗口最大化 winmax js onTitlebarMaxClick();
复制代码 有command的,找到执行即可,比如autoproxy中:- command! -d=切换AutoProxy模式为自动 proxyAuto js document.getElementById("aup-command-modeauto").doCommand();
- command! -d=切换AutoProxy模式为全局 proxyGlobal js document.getElementById("aup-command-modeglobal").doCommand();
- command! -d=切换AutoProxy模式为禁用 proxyDisable js document.getElementById("aup-command-modedisabled").doCommand();
复制代码 还有一些只有id的,其事件是在后台用代码注册的,通常可以尝试执行click方法,1g1g就属于这种:- command! -d=启动1g ygStart js document.getElementById("MusicBar1g1g-title").click();
- command! -d=暂停/播放1g ygSwitch js document.getElementById("MusicBar1g1g-playPauseBtn").click();
- command! -d=下一首 ygNext js document.getElementById("MusicBar1g1g-nextBtn").click();
复制代码 还有些功能,不是按钮直接提供的,比如关闭1g,好像没提供这样的按钮,而是关闭对应的tab页面,就需要解压扩展代码具体分析了,看了看这个扩展并不复杂:- command! -d=关闭1g ygClose js MusicBar1g1g.browser1g1g.contentWindow.close();
复制代码 用得不多,所以都定义成命令了,可自定义快捷键及其它功能按钮 |
|
|
|
|
|
|

|
46楼
发表于 2011-6-8 21:38
| 只看该作者
| 多谢weide和yhmybsy,尤其是weide,太详细了,可以用了。 |
|
|
|
|
|
|
 
|
47楼
发表于 2011-6-8 21:54
| 只看该作者
不知不觉中,delicious 已经不是 yahoo的了,我还以为它们会不离不弃呢。
第二个好像需要 delicious 工具栏吧。
第一个:
完成向本地,google bookmark, delicious 同时添加书签
完成tags
不太明白你所说的浏览 ...
yhmybsy 发表于 2011-6-8 21:20  所说的浏览就是可以在dactyl下面
直接浏览到dilicious的书签.比如我输入什么命令比如
:delicious tags或者是书签的内容.它可以在dactyl下提示目前的dilicious上面有的书签.我再table下就直接打开了.就可以免去用dilicious的工具栏了(好像现在也不开发了.)
--------------------------------------------------------------------
中文乱码.不知道尝试下先将本地的bookmarks转换成utf-8试试?(具体真的还没有导入过呢?应该是这个问题吧)
如何全部删除.我找了好久,也没有找到.不好意思.
另外,确实是换东家了.目前来看,好像没有什么大的更改.个人觉得至少比yahoo掌握要好.如果用国内的,总是担心那天公司突然就没有了... |
|
|
|
|
|
|
 
|
48楼
发表于 2011-6-8 22:14
| 只看该作者
本帖最后由 hoolooday 于 2011-6-8 22:24 编辑
感谢wedie兄.看了兄的调用扩展的代码.最算是可以在dactyl下面调用它了.
ireader扩展.http://www.samabox.com/extensions/iReader/
看电子书,有那么一点用..
调用代码如下:- :js document.getElementById("ireader-icon").click();
复制代码 以上为打开ireader
经实践证明.如果要关闭再执行一次就关闭了.
还有一点要解决的就是
打开ireader之后.没有方法滚动屏幕了.不知道有没有解决方法? |
|
|
|
|
|
|

|
49楼
发表于 2011-6-8 22:34
| 只看该作者
ireader 好像不太可靠,有好些地方只显示一部分内容。
readability能直接发送到 Kindle,这点比较爽,而且不用多装一个扩展。
delicious 还真没有全部删除,只能一次删一页,还好我书签不多。
我导出的文件是utf8格式的,google了一下,好像也没什么好的解决方法。 |
|
|
|
|
|
|
 
|
50楼
发表于 2011-6-8 22:56
| 只看该作者
玩一下 -c 选项。
yhmybsy 发表于 2011-6-8 19:45  很有趣的例子,如果不用arguments[0]的话,可不可以这样写呢?- js <<EOF
- function echo(N) {
- let value = "";
- for (var i = 0; i < N; i++) {
- value += i+"\n";
- }
- dactyl.modules.buffer.lastInputField.value = value;
- }
- EOF
- nmap -c -e V js echo(<count>)
复制代码 |
|
|
|
|
|
|
 
|
51楼
发表于 2011-6-8 23:07
| 只看该作者
本帖最后由 hoolooday 于 2011-6-8 23:12 编辑 ireader 好像不太可靠,有好些地方只显示一部分内容。
readability能直接发送到 Kindle,这点比较爽,而且不用多装一个扩展。
delicious 还真没有全部删除,只能一次删一页,还好我书签不多。
我导出的文件是utf8 ...
yhmybsy 发表于 2011-6-8 22:34  ireader是不可靠的说,有的地方,在贴吧,就能显示一部分...
readability相比较而言,比如好用一点.所以,我投明了.哈哈
后面的问题,真的没有遇到过.因为我根本就没有导入过书签.
-------------------------------------
对了,readability.论坛脚本区有个本地的.读取速度应该更快?
https://g.mozest.com/viewthread.php?tid=35299&highlight=readab
不知道有兴趣没有? |
|
|
|
|
|
|

|
52楼
发表于 2011-6-8 23:13
| 只看该作者
很有趣的例子,如果不用arguments[0]的话,可不可以这样写呢?
js
harnack 发表于 2011-6-8 22:56  没什么问题啊。 |
|
|
|
|
|
|
 
|
53楼
发表于 2011-6-8 23:34
| 只看该作者
没什么问题啊。
yhmybsy 发表于 2011-6-8 23:13  嗯,<count>的写法对我这种小白来说比较好理解。 |
|
|
|
|
|
|

|
54楼
发表于 2011-6-8 23:47
| 只看该作者
本帖最后由 154798760 于 2011-6-8 23:49 编辑 我自己用的几个脚本,可能不很完善(可怜我之前辛辛苦苦码的字,本来打字就慢)。
yhmybsy 发表于 2011-6-7 16:15  太感谢你所分享的脚本 ~~~~
查词典
Dict.cn 海词 - 划词释义
已开启划词
设置
悬停发音即划即查 |
|
|
|
|
|
|

|
55楼
发表于 2011-6-9 00:06
| 只看该作者
太感谢你所分享的脚本 ~~~~
查词典
Dict.cn 海词 - 划词释义
已开启划词
设置
悬停发音即划即查
154798760 发表于 2011-6-8 23:47  有用就好,划词确实蛮方便。 |
|
|
|
|
|
|

|
56楼
发表于 2011-6-9 00:07
| 只看该作者
本帖最后由 yhmybsy 于 2011-6-9 00:57 编辑 ireader是不可靠的说,有的地方,在贴吧,就能显示一部分...
readability相比较而言,比如好用一点.所以,我投明了.哈哈
后面的问题,真的没有遇到过.因为我根本就没有导入过书签.
------------------------------ ...
hoolooday 发表于 2011-6-8 23:07  那个本地版的是不是加载之后,如果想看原来的页面就只有刷新页面才行啊?
支持本地载入了,但好像效果没在线的好。 |
|
|
|
|
|
|

|
57楼
发表于 2011-6-9 09:27
| 只看该作者
| 想请教各位,怎样用 js 模拟鼠标指向(悬停)的效果?比如小明牌豆瓣电台的按钮。 |
|
樽前落花无觅处,且折花枝、独饮疏狂,一醉掩风流。——樽前小筑 |
|
|
|
|
|
|

|
58楼
发表于 2011-6-9 17:38
| 只看该作者
| 请问各位我如果想当fx关闭的时候关闭某个标签页或者执行一个命令可以么?其实我就是想关闭fx的时候关闭那个1g的标签页。谢谢。 |
|
|
|
|
|
|
 
|
59楼
发表于 2011-6-9 17:50
| 只看该作者
那个本地版的是不是加载之后,如果想看原来的页面就只有刷新页面才行啊?
支持本地载入了,但好像效果没在线的好。
yhmybsy 发表于 2011-6-9 00:07  感谢.经测试
就是一刷新就恢复到原来了.好像后退都不行. |
|
|
|
|
|
|

|
60楼
发表于 2011-6-9 18:35
| 只看该作者
有用就好,划词确实蛮方便。
yhmybsy 发表于 2011-6-9 00:06  请问现在dict.js脚本支持划词翻译么?在帮助
中没看到啊,似乎是用<a-d>开始翻译的啊? |
|
|
|
|
|