我要啦免费统计
  • .vimperatorrc - [历久常新]

    2009-03-22

    " 这篇日志将持续更新,2009/03/22
    " 关于vimperator的入门简介可见我的另一篇日志
    " 1.2 (created: 2008/08/16 18:51:52)
    " Mappings
    " 先把麻烦的东西拿掉
    map A <Nop>
    map <C-q> <Nop>
    map <C-o> <Nop>
    map <C-i> <Nop>
    map <C-z> <Nop>
    map <C-p> <Nop>
    " 再把页面浏览、标签页跳转和历史跳转绑定到顺手的地方,右手万岁!
    noremap j 2j
    noremap k 2k
    noremap J <C-d>
    noremap K <C-u>
    noremap h gT
    noremap l gt
    noremap H h
    noremap L l
    map < <C-6>
    noremap > g$
    noremap , <C-o>
    noremap . <C-i>
    map U :ju<CR>
    map <C-.> :tabm<CR>
    " 想办法再减少按键频率
    noremap g gg
    noremap s <C-c>
    noremap S gf
    noremap <C-n> gb
    noremap <C-N> gB
    noremap " gn
    noremap ] ]]
    noremap [ [[
    " 解决全选、复制、粘帖、剪切和撤销与vimperator冲突的问题
    noremap <C-V> <C-v>
    noremap <C-Z> <C-z>
    noremap <C-c> <C-v><C-c>
    noremap <C-a> <C-v><C-a>
    cnoremap <C-c> <C-v><C-c>
    cnoremap <C-v> <C-v><C-v>
    cnoremap <C-x> <C-v><C-x>
    inoremap <C-a> <C-v><C-a>
    inoremap <C-c> <C-v><C-c>
    inoremap <C-v> <C-v><C-v>
    inoremap <C-x> <C-v><C-x>
    inoremap <C-z> <C-v><C-z>
    inoremap <C-y> <C-v><C-y>
    " 还原我的书签栏和下载对话框快捷键
    noremap <C-b> <C-v><C-b>
    noremap <C-y> <C-v><C-y>
    " 还原 ctrl-k 跳到搜索栏的快捷键
    noremap <C-k> <C-v><A-d><Tab>
    " 装了dictd后,用F12轻松查单词,grep是用来去除空行的。<F12>查光标焦点所在的单词,<S-F12>查选中的单词
    map <F12> ibvey<Esc><Esc>:!dict <C-v>|grep -v ^$<CR>
    map <S-F12> Y:!dict <C-v>|grep -v ^$<CR>
    " 以下两个没有成功,原因估计是:frcn是 ~/bin 里的脚本,vimperator没读到;vimperator传中文字符“朗道英汉字典”时出问题
    " map <C-F12> Y:!frcn <C-v>|grep -v ^$<CR>
    " map <M-F12> Y:!sdcv -u "朗道英汉字典5.0" <C-v>|fgrep *[<CR>

    " Options
    set guioptions=mT
    set titlestring=Mozilla Firefox
    set popups=2
    set complete=lfbs
    " 齐全的next和previous……需要注意我在 \bnext\b 前加了一个 ^\bnext\b ,因为比如在SciAm网站,经常match到右上角的“What's next”栏目,而不是文章下方的next链接。先match前缀可以解决这个问题。又,suivant和précédent是法语
    set nextpattern=\s*下一页|下一张|下一篇|下一頁|下页|后页\s*,^\bnext\b,\bnext\b,\bsuivant\b,^>$,^(>>|››|»)$,^(>|»),(>|»)$,\bmore\b
    set previouspattern=\s*上一页|上一张|上一篇|上一頁|上页|前页\s*,^\bprev|previous\b,\bprev|previous\b,\bprécédent\b,^<$,^(<<|‹‹|«)$,^(<|«),(<|«)$

    " PassThrough gmail and greader
    autocmd LocationChange .* js modes.passAllKeys = /.*(mail\.google\.com|www\.google\.com\/reader).*/.test(buffer.URL)

    " Another solution,用的是feedmap插件,木有成功
    " :autocmd LocationChange .* :feedmapclear
    " :autocmd LocationChange ^https?://www\\.google\\.com/reader :feedmap! -vkey j k m s t v A u / ?
    " autocmd LocationChange .* :fmapc
    " autocmd LocationChange mail\\.google\\.com/mail :fmap -depth 4 c / j k n p o u e x s r a # [ ] z ? gi gs gt gd ga gc
    " autocmd LocationChange .* :fmapc
    " autocmd LocationChange www\\.google\\.com/reader :fmap! -vkey j k n p m s t v A r S N P X O gh ga gs gt gu u / ?
    " autocmd LocationChange .* :fmapc
    " autocmd LocationChange '^https?://www\.google\.com/calendar/' :fmap! -vkey -event keydown t a d w m x c e <Del> / + q s ?

    " Abbreviations
    " 连按两下:比按:!(居然还要换shift!)要爽
    cabbrev : !

    " Commands
    " noimg可以减少流量,nojs用于调控一些不听话的网页
    command noimg set! permissions.default.image=2
    command ysimg set! permissions.default.image=1
    command nojs set! javascript.enabled=false
    command ysjs set! javascript.enabled=true

    source! ~/_vimperatorrc.local
    source ~/.vimperator/plugin/feedsomeKeys_2.js
    source ~/.vimperator/plugin/toggler.js

    " vim: set ft=vimperator:

  • 应该说,Vimperator是一个刚出道而且想法不错的Firefox插件。它把vim的很多操作移植到了Firefox上,对于我这个接触vim不久的人来说很有新鲜感。

    简单来说,它使得Firefox成为一个有不同“模式”的浏览器,用户可以更容易地获取对浏览器的全盘控制,更快速地利用键盘而不是鼠标做你想做的事,但随之而来的就是不要按错键的问题。

    你有没有想过为什么键盘上有104个键(台式机)或者87个键(笔记本),然而只有在打字的时候才能物尽其用,而控制(比如说)Firefox的时候还得同时按两个键(Ctrl,Alt,Shift...)。更多的击键次数却换不来更高的操作速度,这不是很令人郁闷的吗?

    Vimperator首先就把用户的手重新从鼠标上、水杯旁、下巴上拉回到了键盘打字的准备位置,因为正如vim所做的一样,h-j-k-l的移动方式才是更直接而迅速的。当你的焦点不是在地址栏、搜索栏、命令栏、输入框等等的地方(换句话说,在普通模式下)时,h用于左移,j用于下移,k用于上移,l用于右移。老实说,我是通过google reader第一次听说这种控制方式(并且熟练),后来才知道是vi的经典键位的。

    这样子和直接用上下左右四个箭头有区别吗?有的。如果你按 20j,Firefox将下移20个单位。利用数字配合命令来控制命令的重复次数,是vim的一大特色。当然不断按20j来翻页显然并不合算,PageUp和PageDown好用多了,但是PgUp和PgDn不在手的旁边,怎么办?Vimperator给了我们Ctrl+u和Ctrl+d可以用,分别用于Up半页和Down半页。可是老实说,这键也好按不到哪里去。没关系,我们可以做键盘映射,把它们映射到J和K(Shift+..)上面。只需键入

    :map J <C-d> (回车)
    :map K <C-u> (回车)

    这里出现了vim的万能冒号,它的出现代表进入control模式,我们开始给Firefox下命令,而使用Esc键退出control模式。内容很明显,把J/K给map成Ctrl-d/Ctrl-u。我还会map这个:

    :map H gT (回车)
    :map L gt (回车)

    h和l不是左右移动吗?H和L其实也已经有后退和前进的功能了,那这gt和gT……则是转换标签页,对于我来说要比前者常用一些。gt表示下一个标签页,gT表示上一个标签页。这样利用Shift+h/l,也就自然懒得用鼠标移过去点击了,以前用开的Ctrl+PgUp/PgDn也显得稍稍不顺手了。但鼠标滚轮和垂直滚动条难道就不能打败h-j-k-l移动吗?网页一长,用J和K也不是办法,用数字配合J/K也往往很难掌握数字的尺度,这时用gg是最合适的了。普通的gg只是相当于Home,回到页顶;普通的G也只是相当于End,转到页末。一旦配上数字,20gg就表示页面20%的地方,如果你浏览网页的时候注意到下方的xx%,那么在长文章里到处跳转也只是一眨眼的事,要是遇上一大篇文字,垂直滚动条也还不是要败下阵来?

    这样说来,3gt和3gT也有类似效果啰?注意,3gT确实是往前滚三个标签页,但是3gt表示的却是第三个标签页。当然有时候这也很有用,如果你注意到网页下方的[x/yy]的话,进行标签页跳转也是瞬间的事。再加上g0,跳至第一个标签页;g$,跳至最后一个标签页;Ctrl+6,跳至上一个标签页,用户也就更加得心应手了。

    说了这么多,倒也还没点过链接,难道Vimperator有这么大的败笔?当然不是,只需按f,所有可见的链接都会变成底色黄色,同时出现数字提示,键入数字就点了链接,但是要把1从10、11、12中区分开,要按1回车。这还是不方便啊,然而你可以按了f之后试着键入你要点的链接的前几个字母,顿时可以选择的项目少了很多,这功能倒是方便了英文链接而对中文链接无益。要是你发现,哎呀错了,要在新标签页中打开,哎呀怎么后退?除了之前说的H/L来后退/前进之外,还可以用Ctrl+o来后退,用Ctrl+i来前进,前面配上数字也是可以的哦。而要在新标签页打开,你只需按F(Shift+f)而不是f,类似。

    希望你还只是一路看下来,没找来装,否则很可能会被Vimperatorized的Firefox的全新面孔吓怕:没有菜单栏、没有地址栏、没有书签栏,底部多了黑色和白色的两行东西。其实你可以很容易把menubar、navigation bar、bookmark bar找回来,还是万能冒号

    :set go+=mTb (回车)

    这样一来,go(GUIoptions的简写)参数里就多了mTb三项(+=是C的风格哈)。有什么不懂,万能冒号会用 :help 帮你解答,比如 :help d 。d是一个简洁而常用的命令,关闭当前标签页,你不需要用鼠标找那个小红叉了,也不需要用Ctrl+w了。数字配合d也非常贴心,可以关闭从这个标签页往后算起的若干个标签页。关错了,Vimperator还提供了u一键undo。同样是一键,r键可以refresh,/键可以开始全文搜索。Vimperator的默认是增量搜索,也就是你键入关键词的同时Firefox已经开始把搜索结果展示给你,回车之后文中符合的字眼都会有黄色底色,只需一键n即可跳到下一个搜到关键词的地方,N则是上一个。想去除黄色高亮了?只需用万能冒号

    :set nohls (回车)

    nohls代表no highlight search,就这么简单。

    然而怎样打开网页呢?为何还没讲到?那是因为连我都觉得Vimperator的方式糟蹋了Firefox的Awesome Bar。o键可以把你带到命令栏 :open 的后面,键入url地址即可打开该网页;t键可以把你带到命令栏 :tabopen 的后面,键入url地址即可在新标签页内打开该网页。虽然这里默认也有智能匹配功能,比如 :open xiaonei(Tab键)会出现一个网址列表,然后使用Tab和Shift+Tab选择,回车打开,但比起Firefox本身的地址栏还是稍逊一筹。唯一值得赞赏的是,你可以在此键入关键词,调用搜索引擎(默认google)打开新标签页或本页内搜索。这就省下了Ctrl+t,Ctrl+k,键入关键词,回车的功夫,也便于看着当前页面的文字来斟酌关键字。更加人性化的是,如果你设好了搜索引擎的关键字(点击搜索引擎栏的标签->管理搜索引擎,第二栏便是),那么调用各种引擎来搜索也方便多了,比如我会用

    :tabopen wkcn 过冷液体
    :tabopen wken supercooling
    :tabopen wkfr surfusion

    来打开同一个现象的中文、英文、法文维基百科(很遗憾,中文没有这个词条……),反正比起以前Ctrl+t, Ctrl+k, Ctrl+↓(选择搜索引擎)是快多了。

    与此相关的还有另一个更有用(但是平时容易按错键)的p键,作用是把剪贴板中的内容直接当成url地址或者搜索关键字在当前页打开,要想在新标签页中打开,使用P键即可。对于不习惯vim操作的人来说,这时一个大问题出现了:用惯的Ctrl+c, Ctrl+v和Vimperator冲突,vim的Yank对新手还是很陌生。Vimperator说Ctrl+c是用来停止页面加载的(vim的ctrl+c也好像是用来中断所有未完成的操作的),说Ctrl+v是用来pass through一个键的(也就是下一个按键将会由Firefox自己处理),类似的还有Ctrl+z是进入pass through模式(Vimperator不再对你的按键其反应,除非用Esc退出此模式)。简单来说,要让Vimperator“放过”Ctrl+C,给Firefox收到,连续按Ctrl+v, Ctrl+c即可。当然聪明人都不这么干,而是

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

    为什么是noremap而不是map?因为要是Vimperator把后面的Ctrl+c又换成Ctrl+v, Ctrl+c,如此下去岂不永无终止?我已经亲身试过这个导致Firefox崩溃的死循环了……这样还不够

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

    这才可以在control模式(键入命令的时候)和insert模式(在文本框里的时候)下恢复Ctrl+c的使用。对于Ctrl+v同理。可这样子,Esc已经被用来返回普通模式,总得有个键停止页面载入吧?你自己找个键来map就行了。再仔细一想,难道用Vimperator的人都从来不用复制粘贴?非也,只是vim把它叫做yank(召回)而已,Y键(Shift+y)就可以把选中的文字放入剪贴板,方便p键paste。但是且慢,我们可以不用鼠标来反白选择文字吗?是可以的,因为有caret模式。按 i 键,效果等同于F7,网页中会出现一个光标,接受我们的h-j-k-l等等移动的命令。这时再按 v 键,就进入visual模式,再移动光标就开始选择文字了。离开caret模式可以用Esc或者F7。

    在结束这篇文章之前,要讲的至少还有buffer,其实也就是Vimperator对于标签页的另一个叫法,来源于vim对于多文件操作的称呼。键入B,你得到的是现在所有标签页的标题和地址,带有%记号的是当前标签页,有#记号的是上一个标签页。键入b,你便会出现在命令栏 :buffer! 的后面,你可以通过键入标题或url中的文字到达某一个标签页,比如用 :buffer! xiaonei 来回到已经打开的校内主页。如果Vimperator没找对(比如说有几页符合要求),你还可以通过gb跳到下一个满足条件的标签页。

    同样很好用的命令还有gi,跳到上次使用的文本框中,这功能可以方便搜索时修改、调整关键词。gf用来查看源代码。还有智能的]]和[[,Vimperator会寻找页面中形如next、>>、previous、<<的链接,从而实现转到下一页或者上一页的功能,不过Vimperator本身不认识中文,需要调整一下参数

    :set nextpattern=\s*下一页|下一张|下页\s*,\bnext\b,^>$,^(>>|»)$,^(>|»),(>|»)$,\bmore\b
    :set previouspattern=\s*上一页|上一张|上页\s*,\bprev|previous\b,^<$,^(<<|«)$,^(<|«),(<|«)$

    试用完了Vimperator,怎么用键盘关Firefox呢?和vim一样,ZZ表示记住现在打开的页面并关闭Firefox,ZQ表示不记住现在打开的页面并关闭。可是先别关,要先把刚刚做的set和map等设置存好。使用 :mkv 可以在$HOME目录下生成配置文件 .vimperatorrc 或者 _vimperatorrc,Unix和Mac的用户应该很熟悉$HOME目录了,Windows的$HOME目录一般应该是C:\Documents and Settings\Username\ 。有时为了更方便地管理配置文件,你可以建立一个环境变量$VIMPERATOR_HOME,写上你常用的文件夹,再把配置文件移过来。$VIMPERATOR_HOME的优先级比$HOME高,但是据说2.0版以后的Vimperator不会再用这个环境变量。如果你像我这样使用xp/ubuntu双系统,又希望两边的Vimperator使用同一个配置文件,一个方法是在ubuntu底下建立一个指向xp的配置文件的软链接,如:

    user@localhost:~$ ln -s /media/sdaN/Documents/_vimperatorrc

    你生成配置文件之后,还可以自己修改,我的配置文件是这样的:
    (注:新的、与时俱进的.vimperatorrc文件见这篇日志)

    " 1.2 (created: 2008/08/16 18:51:52)
    " Mappings
    map A <Nop>
    map <C-o> <Nop>
    map <C-i> <Nop>
    map J <C-d>
    noremap K <C-u>
    map H gT
    map L gt
    noremap j 3j
    noremap k 3k
    noremap I <C-o>
    noremap O <C-i>
    noremap <C-u> <C-v><C-u>
    noremap <C-s> <C-c>
    noremap <C-c> <C-v><C-c>
    noremap <C-a> <C-v><C-a>
    cnoremap <C-c> <C-v><C-c>
    cnoremap <C-v> <C-v><C-v>
    cnoremap <C-x> <C-v><C-x>
    inoremap <C-a> <C-v><C-a>
    inoremap <C-c> <C-v><C-c>
    inoremap <C-v> <C-v><C-v>
    inoremap <C-x> <C-v><C-x>
    inoremap <C-z> <C-v><C-z>
    inoremap <C-y> <C-v><C-y>

    " Options
    set guioptions=mT
    set titlestring=Mozilla Firefox
    set popups=2
    set nextpattern=\s*下一页|下一张|下页\s*,\bnext\b,^>$,^(>>|››|»)$,^(>|»),(>|»)$,\bmore\b
    set previouspattern=\s*上一页|上一张|上页\s*,\bprev|previous\b,^<$,^(<<|‹‹|«)$,^(<|«),(<|«)$

    " PassThrough gmail and greader
    autocmd LocationChange .* js modes.passAllKeys = /.*(mail\.google\.com|www\.google\.com\/reader).*/.test(buffer.URL)

    " Abbreviations

    " Commands
    command noimg set! permissions.default.image=2
    command ysimg set! permissions.default.image=1
    command nojs set! javascript.enabled=false
    command ysjs set! javascript.enabled=true

    source! ~/_vimperatorrc.local

    " vim: set ft=vimperator:

    这里的map用了<Nop>,作用就是废了那个按键。PassThrough gmail and greader 则有这样的效果:每当到达gmail/greader的页面时自动进入PassThrough模式,从而让gmail/greader捕捉到快捷键而不是给Vimperator拦截下来。这里使用了autocommand功能,每当LocationChange事件发生,当时的url满足正则表达式 .* (即无论任何网址)时,调用javascript更改参数modes.passAllKeys,将其赋值为真/假,依据是用后面这个正则表达式来测试buffer.URL变量。这里的javascript怎么来的呢?没错,你可以试试

    :js alert("test")

    你还可以使用 :! 来调用命令行,比如(以对此相对陌生的Windows用户为例)

    :! mspaint
    :! ping 127.0.0.1

    我的配置文件使用的command是Vimperator的自定义命令的功能,分别定义了noimg命令和ysimg命令。如果你知道 :set! 是用来修改Firefox本身设置(见about:config)的话,这两个命令的作用就呼之欲出了:执行 :noimg 和 :ysimg 分别可以命令Firefox打开网页时是否载入图片。旧版本的Firefox应该调整 network.image.imageBehavior 而不是 permissions.default.image ,而且值应该是1和0。在这方面,Vimperator本身带有一个更彻底的禁用花哨CSS的参数,执行

    :set um

    可以进入usermode,相当于 查看->页面风格->无风格 的效果,仅仅是键盘操作比较快的优势。退出usermode只需 :set noum

    此外,Vimperator还能在control模式zoom in, zoom out,能够利用QuickMarks快速跳转标签页,能够录制键盘宏(Macro),当然还有相对基本的链接另存为、复制链接地址、复制链接文字等等不同于f的功能。

    至于文中所提到的 noimg, ysimg, nojs, ysjs 几个autocmd,本来我的目的是用一个键(如F12等)来toggle,但技术不精,没能做到,主要是除了set!我不知道还有什么方法更改firefox preferences。

    这篇文章到此为止,可以说是我认识Vimperator的心得吧。

  • TiddlyWiki是一个好用、简易的个人、本地wiki系统,我也用了有些时日了。以下我来稍稍介绍一下。

    什么是wiki?


    中文维基百科上是这么介绍的:

    Wiki是一种在网络上开放、可供多人协同创作的超文本系统 
    一种允许一群用户通过简单的标记语言来创建和连接一组网页的社会计算系统  维基娘_wiki_is_not_abbreviation_of_wikipedia

    注意:wiki和维基百科并不是同一样东西。准确来说,维基百科wikipedia是利用wiki系统建造的百科。 

    按照我个人的理解,wiki主要特点有:

    • 开放修改权限,共同协作
    • 快速创建超文本网页,链接、媒体、格式完善
    • 容易组织成知识网络,词条间用丰富的链接互相联系

    简单来说,wiki系统很像是电子化的一本有深度的教科书或者是超强的笔记。

     

    为什么找 TiddlyWiki?


    我想要这么一个系统,在某些方面代替现在的“草稿纸.txt”(没错,这个草稿纸里面啥都有,从林鸿州的每日一题到Youtube链接到某些东西的密码到买双筒望远镜的心得再到科幻小说点子),至少需要把一些有用的知识系统地归纳起来,而不是在草稿纸上线性排列,要搜索的时候也不要什么乱七八糟的都出来。

    其次有很多东西使用图片或者表格可以一X胜千言,草稿纸.txt就无能为力。很多时候草稿纸上只有一行url,并不是说内容不重要,而是复制下来太占位置了,另外存成一个txt吧,又已经有大量txt杂乱地放在那里。如果说用文件夹来分类吧,这大大小小的文件夹何时了?

    归根结底还是需要一个有层次储存数据的系统,它必须是本地的,而不是像维基百科一样大费周章放在服务器上,再通过访问服务器来交互。

    TiddlyWiki可以做到这点。

    它的主站说:

    (功能描述)a reusable non-linear personal web notebook
    (技术描述)a single html file which has all the characteristics of a wiki - including all of the content, the functionality (including editing, saving, tagging and searching) and the style sheet

    它继承了“草稿纸.txt”的思想:一个文件——编码可读的文件——完成所有工作。在草稿纸的基础上,它加了一个“外壳”,提供“非线性展示”的外表和基于“数据与外壳分离”思想的CSS处理和插件处理系统。再者,它所用的技术并不复杂,通篇javascript,这就方便了必要时候“自己动手丰衣足食”。

     

    TiddlyWiki 看起来是怎样的?


    这样子

    在打开了几个词条后,是这样子的:

    词条内带有指向另一个词条的超链接。还有继承自wiki的丰富的格式及其简易的表达,很容易上手。

    里面如果有图片显示公式就更好了,我在另一篇日志里探讨了怎样做到这个效果:

    点击右上角编辑即可看到:

    这也是极其简洁的表达,使用了LaTeX。点击右上角完成便可保存词条。

     

    TiddlyWiki 下载及资源


    先找来玩玩,再继续看下去吧。

    TiddlyWiki的网站本身就是一个TiddlyWiki的范例。看到那个大大的Download了吗?点击就可以下载英文原版的TiddlyWiki空文件。想要中文版,点左边的Features,向下滚到Miscellaneous段,第四行它说TiddlyWiki已经被翻译成二十多种语言,点一点translations它会打开一个新的词条,给你一个链接,然后你再找啊找,才会最终找到这个链接(右键另存为)。

    是从TiddlyWiki华语支持论坛找来的,如果链接失效可以自己过去拿。zip文件里面由三个文件,后面有-Hans的是简体中文版,-Hant的是繁体/正体中文版,那个jar文件是为可怜的Safari和Opera用户准备的,以便调用外部java来修改html文件自身。如果你用的是Firefox,我可以以自己的经验保证,效果很流畅很令人满意。

    如果想要好好了解TiddlyWiki,除了去TiddlyWiki主页、华语支持论坛之外,还有这个TiddlyWiki简介这个真正的MediaWiki系统这个中文TiddlyWiki教学页面可去。如果你上手后,现在技术层面再加深入,这几个macro站点都很不错:LewcidTiddlyVaultMonkeyPirate

    如果你想在网上发布,去TiddlySpot建一个基于TW的站点也很不错,又或者选择googlepages,就像我随手放上去的这个样子

     

    如何使用?


    我不会从头到尾很详尽地解释如何使用每个功能,因为作为“草稿纸.txt”的替代品,本来就不应该花太多时间。在大家对此感兴趣之后,应该把它最精华最优势的部分解释完,就适可而止了。

    TiddlyWiki的词条称为Tiddler。我假设一般人三下两下就明白怎样创建Tiddler,保存和删除了。有哪些Tiddler要先改成自己需要的样子呢?像MainMenuGettingStartedSiteTitleSiteSubtitleStyleSheet之类的。除了在起始页面,如何找到这些Tiddler呢?请看右下角的更多->默认文章,你所看到的就是了。如果看右下角分类systemConfig标签,你会看到你所安装的plugin的Tiddler。没错,TW里很多设置啊CSS啊,plugin啊,macro啊都是以Tiddler的形式出现的。安装plugin的过程其实也就是新建一个Tiddler,把代码复制进去,加上systemConfig的Tag,保存重启TW(也就是关了页面重开)这么简单。

    如果想按照自己的想法改变一个Tiddler显示那些部分而不显示其它的,你可以修改Tiddler ViewTemplate。第一行的 [[ToolbarCommands::ViewToolbar]] 正说明了它调用了Tiddler ToolbarCommands 的内容,其实这也就控制了一个Tiddler右上角显示的按钮。

    此外,你注意到右上角的控制台了吗?在这里,你可以利用导入来安装plugins或macros,其实也就是把plugins源的网址填进去,并选择需要导入的Tiddler。添加Tiddler = 安装plugin。你还可以管理插件和对已安装的插件和服务器进行同步。当然还有让一些人热血沸腾的进阶选项

    至于怎么编写Tiddler,你觉得我会讲解这么没技术含量,而且在我上面介绍的TiddlyWiki教学/简介页面都可以看到的内容吗?好吧好吧,我就说这么几句。把下面这个复制进一个Tiddler,你会看到效果,立马明白。

    ''粗体字''  --删除线--  __下划线__  //斜体字//  ^^上标^^  ~~下标~~ @@color(red):文字颜色@@  @@bgcolor(yellow):文字底色@@
    [[NewTiddler]]  [[显示文字|实际Tiddler]]  ~ThisIsNotATiddler
    [[超链接]]  [[显示文字|实际链接]]  [img[显示文字|图像路径]] [img[图像路径][超链接]]
    /% 注释 %/

    为什么需要 ~ ?因为TiddlyWiki会自动把一个没有空格并且有两个大写字母的英文字串当成是一个Tiddler的名字,如果此Tiddler还不存在,会以斜体的形式显示。加上~,TW就不这么做了。

    结构化显示一般需要用到!、*、#、>、{{{}}}和|

    !这是第一级
    !!这是第二级
    !!!这是第三级
    *这是第一个圆点
    **这是第二个圆点
    ***这是第三个圆点
    #这是第一节
    ##这是第一小节
    ###这是第一小小节
    >这是引文
    >>这是引文里的引文
    >>>这是引文里的引文里的引文
    {{{这里的 [[Tiddler]] 不会变成链接}}}
    | A1 | A2 | A3 |
    | B1 | B2 | B3 |
    | C1 | C2 | C3 |

     

    说点题外话


    TiddlyWiki在国外和台湾都貌似有不少用户,不过中国内地对此比较陌生。

    其实世界上除了TiddlyWiki也还有很多多多少少满足同样需求的本地wiki系统,比如ubuntu自带的开源Tomboy就是其中一个。不过这样一来,TiddlyWiki又多了一个优势:完美的跨平台特性,无需安装特别的东西,浏览器就行。不过ubuntu环境下对于TiddlyWiki的备份文件夹的理解好像有点问题。

    此外,在这里你还会看到更多的wiki系统,在“Personal Wikis that don't need a server but require a browser”章节里面有TiddlyWiki,在“Stand-alone personal wikis that don't require a server or a browser”章节里面有Tomboy,在“PersonalWiki for Editors/IDEs”章节里还有VimWiki。呃是的,最近在学Vim。

  • 这篇文章是由我的TiddlyWiki里直接转过来的

     pchu, 2008年11月02日 (创建于 2008年11月01日)

    开头,我看到了 LaTeX Render【1】【2】,极端复杂,需要自己找服务器编译进行服务器端render成图片

    然后我想起了 奥数之家 的如何输入和显示数学公式,找到了MathPlayer身上,也就是MathML一家的。但其实我一直误解了。MathML的本质在于极度XML层次化,用于显示公式的那一套标准(presentation markup)是一大堆<></>,用于储存公式的那一套(content markup)也是一大堆<></>。而我要找的应该还是LaTeX类表达。

    于是回去研究 奥数之家 所用的$转化技术。找到了一个javascript:
    http://www1.chapman.edu/~jipsen/mathml/ASCIIMathML.js
    GPL的,是一个简易的转化js,$打头$结尾的ASCII公式变成ASCII格式化输出,有点丑,不过很实在,容易本地化。
    http://www1.chapman.edu/~jipsen/mathml/asciimath.html

    之后我从wikipedia页面找到了个不错的、新出的firemath插件,用于从显式表达式制作MathML从而方便firefox来markup,效果可以说非常漂亮,不过完全不符合我要在TiddlyWiki运用公式的目标。

    然后找到了个Equation server for .NET,在线转换LaTeX to bmp, MathML to bmp, LaTeX to MathML,又是soft4science的作品( http://www.soft4science.com/products/EquationServer/ )。开源并提供下载,不过也是服务器端的render,网站本身没提供端口供大众使用,没办法又作罢。

    不久我从一葡萄牙人的blog了解到mimeTeX,心想是了,LaTeX to image,大网站,应该提供端口供大众使用吧。谁知道它这么小气……至于那个葡萄牙人也自己写了个在线LaTeX to image,没明显提供端口,不过可以搞到手,是”http://www.bgoncalves.com/online/latex/cgi-bin/mimetex/mimetex.cgi?“+"%20%5CLarge%20%5C"+encodeURIComponent(expr)

    不过从mimeTeX我终于得到了最后的解决方法:MathTrans
    本来标准做法是<head>里加<script type="text/javascript" src="http://www.mathtran.org/js/mathtran.js"></script>,用<img alt="tex:a^2+b^2=c^2">调用。
    不过通过研究那个js可以再简化一点,直接使用端口 "http://www.mathtran.org/cgi-bin/mathtran?tex="+encodeURIComponent(expr),省去查错的环节。

    现在的做法是,修改TiddlyWiki.zh-Hans.html,找到用于wikify的formatter的image pattern部分(搜索match: "\\<>]?[Ii][Mm][Gg]\\["即可),其中lookaheadMatch[4]就是从img标签里extract出来的url了。在img.src = lookaheadMatch[4]一句前加上
    if(lookaheadMatch[4].substr(0,1)=="$") lookaheadMatch[4] = "http://www.mathtran.org/cgi-bin/mathtran?tex=" + encodeURIComponent(lookaheadMatch[4].substr(1));
    问题便解决。使用方法是[img[$expression]]

    另外据mimeTeX的介绍,我们还有texttogifgladTeX可以对带公式html进行本地编译,生成图片。

    好消息!mimeTeX的进化版mathTeX(有好心人)提供服务器端口进行实时rendering!
    http://www.forkosh.dreamhost.com/mathtex.cgi?c=
    http://www.cyberroadie.org/cgi-bin/mathtex.cgi?c=
    http://www.problem-solving.be/cgi-bin/mathtex.cgi?c=
  • 紧接上一次的Firefox插件介绍,现在还在热烈使用中的有:
    SearchStatusAdblock PlusIE tabDisableMenuGmail NotifierFireShotPDF DownloadRead It LaterVideo Downloadhelper 九个。

    其中需要再强调推广一下的是:

    • Adblock Plus 现在被我用来清理xiaonei,jandan,youku,tudou等等的版面
    • FireShot 确实非常之好用
    • PDF Download 的在线pdf转html浏览功能的确挺称心的

    上次介绍的插件中不那么常用的,有All-in-one Gestures(原因上次说了)、Firefox Showcase(反应还是不够快)、Torbutton(要用才用)、FlashGotFireUploaderTeXtheWorld 六个。

    然后就是惨遭淘汰的插件了:
    NoScript虽然功能极其强大,只可惜我看不懂。再者,它的黑白名单的逻辑……挺混乱的……于是它被简单的YesScript所替代,只需把几个网站列入黑名单即可。同时我也开始试用无比强大Web developer 插件,Ctrl+Shift+B调出其工具栏,可以disable cache,java,javascript,meta redirect,cookies,css,form,image,可以查看(包括外部的)js,css,可以编写临时css,可以标出网页各链接指向,分级结构,class属性,嵌入对象属性,检查css,html是否严格遵守语法,等等等等等等等等……

    使用的好插件还有:

    • Cache Viewer:查看internet缓存的,界面友好,使用方便……不过真的平时不会用到……
    • Clear Cache Button:嗯,还在试用,效果不显著
    • Flashblock:确实是个挺不错的插件,对于我机器的烂配置,是很容易被铺天盖地的flash拖慢
    • Split Browser:用于把窗口分开上下左右等等若干块,同时浏览几个页面。功能强大,只是我需求不大。
    • Stylish:是Greasemonkey的第二选择,利用本地的css对网页进行美化(或者简化吧)。较Greasemonkey要安全(不调用javascript),自然功能不够强大(比如,不可能产生用户交互效果)。效果和直接修改userChrome.css和userContent.css相当,不过无需重启Firefox,F5刷新即起效。和Greasemonkey一样,有很庞大的stylish代码库的网站,和google相关的css美化特别多^_^
    • Xinha Here!:是值得介绍一下的,在任何文本框中右键可以看到“Xinha Here”,调出一个WYSIWYG(可见即所得)带格式文本编辑窗口(有更多功能插件可自己选)。编辑完回来立即得到对应html代码。

    除此以外呢,最近还把这两个东西拉进了书签栏: