Board logo

标题: [交流] Pentadactyl[vimperator分枝]使用心得,期待交流 [打印本页]

作者: hoolooday    时间: 2011-6-6 00:05     标题: Pentadactyl[vimperator分枝]使用心得,期待交流

本帖最后由 hoolooday 于 2011-6-7 18:27 编辑

上一帖不幸的消失.
感谢Eric站长给予的帮助.虽然帖子没有打捞成功,但是,很感动.
幸好还有google在.快照了一页.先帖下快照,还有一些近期个的心得.

Vimperator是神器.同Firebug一样的神器.只是最近更新有点慢了.幸好我们还有
Dactyl.更新快,启动快.功能应该说已经超过了vimperator不少(与最新vimperator比较之后,应该用可能比较好一点).当然,还要感谢Vimperator
的原作者.是他让Firefox更加的Vim化.
想Vim同时还有Keysanil等,曾经给这个作者写过信,可能我英语不好,可能他不在意.反正是没有反应.
VimperatorDactyl的作者交流,却让我感到了国外友人的客气.
算了,费说不说,开始发帖了.
主要是DactylVimperator的不同.
1.请留意Dactyl有一个新的功能g;
Start an extended hint mode and stay there until
<Esc> is pressed. Like ;, except that
after a hint is selected, hints remain visible so that
another one can be selected with the same action as the
first.
似乎是个不错的功能,但是我没有看懂什么意思...
2.Vimperator下的好多的插件在Dactyl下都不能正常使用了.
最多的情况是他会提示一些红色的错误,但是却不影响正常的使用.比如
-smooth.js这个插件.
liberator is deprecated:PLease use dactyl instead
等等.
这个时候,需要修改.附件提供的已经是修改好的了.
3.Dactyl的使用到的一些插件.
        _smooziee.js 可以让页面的滚动更改的平滑,很有爱,有阻尼的感觉.
        walk_input.js 可以让你在文本档跳转,来去自如.默认的按键是<A-i>
        pinyi-hints.js 可以让你在hint
        mode下面使用拼音的简写实现url的选定.感谢国人.
        imageextender.js
        在Dactyl作者的帮助之下,它也可以在Dactyl下面用了.可以快速的查当前页面中的图片,复制其url,甚至于可以将其保存.
        applancher.js 实现调用别的浏览器来查看当前页面.
        More等着你的发现.
4.Dactyl的一些功能.
实现快速的重启,查看下载,查看扩展等
  1. noremap <leader>r :restart<cr>

  2. noremap <leader>a :addons<cr>

  3. noremap <leader>d :downloads<cr>
复制代码
实现页面的编码的快速切换
  1. noremap <leader>es :set encoding=Shift_JIS<CR>

  2. noremap <leader>ec :set encoding=EUC-JP<CR>

  3. noremap <leader>eu :set encoding=UTF-8<CR>

  4. noremap <leader>eg :set encoding=GB2312<CR>
复制代码
实现在页面中快速搜索当前选定词.(google和dict.cn)
  1. command! gs -nargs=* tabopen http://www.google.com.hk/search?9&q=<args>

  2. map s :gs

  3. map <silent> S :exe ":gs "+content.getSelection()<CR>

  4. command! dict -nargs=* tabopen http://dict.cn/<args>

  5. map w :dict

  6. map <silent> W :exe ":dict "+content.getSelection()<CR>
复制代码
实现调用其它浏览器来查看当前页面
  1. map <leader>ie :js io.run("c:\\program files\\internet explorer\\iexplore.exe", [buffer.URL])<CR>
复制代码
实现其它的功能,比如Autoproxy的快速切换代理(不过好像最近的版本本来就可以实现,就不写了)
附件中,插件以上介绍到的都有

dactyl插件介绍:
imageextender
imageextender 是一个可以快速查看当前页面图片的插件.功能如下
';m' to yank image URL
';M' to save image
':downimageall' is also available. This is to download all images of current
page
- ';m'
- ';i' to zoom in image
- ';x' to zoom out image
- ';X' to zoom reset image
- ';z' to zoom fit image
- ';Z' to custom zoom image
要了解到;;模式,才能理解它的妙处
;;模式的一些特殊用法.
; to focus a link
            ;?? to show information about the element (incomplete)
            ;ss to save its destination
            ;aa to save its destination (prompting for save location)
            ;ff to focus a frame
            ;oo to open its location in the current tab
            ;tt to open its location in a new tab
            ;bb to open its location in a new background tab
            ;ww to open its destination in a new window
            ;OO to generate an :open prompt with hint’s URL
            ;TT to generate a :tabopen prompt with hint’s URL (like ;O)
            ;WW to generate a :winopen prompt with hint’s URL (like ;T)
            ;SS to add a search keyword for the hint’s form
            ;vv to view its destination source
            ;VV to view its destination source in the external editor
            ;yy to yank its destination location
            ;YY to yank its text description
            ;cc to open its context menu
            ;ii to open an image
            ;II to open an image in a new tab.
其中最为重要的,就是上面的;c ;ii ;II ;yy等
tuantuan兄的配置文件
分享下我的配置文件:
  1. " Modeline and Notes {
  2. "   vim: set foldmarker={,} foldlevel=0 filetype=vimperator:
  3. "   
  4. "   This is my personal _vimperatorrc, I don't recommend you copy it, just
  5. "   use the pieces you want.
  6. "   Contact me : tuantuan <dangoakachan@gmail.com>
  7. "
  8. "   Last updated: 2010-11-10
  9. " }

  10. " Options {
  11.     " Default
  12.     set runtimepath=C:/Users/Tuantuan/AppData/Roaming/Mozilla/Firefox/Profiles/tuantuan/vimperator

  13.     " For vimperator
  14.     set defsearch=g
  15.     set guioptions=
  16.     set showstatuslinks=2
  17.     set verbose=9
  18.     set focuscontent
  19.     set status=input,tabcount,position
  20.     set maxitems=10
  21.     set editor='D:/Programming/vim/vim73/gvim.exe -f'
  22.     let mapleader=','
  23.     set wildoptions=auto

  24.     " For about:config
  25.     set! ui.key.generalAccesskey=0
  26.     "Next Page and Previous Page
  27.     set nextpattern=\s*下一页|下一张|下一篇|下页|后页\s*,^\bnext\b,\\bnext\\b,^>$,^(>>|»)$,^(>|»),(>|»)$,\\bmore\\b
  28.     set previouspattern=\s*上一页|上一张|上一篇|上页|前页\s*,^\bprev|previous\b,\\bprev|previous\\b,^<$,^(<<|«)$,^(<|«),(<|«)$
  29. " }

  30. " Qmarks {
  31.     qmark c http://www.cc98.org
  32.     qmark v http://vimfox.info
  33.     qmark t http://dango-akachan.appspot.com
  34.     qmark m http://g.mozest.com
  35. " }

  36. " Maps {
  37.     " Source config file
  38.     map <leader>s :runtime _vimperatorrc<CR>

  39.     " Exchange y and Y
  40.     noremap y Y
  41.     noremap Y y
  42.    
  43.     " Toggle the toolbar
  44.     map <C-Up> :se go+=T<cr>
  45.     map <C-Down> :se go-=T<cr>

  46.     " search by google
  47.     command! google -nargs=* tabopen g <args>
  48.     map s :google
  49.     map S :exe ":google "+content.getSelection()<CR>

  50.     " Map for plugins or scripts
  51.     map <silent> <F2> :js toggle_bar()<CR>
  52.     map <silent> <F3> :js toggle_autoproxy()<CR>
  53.     map <silent> <F1> :js openProfileDirectory()<CR>
  54. " }

  55. " Scripts {
  56. js << EOF
  57.    // Toggle menubar and toolbar
  58.    liberator.globalVariables['tt_gopt'] = 'T';
  59.    toggle_bar = function() {
  60.        toggle_status = liberator.globalVariables['tt_gopt'];
  61.        liberator.globalVariables['tt_gopt'] = (toggle_status==''?'T':'');
  62.        liberator.execute('set guioptions='+toggle_status);
  63.    }

  64.    // Toggle autoproxy
  65.    liberator.globalVariables['tt_autoproxy'] = false;
  66.    toggle_autoproxy = function() {
  67.        toggle_status = liberator.globalVariables['tt_autoproxy'];
  68.        liberator.globalVariables['tt_autoproxy'] = toggle_status = !toggle_status;

  69.        if (toggle_status) {
  70.            liberator.execute('set! extensions.autoproxy.proxyMode='+'auto');
  71.            liberator.execute('echo "Autoproxy Enabled"');
  72.        } else {
  73.            liberator.execute('set! extensions.autoproxy.proxyMode='+'disabled');
  74.            liberator.execute('echo "Autoproxy Disabled"');
  75.        }
  76.    }
  77.    // Enable by default

  78.     function openProfileDirectory() {
  79.       // Get the profile directory.
  80.         var file = Components.classes["@mozilla.org/file/directory_service;1"].  
  81.                  getService(Components.interfaces.nsIProperties).  
  82.                  get("ProfD", Components.interfaces.nsIFile);
  83.         let profileDir = file.path;

  84.         // Show the profile directory.
  85.         let nsLocalFile = Components.Constructor("@mozilla.org/file/local;1","nsILocalFile", "initWithPath");
  86.         new nsLocalFile(profileDir).reveal();
  87.     }
  88. EOF
  89. " }

  90. " Plugins {
  91. " }

  92. " Theme {
  93.     highlight! StatusLine color: black; background:transparent; font-weight:bold;
  94.     highlight! CmdLine color:#d8d8d8; background:#2b2b2b;
  95.     highlight! ModeMsg  color:darkgreen; background: white;font-weight:bold;
  96.     highlight! ErrorMsg font-weight:normal; color:red; background:white;
  97.     hi! Hint font-family: monospace; font-size: 9px; text-transform: uppercase; color: white; background-color: #1E90FF; padding:1px;
  98.     hi! HintElem clear
  99. " }
复制代码
个人看法,因为vimp或者dactyl提供了各种映射,所以打开网站有很多方法,比如:
map key :open www.example.com<cr>
也可以
qmark k www.example.com 弄一个quick mark,然后gnk 或者 gok 打开。
可能还有其它的,但是只要选一种方法就好了,万一键设置的太多,以后又不怎么用到……
作者: hoolooday    时间: 2011-6-6 00:11

本帖最后由 hoolooday 于 2011-6-6 01:06 编辑

今天研究dacty的stylish样式.有一些感受..
  1. sty -n=xxx http://xxx.com/* #ad_wrapper{display:none !important;}table#torrent_table{width: 100% !important;}
复制代码
通过上面可以看到.当我们需要两条规则对于同一网站时.传统的sytlish是这样子的格式.
  1. {
  2. #ad_wrapper{display:none !important;}
  3. #torrent_table{width: 100% !important;}
  4. }
复制代码
而在dactyl的样式中,因为没有最上面一层的大括号.,直接一个样式一个样式写就行了.(感谢harnack兄弟提醒)
--------------------------
另外,还有一个更改样式的方法,就是可以将其放到插件目录下.以xx.css就可以的.这个的写法和stylish是一样的.具体可以再研究下.
作者: lll9p    时间: 2011-6-6 00:49

本帖最后由 lll9p 于 2012-4-23 12:44 编辑

贴上从这里偷的配置。
2012年4月重新改了下配置,再帖出来~~
  1. "Pentadactyl hg6757 (created 2012/04/19 00:00:07) running on:
  2. "Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0
  3. "Configured by lll9p   lll9p.china@gmail.com
  4. "created:2011/07/24 10:44:08 modified:2012/04/19/ 16:00:15
  5. loadplugins '\.(js|penta)

  6. group user
  7. "set设置{{{
  8.     "界面设置,在tab上显示序号{
  9.         set go+=n
  10.     "}
  11.     "dict.js插件设置{
  12.         set dict-langpair=g:'|zh-CN',y:eng
  13.     "}
  14.     "Hint{
  15.     "设置hint为字母模式
  16.         "set hintkeys=asdfg;lkjh
  17.     "中文hints
  18.         :set hintmatching=custom
  19.     "
  20.         :set chinesehints=wubi
  21.     "}
  22.     "防止在最后一个tab的时候按d退出firefox{
  23.         set! browser.tabs.closeWindowWithLastTab=false
  24.     "}
  25.     "tab显示方式{
  26.         "set showtabline=multitab
  27.     "}
  28.     "高亮搜索{
  29.         set hlfind
  30.     "}
  31.     "gmail 和 google reader键设置{
  32.         set passkeys=www\.google\.com/reader/.*:Ajkov,ga,gF,gu
  33.         set passkeys='mail\.google\.com/':c/kjnpouex!ra#[]zN?
  34.     "}
  35.     " ]]/[[转到上一页/下一页{
  36.     "下一页
  37.         set nextpattern^='\s*[下后][一]?[页张个篇章]\s*','››'
  38.     "上一页
  39.         set previouspattern^='\s*[上前][一]?[页张个篇章]\s*','‹‹'
  40.     "}
  41. "}}}
  42. "设置map{{{
  43.     "选中文字用t o打开google搜索,google的关键字设置为g{
  44.     "设置google为默认引擎,否则以下设置工作不正常
  45.         set defsearch=g
  46.         map t -js content.getSelection().toString()!=""?dactyl.execute(":tabopen "+ content.getSelection()):CommandExMode().open("tabopen ")
  47.         map o -js content.getSelection().toString()!=""?dactyl.execute(":open "+ content.getSelection()):CommandExMode().open("open ")
  48.     "结合dict插件翻译选中字符串
  49.         "map -a -ex s dict -e <arg>
  50.     "dict.cn
  51.         map s -js content.getSelection().toString()!=""?dactyl.execute(":dict -e d "+ content.getSelection()):""
  52.     "google翻译
  53.         map sa -js content.getSelection().toString()!=""?dactyl.execute(":dict -e g "+ content.getSelection()):""
  54.     "qq
  55.         map sq -js content.getSelection().toString()!=""?dactyl.execute(":dict -e q "+ content.getSelection()):""
  56.      "有道
  57.         map sw -js content.getSelection().toString()!=""?dactyl.execute(":dict -e y "+ content.getSelection()):""
  58.    "汉典
  59.         map sz -js content.getSelection().toString()!=""?dactyl.execute(":dict! -e z "+ content.getSelection()):""
  60.     "}
  61.     "加快移动{
  62.         map -builtin j 5j
  63.         map -builtin k 5k
  64.     "}
  65.     "标签移动加速{
  66.         map K :tn<CR>
  67.         map J :tp<CR>
  68.     "}
  69.     "F2来显示隐藏工具栏{
  70.         map <F2> -e set go!=T
  71.     "}
  72.     "实现快速的重启,查看下载,查看扩展等{
  73.         "set mapleader=','
  74.         "noremap <leader>a :addons<cr>
  75.         "noremap <leader>d :downloads<cr>
  76.     "}
  77.     "快速改变页面编码{
  78.         map -builtin ,eu :set encoding=UTF-8
  79.         map -builtin ,eg :set encoding=GB2312
  80.     "}
  81.     "搜索选中的字符串,并可选搜索引擎{
  82.         command! -nargs=? -complete=search SearchSelect exe 't <args> ' + content.getSelection()
  83.         map S :SearchSelect<Space>
  84.     "}

  85. "}}}
  86. "自定义命令{{{
  87.     "开启和关闭javascript或图片{
  88.         command! noimg set! permissions.default.image=2
  89.         command! nojs set! javascript.enabled=false
  90.         command! ysimg set! permissions.default.image=1
  91.         command! ysjs set! javascript.enabled=true
  92.     "}
  93.     "网站应用{
  94.         "http://validator.w3.org{{{
  95.             command! valid :open javascript:void(location='http://validator.w3.org/check?uri='+escape(location));
  96.         "}}}
  97.         "http://getfirebug.com/firebuglite{{{
  98.             command! firebug :open javascript:(function(F,i,r,e,b,u,g,L,I,T,E){if(F.getElementById(b))return;E=F[i+'NS']&&F.documentElement.namespaceURI;E=E?F[i+'NS'](E,'script'):F[i]('script');E[r]('id',b);E[r]('src',I+g+T);E[r](b,u);(F[e]('head')[0]||F[e]('body')[0]).appendChild(E);E=new%20Image;E[r]('src',I+L);})(document,'createElement','setAttribute','getElementsByTagName','FirebugLite','4','firebug-lite.js','releases/lite/latest/skin/xp/sprite.png','https://getfirebug.com/','#startOpened');
  99.         "}}}
  100.         "http://sr3d.github.com/GithubFinder/{{{
  101.             command! bml-ghfinder -description "Bookmarklet: Open any Github repo in GHFinder" open javascript:%20(function%20()%20{%20var%20a%20=%20(new%20RegExp("github.com/(.+)",%20"i")).exec(window.location.href);%20var%20f%20=%20a%20?%20a[1].split("/")%20:%20[];%20var%20b%20=%20f[0];%20var%20d%20=%20f[1];%20var%20e%20=%20f[3];%20var%20c%20=%20"http://sr3d.github.com/GithubFinder/?utm_source=bml"%20+%20(a%20?%20"&user_id="%20+%20b%20+%20"&repo="%20+%20d%20+%20(e%20?%20"&branch="%20+%20e%20:%20"")%20:%20"");%20if%20(!c)%20{%20alert("Invalid%20Github%20URL");%20return%20}%20window.open(c)%20})();
  102.         "}}}
  103.         "http://www.instapaper.com/u{{{
  104.             command! bml-instapaper -description "Bookmarklet: A simple tool to save web pages for reading later" open javascript:function%20iprl5(){var%20d=document,z=d.createElement('scr'+'ipt'),b=d.body,l=d.location;try{if(!b)throw(0);d.title='(Saving...)%20'+d.title;z.setAttribute('src',l.protocol+'//www.instapaper.com/j/bQ1lnqqYCoKr?u='+encodeURIComponent(l.href)+'&t='+(new%20Date().getTime()));b.appendChild(z);}catch(e){alert('Please%20wait%20until%20the%20page%20has%20loaded.');}}iprl5();void(0);
  105.         "}}}
  106.         "http://page2rss.com/{{{
  107.             command! bml-page2rss -description "Bookmarklet: Turn any page to RSS" open javascript:(function(){if(!window.page2rss_bookmark_urlr)window.page2rss_bookmark_urlr=function(ur){if(ur.error)alert(ur.error);if(ur.page&&ur.page.page)location.href=ur.page.page};var%20r=document.getElementById('urlFormRequest');if(r)r.parentNode.removeChild(r);r=document.createElement('script');r.id='urlFormRequest';r.type='text/javascript';r.src='http://page2rss.com/api/page?url='+encodeURIComponent(location.href)+'&callback=page2rss_bookmark_urlr';document.body.appendChild(r);})();
  108.         "}}}
  109.         "http://www.readability.com/bookmarklets{{{
  110.             command! bml-readability -description "Bookmarklet: Make webpage readable using readability" open javascript:%20((function%20()%20{%20window.baseUrl%20=%20'http://www.readability.com';%20window.readabilityToken%20=%20'';%20var%20s%20=%20document.createElement('script');%20s.setAttribute('type',%20'text/javascript');%20s.setAttribute('charset',%20'UTF-8');%20s.setAttribute('src',%20baseUrl%20+%20'/bookmarklet/read.js');%20document.documentElement.appendChild(s);%20})());
  111.         "}}}
  112.         "http://readable.tastefulwords.com/{{{
  113.             command! bml-readable -description "Bookmarklet: Make webpage readable" open javascript:(function(){_readableOptions={'text_font':'quote(Palatino%20Linotype),%20Palatino,%20quote(Book%20Antigua),%20Georgia,%20serif','text_font_monospace':'quote(Courier%20New),%20Courier,%20monospace','text_font_header':'quote(Times%20New%20Roman),%20Times,%20serif','text_size':'18px','text_line_height':'1.5','box_width':'30em','color_text':'#282828','color_background':'#F5F5F5','color_links':'#0000FF','text_align':'normal','base':'blueprint','custom_css':''};if(document.getElementsByTagName('body').length>0);else{return;}if(window.$readable){if(window.$readable.bookmarkletTimer){return;}}else{window.$readable={};}window.$readable.bookmarkletTimer=true;window.$readable.options=_readableOptions;if(window.$readable.bookmarkletClicked){window.$readable.bookmarkletClicked();return;}_readableScript=document.createElement('script');_readableScript.setAttribute('src','http://readable-static.tastefulwords.com/target.js?rand='+encodeURIComponent(Math.random()));document.getElementsByTagName('body')[0].appendChild(_readableScript);})();
  114.         "}}}
  115.         "http://readitlaterlist.com/add.php{{{
  116.             command! bml-readitlater -description "Bookmarklet: A simple tool to save web pages for reading later" open javascript:%20(function%20()%20{%20ISRIL_H%20=%20'5979';%20ISRIL_SCRIPT%20=%20document.createElement('SCRIPT');%20ISRIL_SCRIPT.type%20=%20'text/javascript';%20ISRIL_SCRIPT.src%20=%20'http://readitlaterlist.com/b/r.js';%20document.getElementsByTagName('head')[0].appendChild(ISRIL_SCRIPT)%20})();
  117.         "}}}
  118.         "http://www.pdfdownload.org/pdf_bookmarklet.html{{{
  119.             command! bml-savepage -description "Bookmarklet: Convert web pages into PDF files" open javascript:void(window.open(%27http://www.web2pdfconvert.com/convert.aspx?cURL=%27+escape(location.href)));
  120.             command! bml-shareit -description "Bookmarklet: Universal sharing" open javascript:void((function(svc)%20{var%20d=document,w=window,p=0,b=function(){if(!p){p=1;if(_atc.xol)_adr.onReady();if(w.addthis_sendto)addthis_sendto(svc||%27bkmore%27,{product:%27bmt-%27+_atc.ver})}else{p=0;if(_atw)_atw.clb()}};if(!w._atc){var%20ol=w.addthis_onload||[],o=d.createElement(%27script%27);w.addthis_product%20=%20%27bmt-250%27;o.src=%27//s7.addthis.com/js/250/addthis_widget.js#domready=1&username=bookmarklet%27;ol.push(b);w.addthis_onload=ol;d.getElementsByTagName(%27body%27)[0].appendChild(o)}else%20b()})());
  121.             command! bml-subscribe -description "Bookmarklet: Subscribe using Google reader" open javascript:var%20b=document.body;var%20GR________bookmarklet_domain='http://www.google.com';if(b&&!document.xmlVersion){void(z=document.createElement('script'));void(z.src='http://www.google.com/reader/ui/subscribe-bookmarklet.js');void(b.appendChild(z));}else{location='http://www.google.com/reader/view/feed/'+encodeURIComponent(location.href)};
  122.         "}}}
  123.         "http://labs.microsofttranslator.com/bookmarklet/{{{
  124.             command! bml-translate -description "Bookmarklet: Translate any page with the simple click" open javascript:(function(){var%20s%20=%20document.createElement('script');%20s.type%20=%20'text/javascript';%20s.src%20=%20'http://labs.microsofttranslator.com/bookmarklet/default.aspx?f=js&to=en';%20document.body.insertBefore(s,%20document.body.firstChild);})();
  125.         "}}}
  126.         "https://dev.twitter.com/docs/share-bookmarklet{{{
  127.             command! bml-twitter -description "Bookmarklet: Share on Twitter" open javascript:(function(){window.twttr=window.twttr||{};var%20D=550,A=450,C=screen.height,B=screen.width,H=Math.round((B/2)-(D/2)),G=0,F=document,E;if(C>A){G=Math.round((C/2)-(A/2))}window.twttr.shareWin=window.open('http://twitter.com/share','','left='+H+',top='+G+',width='+D+',height='+A+',personalbar=0,toolbar=0,scrollbars=1,resizable=1');E=F.createElement('script');E.src='http://platform.twitter.com/bookmarklets/share.js?v=1';F.getElementsByTagName('head')[0].appendChild(E)}());
  128.         "}}}
  129.         "http://chengyinliu.com/whatfont.html{{{
  130.             command! bml-whatfont -description "Bookmarklet: Find out the fonts used in a webpage" open javascript:(function(){var%20d=document,s=d.createElement('scr'+'ipt'),b=d.body,l=d.location;s.setAttribute('src','http://chengyinliu.com/wf.js?o='+encodeURIComponent(l.href)+'&t='+(new%20Date().getTime()));b.appendChild(s)})();
  131.         "}}}
  132.     "}
  133. "}}}
  134. "风格设置{{{
  135.     "命令行模式禁用输入法{
  136.         style -name commandline-ime http://*,https://* input,textarea {ime-mode: active;}
  137.         style -name commandline-ime chrome://* #dactyl-commandline-command input , #dactyl-statusline-field-commandline-command input {ime-mode: inactive;}
  138.         "cmap <A-i> -js styles.user.get("cmd-ime").enabled ^= true; dactyl.focusedElement.blur();
  139.         
  140.     "}
  141.     "显示dict查询状态{
  142.     style chrome://browser/content/browser.xul statuspanel#statusbar-display { display:block; visibility: visible }
  143.     "}
  144.     "加大hint的字号{
  145.         hi Hint font:bold 15px "Droid Sans Mono", monospace !important; margin:-.2ex; padding: 0 0 0 1px; outline:1px solid rgba(0, 0, 0, .5); background:rgba(255, 248, 231, .8); color:black; text-transform:uppercase;
  146.     "}

  147. "}

  148. " Qmarks快速书签设置{
  149.     silent qmark r http://www.renren.com/home#nogo
  150.     silent qmark p https://plus.google.com
  151.     silent qmark t https://twitter.com
  152.     silent qmark f https://facebook.com
  153.     silent qmark d http://www.douban.com
  154. " }}}
  155. " vim: set ft=vim:
复制代码

作者: harnack    时间: 2011-6-6 00:50

本帖最后由 harnack 于 2011-6-6 01:17 编辑

2# hoolooday

没了那帖之后我的发帖量突然少了很多,本来已经成功跻身首页右侧的“活跃会员”,现在从里面消失了。得多灌点水补回来……

其实Stylish格式里大括号间也不需要分号的,比如:
  1. @-moz-document domain(example.com) {
  2.   selector1 {property1: value1; property2: value2;}
  3.   selector2 {property3: value3; property4: value4;}
  4. }
复制代码
事实上标准的CSS语法就是这样的,Pentadactyl和Stylish并无区别。另外如果把CSS文件丢到plugins目录里的话,记得在配置文件里加上se lpl='\.(css|js|penta)$',因为Pentadactyl默认是不加载CSS脚本的。

顺便提下:最新的每夜版里引入了Hint[ambiguous],用来标识哪些hint需要按回车键才能打开,比如设置
  1. :hi Hint[ambiguous] background-color: red;
复制代码
按f后出现的hint里红色的那些必须在输完hint的数字后再按回车键才能打开,不是红色的那些输完hint不需按回车即能打开。(当然了,如果你设置了hto那又另当别论。)

最后重新贴下自己乱改的caret-hint.js,用法见:h Caret-Hint-plugin。
作者: harnack    时间: 2011-6-6 00:59

贴上从这里偷的配置。"hg6168 "(created 2011/06/02 00:00:08)"
":rehash重新载入配置
loadplugins '\.(js|penta)
group user
"" ]]/[[ turn next/previous page
set nextpattern&
set nextpattern^=\s*(下 ...
lll9p 发表于 2011-6-6 00:49
提两点不成熟的建议:
1、如果用的是每夜版的话,第6行和第8行可以去掉了,现在已经没有必要担心重复添加的问题了;
2、第14行的写法用-e或许更简洁些:
  1. map <F2> -e set go!=T
复制代码

作者: hoolooday    时间: 2011-6-6 01:10

再添加个插件walk-input
在文本输入框的时候,可以快速的切换,最有用的是,页面最上面 到最下面的切换.(因为平常的可以直接tab的)
用法(建议)
先gi,确定到文本框.
然后<A-i>,在文本框之间切换.

作者: hoolooday    时间: 2011-6-6 01:21

本帖最后由 hoolooday 于 2011-6-6 01:24 编辑

再贴上tuantuan兄更改的一个插件.
Hint模式下可以用拼音来快捷打开链接..
-------------------------------------------
tuantuan兄好久不见了.再不出来,他的插件都让我贴完了...
顺带求下lll9p兄更改的五笔插件...
作者: lll9p    时间: 2011-6-6 10:06

7# hoolooday

呵呵

[attach]24663[/attach]

作者: lll9p    时间: 2011-6-6 10:08

5# harnack



我用的是nightly版,呵呵,,受教了~
作者: harnack    时间: 2011-6-6 11:17

8# lll9p

请问有没可能支持双拼呢(微软双拼方案)?
作者: hoolooday    时间: 2011-6-6 12:04

8# lll9p

请问有没可能支持双拼呢(微软双拼方案)?
harnack 发表于 2011-6-6 11:17
应该从拼音更改过去,比较容易些.具体不懂.只知道,是从CJK中
4E00-9FBF这部分做了替换..
作者: harnack    时间: 2011-6-6 12:54

一个一个改太麻烦了,不过也没发现有什么能整体替换的办法。
作者: lll9p    时间: 2011-6-6 14:51

8# lll9p

请问有没可能支持双拼呢(微软双拼方案)?
harnack 发表于 2011-6-6 11:17
可以的,,可是我找不到双拼的单字unicode码表。。。自己做有点麻烦,我这里没linux.....
我只在vim下做了一下,,还要把重复字的行去掉,再按unicode
排序。。。。
[attach]24665[/attach]

[attach]24666[/attach]
作者: harnack    时间: 2011-6-6 15:01

13# lll9p

太感谢了,我是菜鸟,请问怎么把它放到pinyin-hints的脚本里呢?咋样才能让它按Unicode排序呢?
作者: hoolooday    时间: 2011-6-6 15:31

可以的,,可是我找不到双拼的单字unicode码表。。。自己做有点麻烦,我这里没linux.....
我只在vim下做了一下,,还要把重复字的行去掉,再按unicode
排序。。。。
24665

24666 ...
lll9p 发表于 2011-6-6 14:51
这个码表有好多的重复好像.按unicode排序,是4E00到9FBF的顺序吗?
其实这个我不懂.
作者: lll9p    时间: 2011-6-6 16:20

15# hoolooday


是的。。。
作者: lll9p    时间: 2011-6-6 16:21

14# harnack

这个没有整理好的啊。。。。还不能用。。。等高人来做吧。。。。
作者: harnack    时间: 2011-6-6 17:51

17# lll9p

嗯,这个排起来貌似还不太容易。而且双拼好像也没啥人用……
作者: lll9p    时间: 2011-6-6 20:44

17# lll9p

嗯,这个排起来貌似还不太容易。而且双拼好像也没啥人用……
harnack 发表于 2011-6-6 17:51
呵呵。。
作者: yhmybsy    时间: 2011-6-6 23:52

分辨不出不同拼音输入法之间有任何区别,完全不会啊!
我已经完全习惯用数字了,靠的是眼疾手快!

感觉标题不太准确,我的理解是:
pentadactyl与vimperator对应,dactyl与liberator对应。
作者: harnack    时间: 2011-6-7 01:50

本帖最后由 harnack 于 2011-6-7 02:58 编辑

其实双拼和全拼相差不大,对声母而言(pinyin-hints里只用到声母)双拼就是把全拼里面的zh、ch、sh用v、i、u代替,其它都一样。可是不能简单地把脚本里的z、c、s替换成v、i、u,因为z、c、s本身也可以单独做声母……

楼主应该是把dactyl当作Pentadactyl的简写了吧,因为在Google Code上Kris建的项目名称就是dactyl:
http://code.google.com/p/dactyl/

不过我也觉得还是用Pentadactyl做标题更好一些,别人用搜索引擎搜索时也比较容易搜索到嘛~
作者: weide    时间: 2011-6-7 09:00

本帖最后由 weide 于 2011-6-7 09:01 编辑

今天来遗憾地发现原来盖了这么多层的帖子没了,之前发了个问题贴从历史里面找出来,贴出来继续请教:
从Pinyin-hints请教下dactyl的插件编写的问题:
1.重新编写后的方法是替换原来的,还是在原来的方法执行前或执行后被执行?
dactyl.modules.hints.show=function...
按照我的理解,这样子就覆盖了原来hints.js中定义的show函数
但从实际使用这个插件来看貌似并没有覆盖hints.js中的show函数,javascript中对属性貌似也没有类似委托这样的实现方式,所以有点搞不懂,这个插件是如何来起作用的?
2.如何屏蔽这种利用拼音、五笔、或通常的按照内容进行过滤的筛选操作?
通常这种筛选是有益的,不过当set hintkeys=abcefhilmopqrsuvwxyz之后,这种过滤变得没有什么意义,尤其在g;b模式下,每次在后台打开一个链接都会闪烁一次,感觉不爽。尝试写了个插件:
  1.     dactyl.modules.hints._hintMatcher_orig=dactyl.modules.hints._hintMatcher;
  2.     dactyl.modules.hints._hintMatcher=function (hintString){
  3.             if(this._submode == "b") return function(){return true;};
  4.             return dactyl.modules.hints._hintMatcher_orig(hintString);
  5.     };
复制代码
我设想的是在;b或g;b模式下不进行过滤,其它模式下仍然采用默认的过滤方式,但遗憾的是这个插件貌似没起任何作用:(
然后又参考了拼音、五笔的类似写法,整了下面代码:
  1.     dactyl.modules.hints.show = function(mode, opts) {
  2.         this.hintSession = HintSession(mode, opts);
  3.         this.hintSession.pageHints.forEach(function(h) {
  4.             h.text ="abcdefghijklmnopqrstuvwxyz";
  5.         });
  6.     }
复制代码
结果仍然很悲剧的发现没起任何作用,该过滤的依然过滤
请教下,屏蔽过滤功能应该如何实现?
3.尝试理解上述三个问题时,试装了ChromeBug,定位到hints.js文件并设置断点,但发现无论如何也不能停顿在断点上。大家有用这个扩展的吗?能实现成功的调试扩展代码没有?venkman听说也可以,还没试过
作者: yhmybsy    时间: 2011-6-7 16:15

本帖最后由 yhmybsy 于 2011-6-30 14:57 编辑

我自己用的几个脚本,可能不很完善(可怜我之前辛辛苦苦码的字,本来打字就慢)。


readability

下载地址:
https://github.com/grassofhust/d ... gins/readability.js

简介:
www.readability.com 网站交互(也可使用本地),提供了一个命令 :read 和三个参数 read,save,send
  1. :read                       " Read Now
  2. :read read                  " Read Now
  3. :read save                  " Read Later
  4. :read send                  " Send to Kindle
  5. :set real                   " 使用本地脚本载入,默认为使用远程时,
  6.                             " 效果较好,但速度较慢。
复制代码
editor.penta

下载地址:
https://github.com/grassofhust/d ... lugins/editor.penta

简介:
当你调用外部编辑器时,自动跳转到对应的行和列,同时设定对应的文件类型。
  1. :set editor='gvim -f -c ":set ft=bbcode" -c ":call cursor(<line>, <column>)" <file>'
复制代码
打开当前编辑器时,设定文件类型为 bbcode, 同时跳转到对应的行和列,默认的 'editor' 选项只跳转到对应的行,并不能跳转到对应的列。

当用 gF 查看网页源代码时,自动设置文件类型为 html
从 firebug 的命令行中调用外部编辑器时,设定文件类型为 javascript


shorten

下载地址:
https://github.com/grassofhust/d ... /plugins/shorten.js

简介:
短网址服务,支持 goo.gl bit.ly is.gd

选项:
  1. :set shorten-engine=b           " 使用 bit.ly的短网址服务,默认值为'i'
  2. :set !shorten-yank              " 不复制结果到剪贴板,默认为'true'
  3. :shorten [url]                  " url 可选,sht为简写形式。如果未指定
  4. :sht                            " url, 则使用当前页面地址。
  5. :sht -e g                       " 指定使用 goo.gl
复制代码
sites.js

地址:https://github.com/grassofhust/d ... yl/plugins/sites.js
不推荐下载,看看就得了。我不保证它总是可用。
目前就对百度帖吧有修正。


buftabs

下载地址:
https://github.com/grassofhust/buftabs

简介:
  1. :help buftabs-plugin
复制代码

[attach]24684[/attach]
[attach]24685[/attach]

dict.js


下载地址:
https://github.com/grassofhust/dict.js

简介:
  1. :help dict.js-plugin
复制代码
[attach]24682[/attach]
[attach]24683[/attach]


edit

快速打开 与 firefox 相关的文件与目录,方便修改 firefox 配置文件,脚本等。详情见:
https://g.mozest.com/viewthread.php?tid=38908&page=4#pid261246

direct_bookmark.js

快速添加书签到 delicious, google bookmark,移植自  vimperator 同名插件。

见 66 楼

caret-hint.js

见 169 楼

zenburn.penta

下载地址:
https://github.com/grassofhust/zenburn.penta

简介:
vim zenburn 主题的克隆
[attach]24681[/attach]


还有些在我硬盘里,不过还没整理好。
至此结束!
作者: yhmybsy    时间: 2011-6-7 16:35

上面的几个插件都有一些或多或少的更新,如果以前有下载过的,可以考虑重新下载一下。

以后加上 Changelog, 之前把这个东西都忘了。
作者: hoolooday    时间: 2011-6-7 18:04

上面的几个插件都有一些或多或少的更新,如果以前有下载过的,可以考虑重新下载一下。

以后加上 Changelog, 之前把这个东西都忘了。
yhmybsy 发表于 2011-6-7 16:35
有这么多的插件,喜欢buftab
很喜欢delicious.一直希望可以在dacty下使用delicious.可以实现添加书签(tags也能支持最好),并且可以浏览dilicious书签.
找到了以下两个vimperator的插件.不知道能不能帮忙更改下.
1.https://github.com/vimpr/vimpera ... ster/direct_delb.js
可以实现向dilicious添加书签.但是,不仅是dilicious.还有google mark.
2.https://gist.github.com/70963
可以搜索delicious的书签.
作者: yhmybsy    时间: 2011-6-7 18:20

有这么多的插件,喜欢buftab
很喜欢delicious.一直希望可以在dacty下使用delicious.可以实现添加书签(tags也能支持最好),并且可以浏览dilicious书签.
找到了以下两个vimperator的插件.不知道能不能帮忙更改下.
1.htt ...
hoolooday 发表于 2011-6-7 18:04
delicious 不是个没人疼的孩子么? 可恶的yahoo。
作者: hoolooday    时间: 2011-6-7 18:26

delicious 不是个没人疼的孩子么? 可恶的yahoo。
yhmybsy 发表于 2011-6-7 18:20
其实主要是觉得delicious的tag管理起来很好用.当然也可以用fx的weave.
但是,有时候,不能用fx的时候,要看书签,还是delicious比较方便些.
上面两个可以更改吗?
作者: yhmybsy    时间: 2011-6-7 18:32

其实主要是觉得delicious的tag管理起来很好用.当然也可以用fx的weave.
但是,有时候,不能用fx的时候,要看书签,还是delicious比较方便些.
上面两个可以更改吗? ...
hoolooday 发表于 2011-6-7 18:26
我看看吧,也可以顺便学习下。
作者: hoolooday    时间: 2011-6-7 18:35

我看看吧,也可以顺便学习下。
yhmybsy 发表于 2011-6-7 18:32
感谢.兄弟出手.肯定没有问题了.最好合并为一个就好.如果能将google;mark也更改了
那就无求了.
作者: harnack    时间: 2011-6-7 20:56

本帖最后由 harnack 于 2011-6-7 21:05 编辑

感谢yhmybsy的分享。

至于weide的问题,我觉得重新定义后的函数肯定会替换原来的,事实上从源代码里能看出来dactyl.modules.hints.show原本只有一句(用:echo也能直接显示出来):
  1. show: function show(mode, opts) {
  2.         this.hintSession = HintSession(mode, opts)
  3. };
复制代码
而pinyin-hints.js重定义dactyl.modules.hints.show时也包括了这一句,只不过又在后面加入了一段新的代码:
  1. this.hintSession.pageHints.forEach(function(h) {
  2.         h.text = getpinyin(h.text);
  3. });
复制代码
这样就对pageHints进行了重新赋值(即拼音)。其它的我就不知道了。
作者: wxuyec    时间: 2011-6-8 01:10

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

31# wxuyec

装了 Inspect Context 吧。
作者: wxuyec    时间: 2011-6-8 04:45

是的,我安装了inspect context,但是没有安装它之前,
也是这个情况,而且我现在卸了inspect context也同样。
谢谢。
作者: yhmybsy    时间: 2011-6-8 05:14

33# wxuyec

我之前也有这个问题,但把Inspect Context禁用就没事了。

pentadactyl与All-in-one sidebar, tile tabs有点不太合得来,可以自己试试。

不过我现在开着 Inspect Context也没问题,莫名其妙的就好了。
作者: weide    时间: 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中了
  1. dactyl.modules.hints.show = function(mode, opts) {
  2.         this.hintSession = HintSession(mode, opts);//初始化时,执行了HintSession.Show
  3.         this.hintSession.pageHints.forEach(function(h) {
  4.                 h.text =...;//将h.text按照拼音五笔等重新编码,用于下一步过滤
  5.         }
  6. );
复制代码
更新代码后,推断现在的处理模式是这样的:
进入hints模式后,当按下按键时,会启动一个事件序列,首先由onKeyPress处理,然后由onChange处理:
在onKeyPress中,当按键为hintkeys中定义的按键时,根据hint.number进行过滤显示,并终止事件序列;
        当按键不是hintkeys中定义的按键时,不进行处理,交由onChange方法处理;
在onChange方法中,执行show方法,在show方法中根据hint.text(链接或按钮上的文字)进行过滤显示

由此得出结论:
set hintkeys=abcefhilmopqrsuvwxyz
当使用字母型的hintkeys时,通过按下字母对链接文字进行过滤没有意义,准确地说是无法使用hintkeys中的字母进行hint过滤--因为执行不到那一步。
这种情况下,pinyin-hints等装了也白装,浪费资源还用不上

部分代码添加注释备用
  1. //:echo dactyl.modules.HintSession.prototype.onKeyPress
  2. function onKeyPress(eventList) {
  3.     "use strict";
  4.     const KILL = false, PASS = true;
  5.     var key = events.toString(eventList[0]);
  6.     this.clearTimeout();
  7.         //如果按下的键是HintKey,将在此函数内处理
  8.         //否则返回PASS,由onChange函数处理
  9.     if (!this.escapeNumbers && this.isHintKey(key)) {
  10.         this.prevInput = "number";
  11.         let oldHintNumber = this.hintNumber;
  12.         if (this.usedTabKey) {
  13.             this.hintNumber = 0;
  14.             this.usedTabKey = false;
  15.         }
  16.         this.hintNumber = this.hintNumber * this.hintKeys.length + this.hintKeys.indexOf(key);
  17.         this.updateStatusline();
  18.         if (this.docs.length) {
  19.                         //已经有hints的情况下,执行updateValidNumbers
  20.                         //主要实现代码:hint.valid = always || hint.span.getAttribute("number").indexOf(string) == 0;
  21.                         //也就是说,此时的过滤操作,是根据hint的number进行过滤,而不是对应的链接或按钮上的文字(hint.text)
  22.             this.updateValidNumbers();
  23.         } else {
  24.                         //第一次首先生成hints然后显示之,初次生成无需过滤               
  25.             this.generate();
  26.             this.show();
  27.         }
  28.         this.showActiveHint(this.hintNumber, oldHintNumber || 1);
  29.         dactyl.assert(this.hintNumber != 0);
  30.         this.checkUnique();//此函数验证dactyl.assert(this.hintNumber <= this.validHints.length);
  31.         return KILL;
  32.     }
  33.         //返回PASS时,事件交由dactyl.modules.HintSession.prototype.onChange
  34.         //该方法内将调用dactyl.modules.HintSession.prototype.show
  35.         //show方法显示有效的hint,这时候是根据hint.text进行过滤的,相关代码:
  36.         //                ...var validHint = hints.hintMatcher(this.hintString.toLowerCase());
  37.         //                ...hint.valid = validHint(hint.text);
  38.     return PASS;//
  39. }
复制代码

作者: yhmybsy    时间: 2011-6-8 11:11

本帖最后由 yhmybsy 于 2011-6-8 11:12 编辑
  1. hg pull -u
复制代码
hg 分两步,第一部分是pull, 然后是update
作者: weide    时间: 2011-6-8 12:51

hg pull -u

hg 分两步,第一部分是pull, 然后是update
yhmybsy 发表于 2011-6-8 11:11
谢谢指点,用熟了subversion,现在又流行Hg了
作者: weide    时间: 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:
  1. var INFO =
  2. <plugin name="disable-hint-filter" version="1.5"
  3.         href="http://g.mozest.com/viewthread.php?tid=38908"
  4.         summary="disable hint filter in g;b mode"
  5.         xmlns={NS}>
  6.     <info lang="zh-CN" summary="在g;b模式下,禁用hint过滤,防止无谓闪烁"/>
  7.     <author>weide</author>
  8.     <license href="http://opensource.org/licenses/mit-license.php">MIT</license>
  9.     <project name="Pentadactyl" min-version="1.0"/>
  10.     <p lang="zh-CN">
  11.         本插件使用于使用字母型hintkeys的情况,如下所示:
  12.     </p>
  13.     <p lang="en-US">
  14.         This plugin is used when set hintkeys=abcdefghijklmnopqrst
  15.     </p>
  16.     <example>
  17.     <p><![CDATA[set hintkeys=abcefhilmopqrsuvwxyz]]></p>
  18.     <p><![CDATA[set hinttimeout=500]]></p>
  19.     <p><![CDATA[map -m hints j     -ex normal! <C-f>]]></p>
  20.     <p><![CDATA[map -m hints J  -c    -ex normal! <count>j]]></p>
  21.     <p><![CDATA[map -m hints k     -ex normal! <C-b>]]></p>
  22.     <p><![CDATA[map -m hints K  -c   -ex normal! <count>k]]></p>
  23.     <p><![CDATA[map -m hints <Space>     -ex normal! <C-f>]]></p>
  24.     <p><![CDATA[map -m hints d     -ex normal! d]]></p>
  25.     <p><![CDATA[map -m hints D     -ex normal! D]]></p>
  26.     <p><![CDATA[map -m hints gg      -ex normal! gg]]></p>
  27.     <p><![CDATA[map -m hints G     -ex normal! G]]></p>
  28.     <p><![CDATA[map -m hints gt    -ex normal! gt<Esc>]]></p>
  29.     <p><![CDATA[map -m hints gT    -ex normal! gT<Esc>]]></p>
  30.     </example>   
  31. </plugin>;

  32. dactyl.modules.HintSession.prototype.updateValidNumbers_org=dactyl.modules.HintSession.prototype.updateValidNumbers;
  33. dactyl.modules.HintSession.prototype.updateValidNumbers=function(always){
  34.     if(this.hintMode.name=="b" && this.continue)
  35.         this.updateValidNumbers_org(true);
  36.     else
  37.         this.updateValidNumbers_org(always);
  38. };

  39. dactyl.modules.HintSession.prototype.process_org=dactyl.modules.HintSession.prototype.process;
  40. dactyl.modules.HintSession.prototype.process=function(followFirst){
  41.     if(followFirst)    dactyl.modules.hints.activeHint = this.validHints[this.hintNumber ? this.hintNumber - 1 : 0];
  42.     return this.process_org(followFirst);
  43. }

  44. dactyl.modules.HintSession.prototype.show_org=dactyl.modules.HintSession.prototype.show;
  45. dactyl.modules.HintSession.prototype.show=function(){
  46.     this.show_org();
  47.     if(this.hintMode.name=="b" && this.continue){
  48.         dactyl.modules.hints.activeHint.active=true;
  49.         setTimeout('dactyl.modules.hints.activeHint.active=true;',300);
  50.         setTimeout('dactyl.modules.hints.activeHint.active=true;',600);
  51.         setTimeout('dactyl.modules.hints.activeHint.active=true;',900);
  52.         setTimeout('dactyl.modules.hints.activeHint.active=true;',1200);
  53.     }
  54. }
复制代码

作者: harnack    时间: 2011-6-8 15:06

本帖最后由 harnack 于 2011-6-8 15:13 编辑

以前我也困惑过当用字母做hintkeys的时候Pentadactyl如何过滤hint,看了weide的分析终于明白了。

看到上面的代码里用到<count>,想顺便说一个大家或许没注意到的改变。最新的每夜版里mappings.js里有这么一段:
  1. if (args[1] && !/^<nop>$/i.test(args[1])
  2.                 && !args["-count"] && !args["-ex"] && !args["-javascript"])
  3.     args[1] = "<count>" + args[1];
复制代码
这意味着只要自定义map里没有-c、-j、-e三个参数,Pentadactyl就会自动为其加上<count>。

具体说来,以前如果我们想把gT映射给h,需要写成
  1. map -c h <count>gT
复制代码
(另外aryeah提到过可以把-c省掉。)现在已经没有必要这么写了,只要写成
  1. map h gT
复制代码
就行了,Pentadactyl会自动为其加上<count>。(用:map或:listkeys看下就会发现的确如此。)

不过我自定义的
  1. map d <C-w>
复制代码
也会被Pentadactyl傻傻地翻译为<count><C-w>,但<C-w>根本不支持[count],还好这倒也没啥副作用。
作者: wxuyec    时间: 2011-6-8 16:51

34# yhmybsy
all-in-one sidebar和tile tabs我都没有装。
奇怪了。
作者: wxuyec    时间: 2011-6-8 16:57

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

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

你把1g1g扩展解压出来之后,找与oncommand相关的字串应该就有收获了。
作者: yhmybsy    时间: 2011-6-8 19:45

  1. 0
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7. 6
  8. 7
  9. 8
  10. 9

  11. ....
  12. 95
  13. 96
  14. 97
  15. 98
  16. 99
复制代码
  1. js <<EOF
  2. function echo(/*count*/) {
  3.     let count = arguments[0];
  4.     let value = "";
  5.     for (var i = 0; i < count; i++) {
  6.         value += i+"\n";
  7.     }
  8.     dactyl.modules.buffer.lastInputField.value = value;
  9. }
  10. EOF

  11. nmap -count -javascript V echo(count)

  12. " 100V
复制代码
玩一下 -c 选项。
作者: yhmybsy    时间: 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 很失望,如何纠正这种心理?
作者: weide    时间: 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的,通常之后的语句就可以直接执行了,比如切换最大化的按钮:
  1. command! -d=切换窗口最大化 winmax js onTitlebarMaxClick();
复制代码
有command的,找到执行即可,比如autoproxy中:
  1. command! -d=切换AutoProxy模式为自动 proxyAuto js document.getElementById("aup-command-modeauto").doCommand();
  2. command! -d=切换AutoProxy模式为全局 proxyGlobal js document.getElementById("aup-command-modeglobal").doCommand();
  3. command! -d=切换AutoProxy模式为禁用 proxyDisable js document.getElementById("aup-command-modedisabled").doCommand();
复制代码
还有一些只有id的,其事件是在后台用代码注册的,通常可以尝试执行click方法,1g1g就属于这种:
  1. command! -d=启动1g ygStart js document.getElementById("MusicBar1g1g-title").click();
  2. command! -d=暂停/播放1g ygSwitch js document.getElementById("MusicBar1g1g-playPauseBtn").click();
  3. command! -d=下一首 ygNext  js document.getElementById("MusicBar1g1g-nextBtn").click();
复制代码
还有些功能,不是按钮直接提供的,比如关闭1g,好像没提供这样的按钮,而是关闭对应的tab页面,就需要解压扩展代码具体分析了,看了看这个扩展并不复杂:
  1. command! -d=关闭1g ygClose js MusicBar1g1g.browser1g1g.contentWindow.close();
复制代码
用得不多,所以都定义成命令了,可自定义快捷键及其它功能按钮
作者: wxuyec    时间: 2011-6-8 21:38

多谢weide和yhmybsy,尤其是weide,太详细了,可以用了。
作者: hoolooday    时间: 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掌握要好.如果用国内的,总是担心那天公司突然就没有了...
作者: hoolooday    时间: 2011-6-8 22:14

本帖最后由 hoolooday 于 2011-6-8 22:24 编辑

感谢wedie兄.看了兄的调用扩展的代码.最算是可以在dactyl下面调用它了.
ireader扩展.http://www.samabox.com/extensions/iReader/
看电子书,有那么一点用..
调用代码如下:
  1. :js document.getElementById("ireader-icon").click();
复制代码
以上为打开ireader
经实践证明.如果要关闭再执行一次就关闭了.
还有一点要解决的就是
打开ireader之后.没有方法滚动屏幕了.不知道有没有解决方法?
作者: yhmybsy    时间: 2011-6-8 22:34

ireader 好像不太可靠,有好些地方只显示一部分内容。

readability能直接发送到 Kindle,这点比较爽,而且不用多装一个扩展。

delicious 还真没有全部删除,只能一次删一页,还好我书签不多。

我导出的文件是utf8格式的,google了一下,好像也没什么好的解决方法。
作者: harnack    时间: 2011-6-8 22:56

玩一下 -c 选项。
yhmybsy 发表于 2011-6-8 19:45
很有趣的例子,如果不用arguments[0]的话,可不可以这样写呢?
  1. js <<EOF
  2. function echo(N) {
  3.     let value = "";
  4.     for (var i = 0; i < N; i++) {
  5.         value += i+"\n";
  6.     }
  7.     dactyl.modules.buffer.lastInputField.value = value;
  8. }
  9. EOF

  10. nmap -c -e V js echo(<count>)
复制代码

作者: hoolooday    时间: 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
不知道有兴趣没有?
作者: yhmybsy    时间: 2011-6-8 23:13

很有趣的例子,如果不用arguments[0]的话,可不可以这样写呢?
js
harnack 发表于 2011-6-8 22:56
没什么问题啊。
作者: harnack    时间: 2011-6-8 23:34

没什么问题啊。
yhmybsy 发表于 2011-6-8 23:13
嗯,<count>的写法对我这种小白来说比较好理解。
作者: 154798760    时间: 2011-6-8 23:47

本帖最后由 154798760 于 2011-6-8 23:49 编辑
我自己用的几个脚本,可能不很完善(可怜我之前辛辛苦苦码的字,本来打字就慢)。

yhmybsy 发表于 2011-6-7 16:15
太感谢你所分享的脚本  ~~~~

查词典




Dict.cn 海词 - 划词释义

已开启划词
设置

悬停发音即划即查
作者: yhmybsy    时间: 2011-6-9 00:06

太感谢你所分享的脚本  ~~~~

查词典




Dict.cn 海词 - 划词释义

已开启划词
设置

悬停发音即划即查
154798760 发表于 2011-6-8 23:47
有用就好,划词确实蛮方便。
作者: yhmybsy    时间: 2011-6-9 00:07

本帖最后由 yhmybsy 于 2011-6-9 00:57 编辑
ireader是不可靠的说,有的地方,在贴吧,就能显示一部分...
readability相比较而言,比如好用一点.所以,我投明了.哈哈
后面的问题,真的没有遇到过.因为我根本就没有导入过书签.

------------------------------ ...
hoolooday 发表于 2011-6-8 23:07
那个本地版的是不是加载之后,如果想看原来的页面就只有刷新页面才行啊?

支持本地载入了,但好像效果没在线的好。
作者: yefoenix    时间: 2011-6-9 09:27

想请教各位,怎样用 js 模拟鼠标指向(悬停)的效果?比如小明牌豆瓣电台的按钮。
作者: wxuyec    时间: 2011-6-9 17:38

请问各位我如果想当fx关闭的时候关闭某个标签页或者执行一个命令可以么?其实我就是想关闭fx的时候关闭那个1g的标签页。谢谢。
作者: hoolooday    时间: 2011-6-9 17:50

那个本地版的是不是加载之后,如果想看原来的页面就只有刷新页面才行啊?

支持本地载入了,但好像效果没在线的好。
yhmybsy 发表于 2011-6-9 00:07
感谢.经测试
就是一刷新就恢复到原来了.好像后退都不行.
作者: wxuyec    时间: 2011-6-9 18:35

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

本帖最后由 qingxinren 于 2011-6-9 20:29 编辑
以前我也困惑过当用字母做hintkeys的时候Pentadactyl如何过滤hint,看了weide的分析终于明白了。

看到上面的代码里用到,想顺便说一个大家或许没注意到的改变。最新的每夜版里mappings.js里有这么一段:
if (args[1 ...
harnack 发表于 2011-6-8 15:06
那是不是可以做这样的map
<count>g 转到<count>tab?
<count>d 关闭<count>tab?
试了几个写法,都失败了。。。。
作者: yhmybsy    时间: 2011-6-9 21:03

本帖最后由 yhmybsy 于 2011-6-9 21:17 编辑
那是不是可以做这样的map
g 转到tab?
d 关闭tab?
试了几个写法,都失败了。。。。
qingxinren 发表于 2011-6-9 20:24
d本来就支持count,不用再map了。

处理g会有些问题,因为已经有些gp,gg这些键,之前可以设置timout来实现,但现在不行了。
比如你按了g之后,如果你有足够长的时间没操作(timeoutlen),这时会执行g,但实际上不会,会直接取消。1.0b6是可以的。

有人报了bug之后,Kris认为不是bug。
作者: hoolooday    时间: 2011-6-9 21:05

本帖最后由 hoolooday 于 2011-6-9 21:07 编辑

通过对yhmybsy兄的readability的插件代码学习.加上更改.
做了一个插件...可以将网页中的繁体字转换成简体了.核心用的同文堂的替换..
用法
Sim[chinese]
--------------------
发现c#学了一点之后,看js的代码容易了好多.
作者: yhmybsy    时间: 2011-6-9 21:07

请问现在dict.js脚本支持划词翻译么?在帮助
中没看到啊,似乎是用开始翻译的啊?
wxuyec 发表于 2011-6-9 18:35
还不支持划词,
作者: hoolooday    时间: 2011-6-9 21:10

看今天的代码更改有一点变化.
Add <win> parameter to load autocmds.
这样不就更方便了...
作者: yhmybsy    时间: 2011-6-9 21:27

有这么多的插件,喜欢buftab
很喜欢delicious.一直希望可以在dacty下使用delicious.可以实现添加书签(tags也能支持最好),并且可以浏览dilicious书签.
找到了以下两个vimperator的插件.不知道能不能帮忙更改下.
1.htt ...
hoolooday 发表于 2011-6-7 18:04
https://github.com/grassofhust/dotfiles/tree/master/.pentadactyl/archives/

_libly.js
direct_bookmark.js
这两个都要

还不支持从google bookmark(google bookmark的功能好弱,真不敢相信是google 出品)获取tag,没测试那两个日语网站。
  1. :set bm-tag=dp " 从 delicious, 本地Places 获取 tags,用于自动补全
  2. :set bm-post=d " 只提交到 delicious
  3. :sbm " 提交书签
  4. :bentry " 查找当前页
复制代码
浏览还没有下手,原来的脚本里面也没有。
作者: yhmybsy    时间: 2011-6-9 21:34

想请教各位,怎样用 js 模拟鼠标指向(悬停)的效果?比如小明牌豆瓣电台的按钮。
yefoenix 发表于 2011-6-9 09:27
https://developer.mozilla.org/samples/domref/dispatchEvent.html
作者: qingxinren    时间: 2011-6-9 21:34

d本来就支持count,不用再map了。

处理g会有些问题,因为已经有些gp,gg这些键,之前可以设置timout来实现,但现在不行了。
比如你按了g之后,如果你有足够长的时间没操作(timeoutlen),这时会执行g,但实际上不会 ...
yhmybsy 发表于 2011-6-9 21:03
刚刚第二个我说错了,应该是<count>d 关闭<count>th tab.
也就是说2d仅仅删除第二个tab,而不是删除两个...

发现可以通过:js tabs.switchTo(String(<count>),false)跳到指定的tab....
作者: yhmybsy    时间: 2011-6-9 21:46

本帖最后由 yhmybsy 于 2011-6-10 00:25 编辑
请问各位我如果想当fx关闭的时候关闭某个标签页或者执行一个命令可以么?其实我就是想关闭fx的时候关闭那个1g的标签页。谢谢。
wxuyec 发表于 2011-6-9 17:38
  1. window.addEventListener("close",
  2.     function () {
  3.         let pattern = /1g1g\.com/;
  4.         Array.slice(gBrowser.tabs).forEach(function (aTab) {
  5.             if (pattern.test(aTab.linkedBrowser.currentURI.spec))
  6.                 gBrowser.removeTab(aTab);
  7.         });
  8.     },
  9.     false
  10. );
复制代码
用 pentadactyl 的方式关闭时,好像不起作用。
作者: yhmybsy    时间: 2011-6-9 21:49

刚刚第二个我说错了,应该是d 关闭th tab.
也就是说2d仅仅删除第二个tab,而不是删除两个...

发现可以通过:js tabs.switchTo(String(),false)跳到指定的tab....
qingxinren 发表于 2011-6-9 21:34
  1. :nmap -c -ex d tabclose <count>
复制代码

作者: qingxinren    时间: 2011-6-9 21:51

:nmap -c -ex d tabclose
yhmybsy 发表于 2011-6-9 21:49
成功。。
另外一个问题不死心的试了试,还是不行。。。看来悲剧了。。。
谢谢了。。。
作者: hoolooday    时间: 2011-6-9 21:53

本帖最后由 hoolooday 于 2011-6-9 21:56 编辑
https://github.com/grassofhust/dotfiles/tree/master/.pentadactyl/archives/

_libly.js
direct_bookmark.js
这两个都要

还不支持从google bookmark(google bookmark的功能好弱,真不敢相信是google 出品)获 ...
yhmybsy 发表于 2011-6-9 21:27
非常感谢.我觉得最好是把那两个日本的去掉.基本上国人没有人用过
google的书签到现在还是这么烂.不用chrome的一个原因也在这里..
作者: yhmybsy    时间: 2011-6-9 21:54

成功。。
另外一个问题不死心的试了试,还是不行。。。看来悲剧了。。。
谢谢了。。。
qingxinren 发表于 2011-6-9 21:51
那个你可以用 1.0b6试一下。
作者: qingxinren    时间: 2011-6-9 22:09

那个你可以用 1.0b6试一下。
yhmybsy 发表于 2011-6-9 21:54
新建了一个配置重新搞,发现1.0b6对5.0b3支持不够好。。各种问题。。。
还是坚持每夜版吧。。。
作者: harnack    时间: 2011-6-9 22:57

这个好像是无解,我一般是用[count]b来跳到指定标签页。
作者: weide    时间: 2011-6-9 23:00

本帖最后由 weide 于 2011-6-9 23:39 编辑
看今天的代码更改有一点变化.
Add <win> parameter to load autocmds.
这样不就更方便了...
hoolooday 发表于 2011-6-9 21:10
这个有什么用?
作者: wxuyec    时间: 2011-6-10 00:04

刚刚第二个我说错了,应该是d 关闭th tab.
也就是说2d仅仅删除第二个tab,而不是删除两个...

发现可以通过:js tabs.switchTo(String(),false)跳到指定的tab....
qingxinren 发表于 2011-6-9 21:34
我这里2d就是关闭2个标签页,还想请问有关闭从当前
标签页起右边所有标签页的命令么?
作者: hoolooday    时间: 2011-6-10 00:07

这个有什么用?
weide 发表于 2011-6-9 23:00
我觉得最大的用处就是将不太好按到的.换成这样的.
但是. 有的系统默认不知道有没有影响,最新nightly还没有加入此功能.
估计明天(应该是今天了)就有了
作者: wxuyec    时间: 2011-6-10 00:08

69# yhmybsy
请问这个东西放在哪里啊?我放在.pentadactylrc
中,不对。
作者: harnack    时间: 2011-6-10 01:09

我觉得最大的用处就是将不太好按到的.换成这样的.
但是. 有的系统默认不知道有没有影响,最新nightly还没有加入此功能.
估计明天(应该是今天了)就有了 ...
hoolooday 发表于 2011-6-10 00:07
这个win并不是指win键,而是指:au里增添了参数<win>,:h autocommand-args最后那个就是。
作者: hoolooday    时间: 2011-6-10 08:34

这个win并不是指win键,而是指:au里增添了参数,:h autocommand-args最后那个就是。
harnack 发表于 2011-6-10 01:09
这个我理解错了.
作者: hoolooday    时间: 2011-6-10 08:36

69# yhmybsy
请问这个东西放在哪里啊?我放在.pentadactylrc
中,不对。
wxuyec 发表于 2011-6-10 00:08
在这样的格式好像才可以
js<<EOF
代码
EOF
作者: yhmybsy    时间: 2011-6-10 10:02

我这里2d就是关闭2个标签页,还想请问有关闭从当前
标签页起右边所有标签页的命令么?
wxuyec 发表于 2011-6-10 00:04
好像没直接的命令。

我添加了一个map,e
  1. js <<EOF
  2. function removeTabs(count, arg) {
  3.         let end_pattern = /^[0-9]+$|^(\^|\$)$/;
  4.         if (!end_pattern.test(arg)) {
  5.                 dactyl.echo("Invalid Range", commandline.FORCE_SINGLELINE)
  6.                 return false;
  7.         }
  8.        
  9.         let end = 0;
  10.         if (arg == "$")
  11.                 end = tabs.visibleTabs.length;
  12.         else if (arg == "^")
  13.                 end = -tabs.visibleTabs.length;
  14.         else
  15.                 end = parseInt(arg);

  16.         let start = 0;
  17.         if (typeof count === "object")
  18.                 if (end < start)
  19.                         start = tabs.index(null, true) + 1;
  20.                 else
  21.                         start = tabs.index(null, true);
  22.         else {
  23.                 start = parseInt(count);
  24.                 if (start != 0)
  25.                         start = parseInt(count) - 1;
  26.         }

  27.         let visibleTabs = tabs.visibleTabs;
  28.         let removedTabs = [];
  29.         if (start < end )
  30.                 removedTabs = Array.slice(visibleTabs).slice(start, end);
  31.         else
  32.                 removedTabs = Array.slice(visibleTabs).slice(end, start);
  33.         let removedTabs_length = removedTabs.length;
  34.         removedTabs.forEach(function (aTab) {
  35.                 gBrowser.removeTab(aTab);
  36.         });
  37.         dactyl.echo(removedTabs_length + " tab(s) has been removed!");
  38. }
  39. EOF
  40. nmap -count -arg -javascript e removeTabs(count, arg)

  41. " e$ 删除当前及其右侧所有标签
  42. " e^ 删除当前及其左侧所有标签
  43. " 3e8 从 3 到 8 被删除
复制代码

作者: weide    时间: 2011-6-10 12:20

本帖最后由 weide 于 2011-8-4 10:31 编辑
想请教各位,怎样用 js 模拟鼠标指向(悬停)的效果?比如小明牌豆瓣电台的按钮。
yefoenix 发表于 2011-6-9 09:27
在网页上的悬停,偶尔也会用到,比如本页面的”广场“、”发帖“,鼠标悬停时,会弹出个菜单供选择。一个简单的插件模拟悬停及鼠标移除的操作:hints-mouse-events.js
  1. var INFO =
  2. <plugin name="hints-mouse-events" version="2.0"
  3.         href="https://g.mozest.com/viewthread.php?tid=38908&amp;page=3#pid261071"
  4.         summary="hints mouse events: add hints to trigger mouse over/move/out event"
  5.         xmlns={NS}>
  6.     <info lang="zh-CN" summary="增加鼠标hint模式:触发鼠标移入移出事件"/>
  7.     <author>weide</author>
  8.     <license href="http://opensource.org/licenses/mit-license.php">MIT</license>
  9.     <project name="Pentadactyl" min-version="1.0"/>
  10.     <p lang="en-US">
  11.     Add two extended hint modes:
  12.         <item><spec>;h</spec><description>dispatch mouse over event to popup menu</description></item>
  13.         <item><spec>;r</spec><description>dispatch mouse out  event to remove popup menu</description></item>
  14.         <item><spec>:setmouseout</spec><description>run this command to set the ;h mode's last mouse over elem to mouse out,you may:<example>map so -ex :setmouseout</example></description></item>
  15.         <note>setmousemout is not always work as you like.</note>
  16.     </p>
  17.     <p lang="zh-CN">
  18.     添加两个扩展的hint模式:
  19.         <item><spec>;h</spec><description>触发鼠标移入事件打开弹出对象</description></item>
  20.         <item><spec>;r</spec><description>触发鼠标移出事件关闭弹出对象</description></item>
  21.         <item><spec>:setmouseout</spec><description>执行此命令触发 ;h 模式下鼠标移入对象的移出事件,也可以映射为快捷键执行:<example>map so -ex :setmouseout</example></description></item>
  22.         <note>setmouseout不是每次都能象想象的那么工作</note>
  23.     </p>
  24. </plugin>;

  25. dactyl.modules.hints.getFilter = function getFilter(events){
  26.         return function(elem){
  27.                 var els = Cc["@mozilla.org/eventlistenerservice;1"].getService(Ci.nsIEventListenerService);
  28.                 var infos = els.getListenerInfoFor(elem, {});
  29.                 for(var i=0;i<infos.length;i++){
  30.                         if(events.indexOf(infos[i].type)>=0) {
  31.                                 return true;
  32.                         }
  33.                 };
  34.                 return false;
  35.         }
  36. }

  37. dactyl.modules.hints.dispatchEvents = function dispatchEvent(elem,events){
  38.         events.forEach(function(event){
  39.                 var evt = document.createEvent("MouseEvents");
  40.                 evt.initEvent(event, true, true);
  41.                 elem.dispatchEvent(evt);
  42.         });
  43. }


  44. dactyl.modules.hints.LastMouseOverElem=null;

  45. dactyl.modules.hints.addMode(
  46.         "h" ,
  47.         "Mouse over the hint" ,
  48.         function(elem) {
  49.                 dactyl.modules.hints.dispatchEvents(elem,['mouseover','mousemove']);                                       
  50.                 dactyl.modules.hints.LastMouseOverElem = elem;
  51.         },
  52.         dactyl.modules.hints.getFilter(['mouseover','mousemove']),
  53.         ["*"]
  54. );

  55. dactyl.modules.hints.addMode(
  56.         "r" ,
  57.         "Mouse out the hint",
  58.         function(elem) dactyl.modules.hints.dispatchEvents(elem,['mouseout']),
  59.         dactyl.modules.hints.getFilter(['mouseout']),
  60.         ["*"]
  61. );

  62. group.commands.add(
  63.     ['setmouseout'],
  64.     '',
  65.     function (){
  66.         if(dactyl.modules.hints.LastMouseOverElem)
  67.                         dactyl.modules.hints.dispatchEvents(dactyl.modules.hints.LastMouseOverElem,['mouseout']);
  68.     }
  69. );
复制代码
至于”小明牌豆瓣电台“,这个是扩展吧,没用过。它上面的按钮估计需要根据它的id单独来写了
作者: hoolooday    时间: 2011-6-10 13:41

最新的版的dactyl.用weide上面的hints-more.js报错..
Sourcing file: C:\Users\xxx\pentadactyl\plugins\hint-more.js:1: SyntaxError: illegal character
这个插件,怎么操作才有效果啊?
作者: harnack    时间: 2011-6-10 13:55

感谢weide的分享,我试了试在最新的每夜版上没有问题。其实很早就有这样一个issue:
http://code.google.com/p/dactyl/issues/detail?id=118
但Kris一直没来得及处理,没想到在这里找到了解决方案。
作者: hoolooday    时间: 2011-6-10 13:59

本帖最后由 hoolooday 于 2011-6-10 14:00 编辑
感谢weide的分享,我试了试在最新的每夜版上没有问题。其实很早就有这样一个issue:
http://code.google.com/p/dactyl/issues/detail?id=118
但Kris一直没来得及处理,没想到在这里找到了解决方案。 ...
harnack 发表于 2011-6-10 13:55
好像是文本格式的问题,我保存成utf-8也好了.
很神奇.
操作方法
;h
;r

作者: weide    时间: 2011-6-10 17:06

感谢weide的分享,我试了试在最新的每夜版上没有问题。其实很早就有这样一个issue:
http://code.google.com/p/dactyl/issues/detail?id=118
但Kris一直没来得及处理,没想到在这里找到了解决方案。 ...
harnack 发表于 2011-6-10 13:55
有需求,就完善了一下:
  增加触发onmousemove事件
  只显示带有属性onmouseover/onmousemove/onmouseout的hint

issue里提到的click,貌似f进入hint模式就可以工作的很好呀

另外今天更新了falsh到10.3,pentadactyl更新到最新版,导致操作特别“卡”

:version
Pentadactyl hg6188 "(created 2011/06/10 00:00:07)" running on:
Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1
作者: wxuyec    时间: 2011-6-10 18:13

83# yhmybsy
谢谢,好用。
作者: wxuyec    时间: 2011-6-10 18:23

在网页上的悬停,偶尔也会用到,比如本页面的”广场“、”发帖“,鼠标悬停时,会弹出个菜单供选择。一个简单的插件模拟悬停及鼠标移除的操作:hints-more.js
var INFO =

   
    weide
    MIT
   
   
    A ...
weide 发表于 2011-6-10 12:20
似乎有个小bug,在本页面使用hint-more脚本时,
头像所弹出的菜单用;r去除不掉。
作者: harnack    时间: 2011-6-10 19:41

本帖最后由 harnack 于 2011-6-10 19:53 编辑

的确存在楼上所说的问题,不过真正诡异之处是;r时比;h多显示出来一个hint(数一下就会发现),其中一个hint被遮掩住了,选择那个被掩盖住的hint就能把头像菜单收起来。

另外很多网站里,没有onmouseover/onmousemove/onmouseout属性的链接也会有悬停菜单,比如xiami:
http://www.xiami.com/album/13138
红框里的那些按钮鼠标悬停时会有下拉菜单,但它们没有onmouseover/onmousemove/onmouseout属性,所以脚本对它们无效,能把它们也包括进来吗?多谢了!

[attach]24717[/attach]

ps:这些链接的一个共同之处是其href为"javascript:void(0)"。
作者: weide    时间: 2011-6-10 22:36

的确存在楼上所说的问题,不过真正诡异之处是;r时比;h多显示出来一个hint(数一下就会发现),其中一个hint被遮掩住了,选择那个被掩盖住的hint就能把头像菜单收起来。
造成这个问题的原因是:鼠标悬停在头像上时,弹出的“个人信息框”,响应mouseout,所以会多出一个来。
至于hint被遮掩,大概是因为头像和“个人信息框”的左上位置相同,pentadactyl生成的hint刚好重合了--和pentadactyl的hint在链结较多的时候,造成的互相覆盖是一样的
另外很多网站里,没有onmouseover/onmousemove/onmouseout属性的链接也会有悬停菜单,比如xiami:
http://www.xiami.com/album/13138
红框里的那些按钮鼠标悬停时会有下拉菜单,但它们没有onmouseover/onmousemove/onmouseout属性,所以脚本对它们无效,能把它们也包括进来吗?多谢了!

harnack 发表于 2011-6-10 19:41
大概看了一下,好像它是通过a:hover来实现的弹出,试了下触发onmouseover并不能弹出,一时想不出啥好办法了,估计只能单独写脚本实现了


---
又改进了一点代码,增加了一个命令 :setmouseout,可以把最后弹出的对象关掉--同样,上面提到的“个人信息框”也不能被正确关掉
作者: qingxinren    时间: 2011-6-10 23:45

我这里2d就是关闭2个标签页,还想请问有关闭从当前
标签页起右边所有标签页的命令么?
wxuyec 发表于 2011-6-10 00:04
不好意思,今天外出一天,回家倒头就睡,刚刚才睡醒。。。
yhmybsy  好热心。。
作者: harnack    时间: 2011-6-10 23:53

大概看了一下,好像它是通过a:hover来实现的弹出,试了下触发onmouseover并不能弹出,一时想不出啥好办法了,估计只能单独写脚本实现了
weide 发表于 2011-6-10 22:36
其实也没那么复杂,用mouseover就能触发那个菜单。其实最初的那个版本对xiami是有效的,现在无效只是因为设置了eht+=[h]:×××。把这个限制去掉或者把×××部分写得更宽泛些(当然里面那两个if也得对应地改改)还是能生效的,比如
set eht+=[h]:[onmouseover],[onmousemove],[href*='void']
但这样写又太宽泛了,因为href="javascript:void(0)"的链接并非全都带有悬停菜单,也没办法去进一步筛选。算了,不管它了,能用就好。
作者: yhmybsy    时间: 2011-6-11 01:34

建议用 autocmd LocationChange动态修改 eht
作者: harnack    时间: 2011-6-11 02:48

建议用 autocmd LocationChange动态修改 eht
yhmybsy 发表于 2011-6-11 01:34
嗯,这是个好主意,多谢指点。
作者: yhmybsy    时间: 2011-6-11 23:22

本帖最后由 yhmybsy 于 2011-6-14 10:11 编辑

加一个新插件
edit
快速打开与firefox相关的文件和目录,方便修改或者查看 firefox 配置文件,脚本等。
  1. :ei " 直接 打开 pentadactyl 配置文件(如果存在的话)

  2. :ei! pref.js " 在新标签 页中打开 pref.js

  3. :ei pref.js " 用外部编辑器打开 pref.js, 在 windows 下, js类型的文件好像没与编辑器做关联

  4. :ei user.js " 打开用户配置文件,如果不存在会提醒是否创建

  5. :ei! extensions\\inspector@mozilla.org\\chrome\\inspector.jar " 打开 Dom Inspector,查看其源代码

  6. :ei! omni.jar " 这个没什么好说的了,firefox 都要被看完了。

  7. :ei! xxx.xpi "

  8. :set oped=C:\\Program\ Files\\Vim\\vim73\\gvim.exe " 设置外部编辑器, 这两种路径名写法都可以,不要写成'C:/Program Files/Vim/vim73/gvim.exe', 这种写法 pentadactyl 认,但 firefox 不认。oped 选项默认为空,使用系统关联的编辑器。
  9. :set oped='C:\Program Files\Vim\vim73\gvim.exe'      
  10. :set opsu+=.c,.cpp,.h  " 外部编辑器支持的文件名扩展
复制代码
[attach]24736[/attach][attach]24739[/attach]
  1. hi -a CompResult {width:68%;}
  2. hi -a CompDesc {width:30%;}
复制代码
调整自动补全窗口中描述,结果的大小,发现在windows下用 :ei 时,右侧的描述内容太宽了,把文件名都给覆盖了。
最后感叹一下 windows 冗长的路径名和写法!

下载地址:

https://github.com/grassofhust/d ... tyl/plugins/edit.js
作者: yhmybsy    时间: 2011-6-12 00:15

jar:file:////home/eric/.mozilla/firefox/4.0/extensions/inspector@mozilla.org/chrome/inspector.jar!/content/inspector/tasksOverlay-tb.xul

打开上面的页面会出现如下提示信息:

Remote XUL
      
      
      
      
      
        
        
          This page uses an unsupported technology that is no longer available by default in Firefox.
        

        
        Please contact the website owners to inform them of this problem.

其实按一下 gf 就能看到 tasksOverlay-tb.xul 的内容了。
作者: harnack    时间: 2011-6-12 01:44

本帖最后由 harnack 于 2011-6-12 01:55 编辑

yhmybsy大大最近很多产。

试了下edit.js,很不错。windows下js文件的确没与编辑器做关联,能不能在脚本里加个选项让用户直接指定编辑器呢,其实不论js还是css我都想用Vim打开。

另外这个\\的写法固然可以,不过我试了后发现在Pentadactyl里用/也是可以的,这样会不会更简洁些呢?

[attach]24742[/attach]
作者: yhmybsy    时间: 2011-6-12 16:02

本帖最后由 yhmybsy 于 2011-6-12 20:34 编辑
yhmybsy大大最近很多产。

试了下edit.js,很不错。windows下js文件的确没与编辑器做关联,能不能在脚本里加个选项让用户直接指定编辑器呢,其实不论js还是css我都想用Vim打开。

另外这个\\的写法固然可以, ...
harnack 发表于 2011-6-12 01:44
已经添加 。

windows下的文件/目录补全好像不太好用,实在是有点摸不透。

比如 cd C:,我这边好几个系统下都弹不出来自动补全列表。


用 / 替换  \\  还没弄,这个要繁琐一点。




© 2004-2009 Mozest.com