九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Xiao Shan ? pentadactyl試用記

pentadactyl試用記 - 20110712更新

(31,640 views)
March 22, 2011

20110512更新 – 更新6. UI設(shè)置

Pentadactyl 是由 Vimperator 項(xiàng)目最活躍的開發(fā)者 Kris Maglione、Doug Kearns、Martin Stubenschrott維護(hù)的針對(duì) Firefox4的一個(gè)分支。

官方介紹:

Pentadactyl is a free browser add-on for Firefox, designed to make browsing more efficient and especially more keyboard accessible. Largely inspired by the Vim text editor, the appearance and finger feel of Pentadactyl should be familiar to Vim users.

Dactyl is a fork of the Vimperator project by most of its primary developers.

————————————————————–
目錄:
1. 安裝

1.1 新建個(gè)profile
1.2 創(chuàng)建一個(gè)新的啟動(dòng)快捷方式
1.3 安裝pentadactyl擴(kuò)展

2. 配置

2.1 啟動(dòng)
2.2 生成rc文件
2.3 保存配置到rc文件
2.4 查看_pentadactylrc文件內(nèi)容
2.5 直接編輯_pentadactylrc文件
2.6 多套配置切換
2.7 查看當(dāng)前生效的配置文件路徑

3. 熟悉基本鍵和命令

3.1 支持ctrl+c/v
3.2 標(biāo)簽操作

3.2.1 打開標(biāo)簽
3.2.2 關(guān)閉標(biāo)簽
3.2.3 Lock/Protect/Pin標(biāo)簽
3.2.4 移動(dòng)標(biāo)簽

3.3 頁(yè)面瀏覽
3.4 搜索

3.4.1 一般搜索
3.4.2 站內(nèi)搜索
3.4.3 頁(yè)面搜索

3.5 緩沖區(qū)

3.5.1 查看緩沖區(qū)信息
3.5.2 復(fù)制緩沖區(qū)對(duì)應(yīng)的頁(yè)面地址
3.5.3 緩沖區(qū)列表(支持filter標(biāo)簽)

3.6 書簽

4. Hints

4.1 Hint模式

4.1.1 Quick Hint
4.1.2 Shift Quick Hint
4.1.3 Extended Hint
4.1.4 Persisted Extended Hint
4.1.5 Caret Hint

4.2 相關(guān)配置項(xiàng)

5. options設(shè)置
6. UI設(shè)置

6.1 guioptions
6.2 狀態(tài)欄
6.3 命令行訪問GUI

7. plugins插件

7.1 插件存放
7.2 插件加載
7.2 插件推薦

8. 相關(guān)資料和站點(diǎn)
9. to do
———————————————————————————–
使用手記:

  • 安裝
    1. 新建一個(gè)profile
      使用profile manager創(chuàng)建一個(gè)新的profile – pentadactyl

      1firefox.exe -profilemanager

      與原來的profile共存一起用

    2. 創(chuàng)建一個(gè)新的啟動(dòng)快捷方式
      使用如下啟動(dòng)參數(shù)啟動(dòng)pentadactyl的profile

      1-no-remote -P pentadactyl -pentadactyl "++cmd 'js services.environment.set("HOME", services.directory.get("ProfD", Ci.nsIFile).path)"'

      -P指定profile為pentadactyl
      -pentadactyl是用來配置pentadactyl擴(kuò)展的參數(shù),后面再說
      到這就可以用這個(gè)快捷方式啟動(dòng)pentadactyl專用的firefox了

    3. 安裝pentadactyl擴(kuò)展
  • 配置
    1. 啟動(dòng)
    2. pentadactyl跟vim一樣有rc文件用來保存配置,在擴(kuò)展啟動(dòng)時(shí)讀取,這樣我們辛苦做的配置工作就不會(huì)白費(fèi)。
      由于用的firefox是綠色便攜的,所以希望rc文件也能便攜,并且我準(zhǔn)備放到新建的profile目錄里,便于維護(hù)。

      1-pentadactyl "++cmd 'js services.environment.set(\"HOME\", services.directory.get(\"ProfD\", Ci.nsIFile).path)'"

      或者

      1-pentadactyl "++cmd 'js services.environment.set(''HOME'', services.directory.get(''ProfD'', Ci.nsIFile).path)'"

      (這兩種是比較通用的寫法,更多的參見

這個(gè)執(zhí)行的Ex命令就是設(shè)置系統(tǒng)的環(huán)境變量$HOME為profile目錄。
這樣pentadactyl就可以在初始化時(shí)從profile目錄去讀取rc文件了。
—————— 感謝tuantuan的指點(diǎn)

關(guān)于更多-pentadactyl的啟動(dòng)參數(shù),請(qǐng)查看幫助

1:help startup-options
  • 生成rc文件
  • 1:mkp

    這個(gè)命令會(huì)在$HOME(現(xiàn)在就是profile目錄)下生成_pentadactylrc配置文件用于保存配置
    (mkp – make pentadactyl rc file,vimperator下是mkv[imperator],害得我試了半天=_=|||)

  • 保存配置到rc文件
  • 以后如果更改了配置,可以通過下面的命令將更新保存到剛才生成的rc文件中

    1:mkpentadactylrc!

    問題??
    mkp!似乎只能覆蓋保存當(dāng)前鍵映射和設(shè)置的options到rc文件中,所以如果原來在_pentadactylrc文件中手動(dòng)添加了其他內(nèi)容,比如javascript代碼,mkp!后這些內(nèi)容不會(huì)重新寫入到新的_pentadactylrc里。

  • 查看_pentadactylrc文件內(nèi)容
  • 自定義一個(gè)Ex命令(:rc),用來在firefox中直接用新tab查看rc文件內(nèi)容

    1:com! rc -description "Open _pentadactylrc file" -js gBrowser.selectedTab = gBrowser.addTab("file:///"+Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path+"/_pentadactylrc");
  • 直接編輯_pentadactylrc文件
  • 自定義一個(gè)Ex命令(:erc),用來通過外部編輯器直接編輯rc文件

    1:com! erc -description "Edit _pentadactylrc file" -js editor.editFileExternally(Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("ProfD", Components.interfaces.nsIFile).path+"\\_pentadactylrc")

    【注意?。 ?/span>
    直接編輯rc文件不能生效(如果這時(shí)候用:mkpentadactyl!命令保存設(shè)置會(huì)覆蓋剛才直接編輯更改的內(nèi)容),需要重新載入。
    可以用:rehash命令

    1:rehash

    rehash命令會(huì)重新load整個(gè)擴(kuò)展,或者用下面的命令只重新load rc文件

    1:source $HOME/_pentadactylrc

    為此我重新定義了Ex命令 – fresh

    1:com! fresh -description "Reload _pentadactyl rc file" source $HOME/_pentadactylrc

    【推薦】
    另外,如果編輯器用的是vim,可以導(dǎo)出pentadactyl的語(yǔ)法文件到vim,使vim編輯rc文件時(shí)可以語(yǔ)法高亮。

    1:mks!

    生成pentadactyl的語(yǔ)法文件pentadactyl.vim。
    (mks命令可以指定生成的語(yǔ)法文件的保存路徑。不指定的話會(huì)自動(dòng)識(shí)別vim的runtime路徑,如果vim安裝時(shí)注冊(cè)表沒問題,會(huì)在syntax文件夾下生成語(yǔ)法文件;否則的話,可能會(huì)在pentadactyl的runtime路徑下生成,需要手動(dòng)拷到vim的syntax文件夾下)

    生成了語(yǔ)法文件后,在vim的rc文件中配置如下內(nèi)容

    1au BufRead,BufNewFile _pentadactylrc set filetype=pentadactyl
    2au! Syntax pentadactyl source ~/syntax/pentadactyl.vim

    再用vim打開_pentadactylrc時(shí)即可開啟語(yǔ)法高亮。

  • 多套配置切換
  • 用下面的命令可以實(shí)現(xiàn)多套配置熱切換(無須重啟firefox)

    1:js services.environment.set("HOME", "another home path")
    2:rehash

    rehash用于重新加載pentadactyl擴(kuò)展,包含擴(kuò)展的所有初始化代碼,plugins以及配置。

  • 查看當(dāng)前生效的配置文件路徑
  • 1:scriptnames

    這個(gè)命令會(huì)按順序列出所有被source的腳本文件的絕對(duì)路徑,其中第一個(gè)就是rc文件。

  • 熟悉基本鍵和命令
    開始折騰鍵和命令之前,先設(shè)置如下CSS

    1:style chrome://* #dactyl-commandline-command input {ime-mode: inactive;}
    2:style chrome://* #dactyl-statusline-field-commandline-command input {ime-mode: inactive;}

    保證進(jìn)入命令行時(shí)輸入法是disable的,這樣方便輸入命令。(注意這個(gè)css在linux下不支持 – ime-mode: inactive)

    關(guān)于鍵命令的使用方法,參見另一篇Pentadactyl鍵詳解

    1. 支持ctrl+c/ctrl+v
    2. pentadactyl為了還原vim的操作體驗(yàn),幾乎重新定義了firefox所有的快捷鍵,甚至包括終極創(chuàng)新之法ctrl+c/ctrl+v
      下面的命令可以找回我們熟悉的這套快捷鍵。

      ctrl+c復(fù)制

      1:noremap <C-c> <C-v><C-c>

      noremap命令是用來映射鍵的,這行的意思是重新定義鍵ctrl+c為pentadactyl中的鍵序列ctrl+v,ctrl+c
      在pentadactyl中,ctrl+v是用于直接傳遞后續(xù)按鍵給firefox,所以這個(gè)按鍵序列就相當(dāng)于在firefox按ctrl+c,這樣就實(shí)現(xiàn)了firefox原來的ctrl+c復(fù)制功能。

      這里要用noremap而不能是普通的map命令,因?yàn)檫@條映射的目標(biāo)定義鍵(ctrl+c)和使用的實(shí)現(xiàn)鍵(ctrl+v ctrl+c)里面都有ctrl+c,用一般的map的話,實(shí)現(xiàn)鍵里面的鍵會(huì)使用用戶定義鍵,這樣就會(huì)導(dǎo)致無限遞歸。而用noremap命令的話,實(shí)現(xiàn)鍵序列中的鍵只會(huì)用系統(tǒng)定義鍵。(noremap等價(jià)于使用-builtin參數(shù)的map)

      采用未加模式前綴的noremap命令,可以支持normal和visual模式。
      所以這條命令等價(jià)于

      1:nnoremap <C-c> <C-v><C-c>
      2:vnoremap <C-c> <C-v><C-c>

      這樣還剩下insert和command line模式

      1:inoremap <C-c> <C-v><C-c>
      2:cnoremap <C-c> <C-v><C-c>

      或者用這一條命令,它包含了上面這幾條映射。

      1:map -modes=n,v,i,c <C-c> -builtin <C-v><C-c>

      到這里,ctrl+c就已經(jīng)找回來,別忘了用mkp保存到rc文件。

      ctrl+v黏貼
      ctrl+v只有在insert和command line才需要

      1:inoremap <C-v> <C-v><C-v>
      2:cnoremap <C-v> <C-v><C-v>

      ctrl+x剪切

      1:inoremap <C-x> <C-v><C-x>
      2:cnoremap <C-x> <C-v><C-x>

      ctrl+z撤銷jj

      1:inoremap <C-z> <C-v><C-z>
      2:cnoremap <C-z> <C-v><C-z>

      ctrl+a全選

      1:noremap <C-a> <C-v><C-a>
      2:inoremap <C-a> <C-v><C-a>
      3:cnoremap <C-a> <C-v><C-a>

      ——————-
      其實(shí),pentadactyl中給map相關(guān)命令引入了一個(gè)特殊字符 – <Pass>
      這個(gè)特殊字符可以把前面mapping的鍵直接傳給firefox,所以上面的可以統(tǒng)一寫成

      1map -m n,v,i,c,t <C-a> <Pass>
      2map -m n,v,i,c,t <C-c> <Pass>
      3map -m i,c,t <C-v> <Pass>
      4map -m i,c,t <C-x> <Pass>
      5map -m i,c,t <C-z> <Pass>

      —————— 感謝harnack的指點(diǎn)

    3. 標(biāo)簽操作
    4. 標(biāo)簽選擇

      1Ctrl+n(ext) -下一個(gè)標(biāo)簽
      2Ctrl+p(revious) - 上一個(gè)標(biāo)簽
      3gt - 下一個(gè)標(biāo)簽
      4gT - 上一個(gè)標(biāo)簽
      5g0 - 第一個(gè)標(biāo)簽
      6g^ - 第一個(gè)標(biāo)簽
      7g$ - 最后一個(gè)標(biāo)簽

      這一套鍵跟vim是一樣的,可以看出來按鍵是按照表意來設(shè)計(jì)的,容易記,但是我一直都用不慣,按起來不舒服。
      在瀏覽器下,標(biāo)簽切換頻繁,操作一定要方便,所以回頭還得重新進(jìn)行鍵綁定。

      1Ctrl+^

      切換到上次選的標(biāo)簽,連續(xù)使用可以實(shí)現(xiàn)在兩個(gè)標(biāo)簽間切換。

      1[count]b - 切換到第[count]個(gè)標(biāo)簽

      比如:1b就跟g0是一樣的效果,切換到第一個(gè)標(biāo)簽。
      單獨(dú)按一個(gè)b可以列出所有的標(biāo)簽,然后通過(shift+)tab也可以在標(biāo)簽間切換。
      單獨(dú)b后空格,跟URL或者keyword,就是swith-to-tab功能。
      其實(shí)這里的b是buffer的意思,是pentadactyl中很重要的一個(gè)概念,回頭細(xì)講。

      打開標(biāo)簽
      最基本的幾個(gè)命令

      1o - 在當(dāng)前tab打開 - o(pen)
      2t - 在新tab打開 - t(abopen)
      3w - 在新窗口打開 - w(inopen)

      支持打開單個(gè)URL,多個(gè)URLs(URL之間的分隔符可以通過配置項(xiàng)urlseparator設(shè)置),書簽(關(guān)鍵字),指定搜索引擎搜索,用默認(rèn)搜索引擎搜索(默認(rèn)引擎通過配置項(xiàng)defsearch設(shè)置);
      另外打開命令還提供了非常強(qiáng)大的completion(細(xì)節(jié)請(qǐng)查閱配置項(xiàng)complete和autocomplete)

      1p - 用剪切板的內(nèi)容在當(dāng)前標(biāo)簽打開
      2P - 這個(gè)是新開標(biāo)簽

      剪切板中的內(nèi)容如果是URL,就按地址打開,否則搜索(用默認(rèn)的搜索引擎)。
      這里我交換兩個(gè)鍵的定義,一般我喜歡新開標(biāo)簽

      1noremap p P
      2noremap P p

      復(fù)制當(dāng)前標(biāo)簽

      1:tabdu[plicate]
      2T<CR>

      最好配上openTabNextToCurrent.uc.js腳本,要不復(fù)制的標(biāo)簽追加在最后,很別扭。
      關(guān)閉標(biāo)簽

      1d - 關(guān)閉當(dāng)前標(biāo)簽并選中右邊的
      2D - 關(guān)閉當(dāng)前標(biāo)簽并選中左邊的

      像vim一樣,命令前可以加數(shù)量前綴指定關(guān)閉的標(biāo)簽數(shù),比如2d – 從當(dāng)前標(biāo)簽開始關(guān)閉2個(gè)

      1:tabc(lose)

      拜completion之福這個(gè)命令可以看到所有的標(biāo)簽,用(shift+)tab選擇關(guān)閉。(這個(gè)挺有用的,我經(jīng)常會(huì)不知不覺就開了幾十個(gè)標(biāo)簽,用這個(gè)選擇關(guān)閉很方便)

      這個(gè)命令后面可以跟參數(shù)keyword,這樣會(huì)關(guān)閉所有主機(jī)名包含keyword的標(biāo)簽。
      比如,我針對(duì)baidu開了很多標(biāo)簽,用這個(gè)命令:tabc baidu就可以一次性把baidu的標(biāo)簽都關(guān)閉。
      如果加上!,:tabc!不僅用主機(jī)名來匹配關(guān)鍵字,還會(huì)匹配URL和title。

      1:tabo(nly)

      關(guān)閉當(dāng)前標(biāo)簽之外的所有標(biāo)簽

      1u - 恢復(fù)一個(gè)已關(guān)閉標(biāo)簽 - 可以加[count]前綴指定恢復(fù)第幾個(gè)
      2:undoa[ll] - 恢復(fù)closed標(biāo)簽列表中的所有標(biāo)簽

      Lock/Protect/Pin標(biāo)簽
      這個(gè)是不是pentadactyl還不支持。

      (un)pin在1.0b6中不支持,每夜版可以,感謝harnack指出

      1:pin
      2:unpin
      3:pin! 這個(gè)是切換pin狀態(tài)

      移動(dòng)標(biāo)簽

      1:tabm[ove][!] [+N] | [-N]
      2:tabm 0                 - 移到第一位
      3:tabm                    - 移到最后一位
      4:tabm 4                 - 移到第4個(gè)標(biāo)簽后面, 就是變成第5個(gè)
      5:tabm -1                - 向前移動(dòng)1位
      6:tabm +2               - 向后移動(dòng)2位

      指定N的話,是移到第N個(gè)標(biāo)簽的后面,就是成為第N+1個(gè)
      N加+/-號(hào)的話,是相對(duì)移動(dòng)。
      tabm!,命令加!,移動(dòng)時(shí)到邊界了會(huì)循環(huán),默認(rèn)時(shí)不循環(huán)。

    5. 頁(yè)面瀏覽
    6. 1  k
      2h   l
      3  j

      最基本的上下左右,熟悉vim的都用慣了。
      但是瀏覽時(shí),一行一行移有點(diǎn)慢,重新定義下多移幾行

      1:noremap j 5j
      2:noremap k 5k

      另外h和l基本上也是用不到的,我重新映射成“切換到前/后一個(gè)標(biāo)簽頁(yè)”

      1:map -m=n h -builtin <count>gT
      2:map -m=n l -builtin <count>gt
      1ctrl+b 向上滾一屏
      2ctrl+f 向下滾一屏
      3ctrl+u 向上滾半屏
      4ctrl+d 向下滾半屏

      如果scroll配置項(xiàng)設(shè)置了非0值,ctrl+u/d按scroll行來滾屏

      1gg 滾屏到頁(yè)面頂端
      2G 滾屏到頁(yè)面底部
      350% 按百分比滾屏
      40 屏幕左移到頭
      5^ 屏幕左移到頭
      6$ 屏幕右移到頭
    7. 搜索
    8. 首先清理搜索引擎列表

      1:dialog searchengines

      打開firefox的搜索引擎編輯窗口,刪除不用的引擎,并安裝需要的
      最后保留

      1google - keyword: google
      2google ssl - g
      3baidu - b

      設(shè)置默認(rèn)引擎為google ssl

      1:set defsearch=google-ssl

      一般搜索

      1t keyword1 keyword2

      用默認(rèn)引擎新開tab搜索

      1t b keyword1 keyword1

      用其他引擎(baidu已設(shè)搜索引擎關(guān)鍵字b)新開tab搜索

      1p

      如果已經(jīng)復(fù)制了搜索關(guān)鍵字,直接p用默認(rèn)引擎新開tab搜索(參考“打開標(biāo)簽”章節(jié)相關(guān)內(nèi)容)

      因?yàn)樗阉魍︻l繁的,所以一定要簡(jiǎn)化操作
      【☆推薦】

      1:map t -js content.getSelection().toString()!=""dactyl.execute(":tabopen "+ content.getSelection()):CommandExMode().open("tabopen ")
      2:map o -js content.getSelection().toString()!=""dactyl.execute(":open "+ content.getSelection()):CommandExMode().open("open ")

      重定義t和o:
      如果有文字鏈接被選中,則直接打開鏈接;如果被選中的是一般文字,則用默認(rèn)搜索引擎搜索;否則打開:tabopen或者:open命令行,手動(dòng)輸入關(guān)鍵字搜索。

      【☆推薦】
      網(wǎng)友x有一個(gè)搜索需求:如果選中的文字是空格分隔的多個(gè)關(guān)鍵字,則用默認(rèn)搜索引擎開多個(gè)標(biāo)簽分別進(jìn)行搜索
      首先rc文件中定義如下函數(shù)

      01javascript <<EOF
      02    dactyl.mulSearch = function() {
      03        let selection = content.getSelection().toString();
      04        if(!selection || /^\s*$/.test(selection)) {
      05            CommandExMode().open("tabopen ");
      06        } else {
      07            let keywords = selection.replace(/^\s*/, "").replace(/\s*$/, "").split(/\s+/);
      08            keywords.forEach(function(keyword) {
      09                dactyl.execute(":tabopen " + keyword);
      10            });
      11        }
      12    };
      13EOF

      然后映射t為對(duì)應(yīng)的功能鍵

      1:map t -js dactyl.mulSearch();

      對(duì)于有很多搜索引擎的用戶,可能希望搜索時(shí)能夠指定一下引擎。
      這兩行命令映射S鍵:彈出搜索引擎列表,可以指定引擎搜索選中內(nèi)容。
      【☆推薦】

      1:com! -nargs=? -complete=search engineSelect exe 't <args> ' + content.getSelection()
      2:map S :engineSelect<Space>

      按了S后就能自己輸入搜索引擎關(guān)鍵字(當(dāng)然也可以在自動(dòng)補(bǔ)全菜單里選擇),如果不選直接回車就是用默認(rèn)引擎(對(duì)于選中的恰好是鏈接的情況則是直接打開鏈接) ——————–by harnack

      還有一種搜索需求:當(dāng)我用google搜索了一個(gè)內(nèi)容后,可能還想再用baidu搜索一下,這時(shí)候我不想再重新輸入一遍要搜索的內(nèi)容,希望能夠直接切換引擎搜索剛才的內(nèi)容。
      【☆推薦】

      1:com! -nargs=? -complete=search switchenginesearch exe 'o <args> ' + (buffer.lastInputField?buffer.lastInputField.value:'')
      2:map s gi<ESC> :switchenginesearch<Space>

      映射鍵s:在某個(gè)搜索引擎結(jié)果頁(yè)面按s鍵,會(huì)彈出引擎列表,選中引擎直接更換引擎用當(dāng)前搜索的內(nèi)容重新搜索。

      站內(nèi)搜索
      定義一個(gè)Ex命令 – sitesearch,用google站內(nèi)搜索API搜索當(dāng)前站點(diǎn)

      對(duì)應(yīng)baidu的

      頁(yè)面內(nèi)搜索

      1/ 正向查找
      2 反向查找

      大小寫是否敏感,可以通過findcase配置項(xiàng)設(shè)置(ignore,match)
      也可以通過在命令中加轉(zhuǎn)義序列

      1\c 不敏感
      2\C 敏感

      轉(zhuǎn)義序列中還有

      1\l 只查找links

      另外,pentadactyl中查找都是從當(dāng)前位置開始,不像firefox總是從頭開始查找

      可惜的是,目前還不支持正則表達(dá)式。

      1n 查找下一個(gè)
      2N 查找上一個(gè)

      這里好像n/N并不會(huì)根據(jù)/?而變化,我記得vim中使用?查找后,再用n也是反向查找的。目前pentadactyl中,n永遠(yuǎn)是向下查找下一個(gè)。

      1* 直接向后查找當(dāng)前光標(biāo)下的單詞
      2# 反向

      這個(gè)命令不用選中文字,在單詞上點(diǎn)擊一下鼠標(biāo)就可以開始查找了,非常方便,但中文下不太有用。

      -> 高亮
      通過下面兩個(gè)配置項(xiàng)可以配置高亮規(guī)則

      1:set hlfind    所有的匹配都會(huì)高亮
      2:set nohlfind 只高亮當(dāng)前匹配

      自定義一個(gè)命令hl用來toggle高亮
      【☆推薦】

      1:command! hl set hlf!
    9. 緩沖區(qū)
    10. 緩沖區(qū)(buffer)是vim中的一個(gè)概念,最初vim編輯器是單窗口模式,但為了方便同時(shí)操作多個(gè)文件,采用了緩沖區(qū)。每一個(gè)文件對(duì)應(yīng)一個(gè)緩沖區(qū),里面存儲(chǔ)著被打開的文件。這樣,如果沒有把緩沖區(qū)里的文件存盤,那么原始文件不會(huì)被更改。同時(shí),可以通過切換緩沖區(qū)來實(shí)現(xiàn)通過一個(gè)窗口編輯多個(gè)文件。

      pentadactyl也有對(duì)應(yīng)的概念,pentadactyl中每個(gè)緩沖區(qū)對(duì)應(yīng)一個(gè)tab,保存著對(duì)應(yīng)網(wǎng)頁(yè)的內(nèi)容,包括所有的frames以及歷史信息。目前緩沖區(qū)可以等價(jià)的理解成標(biāo)簽,但也不排除以后會(huì)有別的東西出現(xiàn)的可能。

      查看緩沖區(qū)信息

      1<C-g> 查看buffer的基本信息 - 當(dāng)前文件名,最后修改時(shí)間,feed數(shù)量,標(biāo)題
      2g<C-g> 查看buffer的詳細(xì)信息,與:pageinfo等價(jià)
      3gf 查看頁(yè)面源代碼/切換回原始頁(yè)面
      4gF 用外部編輯器查看頁(yè)面源代碼

      復(fù)制緩沖區(qū)對(duì)應(yīng)的頁(yè)面地址
      快捷鍵y可以復(fù)制當(dāng)前緩沖區(qū)對(duì)應(yīng)的URL地址到剪切板

      1y

      我們還可以定義一個(gè)快捷鍵<c-y>用于復(fù)制當(dāng)前打開的所有標(biāo)簽的URLs

      1:map <c-y> -d "Yank all locations to the clipboard" -e yank :tabdo :echo buffer.uri.spec

      相應(yīng)的,對(duì)應(yīng)于快捷鍵p,再定義一個(gè)<c-p>用于打開多個(gè)URLs
      首先,rc文件中添加如下javascript函數(shù)

      1javascript <<EOF
      2tabs.openURLs = function() {
      3        let urls = dactyl.clipboardRead();
      4        let urlsArray = urls.split(options.get("urlseparator").value);
      5        for(var i in urlsArray) {
      6            dactyl.open(urlsArray[i], { from: "paste", where: dactyl.NEW_TAB });
      7        }
      8    };
      9EOF

      然后,定義鍵<c-p>

      1:map <c-p> -d "Open urls based on the current clipboard contents" -js tabs.openURLs();

      這個(gè)快捷鍵可以打開剪切板中的一組URLs,這些URLs之間必須用配置項(xiàng)urlseparator設(shè)置的分隔符分隔,默認(rèn)的分隔符是豎線|
      所以,如果想支持打開通過<c-y>復(fù)制得到的URLs,還需要添加分隔符-回車換行符

      1:set urlseparator='(\||\s+)'

      這樣設(shè)置urlseparator就可以支持|或者任何空白字符(包括換行)作為URLs的分隔符。

      緩沖區(qū)列表

      1B or :buffers

      所有的緩沖區(qū)(標(biāo)簽頁(yè))會(huì)以一個(gè)列表的形式呈現(xiàn):
      1. app tab和一般的tab會(huì)分開顯示。
      2. 帶%標(biāo)記的對(duì)應(yīng)當(dāng)前tab
      3. 帶#標(biāo)記的對(duì)應(yīng)上一次選擇的tab,可以通過<C-^>跳轉(zhuǎn)過去

      Ex命令形式:buffers可以加filter參數(shù),只顯示符合filter條件的緩沖區(qū)。

      【問題??】
      (shift+)tab選中buffer后不能直接對(duì)對(duì)應(yīng)的標(biāo)簽頁(yè)進(jìn)行操作,比如按d刪除,按enter跳轉(zhuǎn)等。

      1b

      這個(gè)快捷鍵也是顯示buffer列表,但是可以通過tab選中跳轉(zhuǎn)到某個(gè)buffer
      如果加數(shù)字前綴修飾,直接跳轉(zhuǎn)到對(duì)應(yīng)位置的標(biāo)簽,比如1b = g0跳轉(zhuǎn)到第一個(gè)標(biāo)簽, 4b跳轉(zhuǎn)到第4個(gè)標(biāo)簽

      最后,還有一個(gè)有意思的功能

      1:pagest[yle] [stylesheet]

      有些站點(diǎn)會(huì)提供多套CSS樣式,通過pagestyle命令可以熱切換
      (本站未提供=_=|||,想試的可以去firefox英文論壇

  • Hints
    脫離了鼠標(biāo),只用鍵盤,那么該如何與網(wǎng)頁(yè)上的可點(diǎn)擊元素交互呢?
    pentadactyl里采用的方案是hints。

    進(jìn)入hints模式后,網(wǎng)頁(yè)上的可點(diǎn)擊元素都會(huì)被高亮,并用數(shù)字或者字母編號(hào)。這時(shí)候輸入對(duì)應(yīng)編號(hào)的字符就可以narrow down高亮元素,當(dāng)能夠唯一定位一個(gè)元素時(shí),即執(zhí)行點(diǎn)擊動(dòng)作。

    默認(rèn)情況下,是用數(shù)字給元素進(jìn)行編號(hào)的。

    • 缺點(diǎn)是:數(shù)字在鍵盤上的分布并不適合方便快速地輸入編號(hào)
    • 優(yōu)點(diǎn)是:定位元素時(shí),不僅可以采用輸入數(shù)字編號(hào),還可以輸入元素上的文字(Follow Hint)

    這個(gè)優(yōu)點(diǎn)只對(duì)英文有效,不過針對(duì)中文有一個(gè)插件 – pinyin-hints-mod.js
    可以通過輸入文字對(duì)應(yīng)的拼音首字母來作為Follow Hint定位元素

    通過配置項(xiàng)hintkeys可以修改編號(hào)時(shí)使用的字符,我個(gè)人習(xí)慣用字母編號(hào)(盡管這樣就不方便使用Follow Hint了)

    1:set hintkeys='asdfjklgheriop'

    如果頁(yè)面上可點(diǎn)擊元素過多,編號(hào)顯示就會(huì)比較密集,看不清楚

    1: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;

    使用這個(gè)樣式可以使編號(hào)更醒目(字體大號(hào)、加粗、大寫 – 輸入時(shí)用小寫就行)

    • Hints有好幾個(gè)子模式:
      1. Quick Hint
      2. f鍵即可進(jìn)入這個(gè)最基本的hint模式。

      3. Shift Quick Hint
      4. 在按f進(jìn)入的hint模式下,唯一定位到一個(gè)元素時(shí)會(huì)自動(dòng)觸發(fā)點(diǎn)擊動(dòng)作,如果元素是鏈接一般是在當(dāng)前頁(yè)面跳轉(zhuǎn)。
        而在按F鍵進(jìn)入的Shift QuickHint模式下,觸發(fā)點(diǎn)擊動(dòng)作時(shí)等效于按著shift鍵點(diǎn)擊,所以針對(duì)鏈接可以實(shí)現(xiàn)在新標(biāo)簽頁(yè)打開。

      5. Extended Hint
      6. 上面兩個(gè)模式會(huì)高亮頁(yè)面上所有的可點(diǎn)擊元素,而且定位元素后直接觸發(fā)點(diǎn)擊動(dòng)作。
        使用擴(kuò)展hint模式,可以更靈活地控制高亮元素的范圍,比如只高亮超鏈、只高亮圖片等;可以控制定位元素后的觸發(fā)動(dòng)作,比如復(fù)制鏈接地址、另存圖片等。

        ;{mode}{hint}
        ;鍵進(jìn)入擴(kuò)展Hint模式后,可以通過再輸入一個(gè)模式字符進(jìn)行進(jìn)一步的控制。

      7. Persisted Extended Hint
        上面幾個(gè)Hint模式,在定位元素觸發(fā)動(dòng)作后即自動(dòng)退出Hint模式。
        而持久的擴(kuò)展Hint模式,在觸發(fā)動(dòng)作后仍然保持在Hint模式,因而可以實(shí)現(xiàn)連續(xù)打開一組鏈接這樣的需求。

        要進(jìn)入持久的擴(kuò)展Hint模式,只需在一般的擴(kuò)展模式前多按一個(gè)g鍵。
        g;{mode}{hint}

      8. Caret Hint
      9. 使用Caret Hint可以通過hint的方式來快速移動(dòng)caret光標(biāo),方便caret定位以及文字選擇。
        pentadactyl本身沒有內(nèi)置Caret Hint,但是有個(gè)plugin可以實(shí)現(xiàn)。
        目前我使用harnack的簡(jiǎn)化版本
        操作命令如下:

        1;m - 移動(dòng)Caret到選中hint元素的文字頭
        2;M - 移動(dòng)Caret到選中hint元素的文字尾
        3;e - 選中hint元素文字
    • 相關(guān)配置項(xiàng)
      • hintinputs
      • hintkeys
      • 定義用于給hint元素編號(hào)的字符集

      • hintmatching
      • hinttags
      • 設(shè)置hint元素的選擇規(guī)則。
        支持css selector和xpath(以xpath:打頭表示)兩種語(yǔ)法

      • extendedhinttags
      • 設(shè)置擴(kuò)展hint模式下元素的選擇規(guī)則。
        可以針對(duì)不同模式設(shè)置選擇規(guī)則,優(yōu)先級(jí)比hinttags的設(shè)置高

        1[f]:body
      • hinttimeout
      • 設(shè)置hint自動(dòng)觸發(fā)時(shí)間(單位ms,默認(rèn)值0)
        值為0時(shí),只有選中hint元素回車確認(rèn)或者能夠唯一定位一個(gè)hint元素時(shí)才會(huì)觸發(fā)動(dòng)作。
        如果設(shè)置了正值,只要按了hintkeys中的按鍵,就開始計(jì)時(shí),當(dāng)hinttimeout時(shí)間過后,即使仍有多個(gè)hint元素待選,也會(huì)自動(dòng)觸發(fā)。

  • options設(shè)置
    • passkeys
    • 由于Pentadactyl全面接管了快捷鍵,對(duì)于重度依賴快捷鍵操作的站點(diǎn)(比如google的眾多服務(wù))來說,會(huì)存在很大的問題。
      通過passkeys這個(gè)配置項(xiàng),可以針對(duì)URL來設(shè)置哪些鍵不由pentadactyl處理,而直接傳遞給firefox。

      1:set passkeys=www\.google\.com/reader/:jkovA

      這個(gè)示例設(shè)置是針對(duì)我常訪問的google reader的,直接傳遞jkovA這幾個(gè)常用的快捷鍵。
      語(yǔ)法是這樣的:

      1URL部分采用正則表達(dá)式用來指定站點(diǎn)(注意,由于是正則表達(dá)式,所以regex的元字符要轉(zhuǎn)義),如果有冒號(hào)需要用引號(hào)括起
      2冒號(hào)(:)
      3需要傳遞的鍵(序列)以逗號(hào)(,)分隔。如果是單鍵不需要用逗號(hào)分隔,集中放在第一個(gè)逗號(hào)之前;如果是多個(gè)鍵組成的序列,放在第一個(gè)逗號(hào)之后,多個(gè)的話以逗號(hào)分隔。
      4針對(duì)不同URL的設(shè)置用逗號(hào)(,)分隔

      其實(shí),passkeys的值類型從1.0b6版本已經(jīng)由regexpmap更改為sitemap,完整的定義是這樣的

      1{Site Filters}:{Passed Keys},{Site Filters}:{Passed Keys}

      通過查看幫助,可以看到用Site Filters表達(dá)URLs有4種方法

      1:help site-filter
      1. domain
      2. 通過域名這種方式可以匹配該域名及其子域名下的所有站點(diǎn)。
        比如baidu.com,twitter.com

      3. URL prefix
      4. 一個(gè)“URL前綴”表示有兩點(diǎn)要求,1要以協(xié)議名開頭,比如http,https;2要以*號(hào)結(jié)尾。比如

        1http://www.google.com/reader/*

        這樣一個(gè)URL prefix可以匹配所有以此開頭的URLs
        注意事項(xiàng):

        • 因?yàn)閰f(xié)議名后的:號(hào)與{Site Filters}:{Passed Keys}中的:號(hào)沖突,所以URL prefix需要用引號(hào)括起
        • 使用命令行設(shè)置的URL prefix形式的passkeys,不能通過:mkpentadactyl!保存到rc文件中,因?yàn)楸4鏁r(shí)引號(hào)會(huì)被自動(dòng)刪掉(bug?),重新source rc后該passkeys就不再工作。所以使用URL prefix要么直接手寫到rc文件中,要么只能臨時(shí)生效。
      5. Full URL
      6. 以協(xié)議名開始而不以*結(jié)尾的URL就是一個(gè)完整的URL,只匹配這個(gè)完整的URL

      7. Regular expression
      8. 不是上述三種情況的時(shí)候都理解成正則表達(dá)式,正則表達(dá)式要注意轉(zhuǎn)義,否則不能工作。
        另外要注意,因?yàn)榻馕龅臅r(shí)候優(yōu)先按照前三種來,所以有時(shí)候直接寫正則表達(dá)式可能會(huì)不工作。
        比如,這個(gè)針對(duì)google reader的正則表達(dá)式

        1'http://www\.google\.com/reader/.*'

        就不工作,原因是由于以協(xié)議名打頭,所以它被理解成full URL。
        寫成下面的就可以

        1www\.google\.com/reader/.*

        所以用正則表達(dá)式來做passkeys要格外注意這種情況。

        {Passed Keys}部分前面已經(jīng)說過了,是以逗號(hào)分隔的鍵(序列)。

        • 所有的單鍵寫在一起,放在第一個(gè)逗號(hào)之前
        • 多個(gè)鍵組成的鍵序列,放在第一個(gè)逗號(hào)之后,并且鍵序列之間用逗號(hào)分隔

        針對(duì)多個(gè)站點(diǎn)的passkeys設(shè)置{Site Filters}:{Passed Keys}再以逗號(hào)分隔或者通過

        1:set passkeys+=

        追加。

  • UI設(shè)置
    • guioptions
    • 通過該配置項(xiàng)可以控制firefox的GUI顯示,可以簡(jiǎn)寫成go
      go的值是一個(gè)字符列表,每個(gè)字符對(duì)應(yīng)一個(gè)可控GUI元素,包含在go中的會(huì)顯示出來。
      通過命令操作:

      1:set go+=x      讓x對(duì)應(yīng)的GUI元素顯示出來
      2:set go-=x      讓x對(duì)應(yīng)的GUI元素不顯示
      3:set go=abc    只顯示a,b,c對(duì)應(yīng)的GUI元素

      目前支持控制的所有GUI元素


      其中

      • T對(duì)應(yīng)Toolbar,實(shí)際上就是我們熟悉的導(dǎo)航欄。
      • 大C只在狀態(tài)欄顯示(即go中包含s)的情況下有效。
      • 有大C時(shí),用:呼出的命令行會(huì)單獨(dú)有一行;否則的話,命令行集成在狀態(tài)欄里

      • 小c控制是否始終顯示命令行
      • 如果設(shè)置了的話,即使沒有敲ex命令,也會(huì)有一行空白的命令行顯示
        如果有狀態(tài)欄s,小c最好和大C一起設(shè)置,否則命令行還是集成在狀態(tài)欄里,ex命令不會(huì)顯示在新加的單獨(dú)命令行里,新加的這行只顯示 — EX — 這種信息。

      • M用來控制是否用獨(dú)立行顯示提示信息,比如Please ENTER or type command to continue這種,一般是顯示在狀態(tài)欄的
      • 顯示標(biāo)簽編號(hào),n是在site icon后顯示,N是在icon上,建議用n,N會(huì)遮蓋圖標(biāo)
    • 狀態(tài)欄
    • 通過命令

      1:set go+=s

      可以開啟狀態(tài)欄顯示。

      狀態(tài)欄會(huì)顯示如下信息:

      • 當(dāng)前頁(yè)面URL,另外也可以顯示鼠標(biāo)所懸停的頁(yè)面上鏈接信息
      • [+-??]
      • +代表當(dāng)前頁(yè)面有后退歷史,可以用H鍵后退
        -代表當(dāng)前頁(yè)面有前進(jìn)歷史,可以用L鍵前進(jìn)
        代表當(dāng)前頁(yè)面已經(jīng)存為書簽
        其他字符代表有對(duì)應(yīng)的QuickMark

        通過下面這個(gè)plugin可以把這組符號(hào)信息挪到URL之前,看起來更直觀。
        urlFieldTweak.js

      • 標(biāo)簽位置索引
      • [N/M] N對(duì)應(yīng)當(dāng)前標(biāo)簽的序號(hào),M對(duì)應(yīng)所有標(biāo)簽的總數(shù)

      • 當(dāng)前位置在頁(yè)面縱向scroll的百分比
      • 當(dāng)前頁(yè)面的水平和垂直方向的最大像素
      • [x=N,y=M] N代表水平方向,M代表豎直方向,單位像素
        這個(gè)需要plugin – pageScrollInfo.js

      • 當(dāng)前頁(yè)面放大縮小的百分比
      • 100%大小時(shí)不顯示

      狀態(tài)欄的顏色可以用于查看站點(diǎn)的安全信息

    • 命令行訪問GUI
    • 通過下面這些ex命令,可以直接訪問firefox 的GUI

      1:emenu {menu} 打開菜單
      2:dia[log] [Firefox-dialog] 打開firefox的各種對(duì)話框
      3:downl[oads] 顯示下載相關(guān)信息
      4:toolbarshow {name} 顯示toolbar
      5:toolbarhide {name}
      6:toolbartoggle {name}
  • plugins插件
    • 插件存放
      1. 插件應(yīng)該存放在名為plugins的文件夾下
      2. pentadactyl會(huì)從配置項(xiàng)runtimepath定義的文件夾中查找plugins子文件夾
      3. 可以有多個(gè)plugins文件夾
      4. runtimepath默認(rèn)值是$PENTADACTYL_RUNTIME,如果沒設(shè)置,windows系統(tǒng)下則是$HOME/pentadactyl,其他系統(tǒng)下是($HOME/.pentadactyl)
      5. 所以,在windows下,默認(rèn)情況插件應(yīng)該放在$HOME/pentadactyl/plugins文件夾里。

      6. 我準(zhǔn)備把plugins放到profile文件夾下,因此需要將profile加到runtimepath中,由于已在啟動(dòng)參數(shù)設(shè)置$HOME為profile,所以
      7. 1set runtimepath+=$HOME
    • 插件加載
      1. 根據(jù)上述查找方式找到的所有plugins文件夾里的腳本文件會(huì)被加載
      2. 腳本文件通過配置項(xiàng)loadplugins來控制識(shí)別,默認(rèn)是以.js和.penta結(jié)尾的文件
      3. 設(shè)置配置項(xiàng)noloadplugins可以關(guān)閉所有腳本的加載,但是最新每夜版(hg6126)無此參數(shù),不過可以通過設(shè)置loadplugins達(dá)到同樣的目的
      4. 1set loadplugins=''
      5. 設(shè)置如下啟動(dòng)參數(shù)(++noplugin或者+u=NONE),同樣可以關(guān)閉腳本加載。具體請(qǐng)查看幫助
      6. 1:help startup-options
    • 插件推薦
      1. goo.gl
      2. 集成google短地址服務(wù)

    • 相關(guān)資料和站點(diǎn)
      1. 團(tuán)子的小窩 – Vimperator新手教程
      2. 團(tuán)子的小窩 – Vimperator[Pentadactyl]小技巧
      3. Mozest論壇討論帖 – Dactyl[Vimperator分枝]一些使用經(jīng)驗(yàn),期待交流

    related post

    (31,640 views)

    Filed under:
    firefox by admin

  • 本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
    打開APP,閱讀全文并永久保存 查看更多類似文章
    猜你喜歡
    類似文章
    五指操控Firefox的「仿Vim」擴(kuò)充套件: Vimperator/Pentadacty...
    Pentadactyl使用技巧
    體驗(yàn)vimperator
    VIM 實(shí)現(xiàn)tab標(biāo)簽頁(yè)及分屏,切換命令
    vim替換^M字符
    使用瀏覽器的原生功能有多爽?
    更多類似文章 >>
    生活服務(wù)
    熱點(diǎn)新聞
    分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
    綁定賬號(hào)成功
    后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
    如果VIP功能使用有故障,
    可點(diǎn)擊這里聯(lián)系客服!

    聯(lián)系客服