vimwiki的安装同其他vim插件一样,把解压到vimfiles里就好了。有zip包和vba包两种格式。其中vba是Vim独有的插件安装包。推荐使用vba安装,因为它能保存你的安装信息,不高兴了还可以卸载(详细说明请:hvba)。要使用这种安装方式,需要有vimball插件。Windows下的gvim已经自带。如果你还没有这东西,可以先到。
使用Vim打开vimwiki.vba,然后执行:so%,就这么简单。
如果你选择了zip包,解压完成后你可能还需要重建帮助文件索引。请执行:helptags$VIMFILES/doc。其中$VIMFILES就是您的vimfiles目录。这是需要在vimrc中定义的系统变量,Windows下应该是$VIM/vimfiles,Linux下是~/.vim/。请检查您的vimrc里是否有这样的代码:
ifhas("win32")let$VIMFILES=$VIM.'/vimfiles'elselet$VIMFILES=$HOME.'/.vim'endif如果还没有,就赶快加上吧。
如果你正在使用,并且设置了MRU_Include_Files,记得把.wiki也包括进去。
使用快捷键ww开始编辑您的第一个vimwiki吧!首次使用vimwiki时,它默认会在操作系统用户目录(即~/)建立一个vimwiki文件夹,保存所有你的wiki条目。如果你调用:Vimwiki2HTML命令把wiki条目转为html页面,它会创建一个名为vimwiki_html的文件夹保存所有生成的html文件。
=一级标题===二级标题=====三级标题===此次类推。当标题前面有空白时,标题文本居中对齐。=我是居中的标题=*粗体*_斜体_~~删除线~~`SomeCode代码`注意这几个针对文本格式的标签,都要求左右留有空白。请注意你的代码高亮,一般来说,有了相应的高亮,你用的wiki标签才生效。^上^标,,下,,标四个空格缩进的内容会被转成blockquote{{{class="brush:php"这中间的内容会被放到一个pre里,适合贴代码。上面的class是可选的,一般用来安排代码高亮。事实上,这一块代码展示就是放在了一个pre里。}}}WikiItem大写开头的驼峰英文会被自动当作一个维基词条,并添加链接[[WikiItem]]这是手动建立维基词条的方式[[wikiitem|description]]输出HTML时显示description,链到wikiitem外部URL会被自动转换成链接[Ktmud]带文字的外链[images/hello.jpg]输出[[images/hello.jpg]]输出图片,并链向图片地址*无序列表条目一*无序列表条目二-子列表条目一-自列表条目二#有序列表条目一#有序列表条目二*和-是等价的,后面必须跟一个空格您可以查看加深理解。
参考:hvimwiki-syntax
在wiki条目中使用以下占位符,能对生成的HTML文件做一些特殊的处理。
使用:Vimwiki2HTML可以为当前维基条目生成HTML文件,使用:VimwikiAll2HTML可以为所有条目生成HTML。您可以为每个维基项目指定auto_export选项,这样在wiki文件保存时就会自动生成HTML。个人不建议这样做,因为当条目很大,保存就相当费时。
定义下面的快捷键映射即可:
使用快捷键ww可以快速编辑当天的日记。还可以配合轻松管理你的日记。
请马上下载并安装。安装后,定义一下快捷键吧:
按F8调出日历窗口,按q退出。
在日期上点回车,就可以编辑当天的日记了!
PS:按左右键在前后一个月里跳转,按上下键在前后一年跳转。按t回到当天。当然,Vim默认的上下左右hjkl也是能用的。
您可以配置g:vimwiki_list,指定多个维基项目,它们各自拥有单独的文件夹。这就允许你把工作维基和生活的琐事记录完全分开。
请打开vimrc,加入以下内容:
letg:vimwiki_list=[{'path':'E:/path/to/vimwiki-1/vimwiki/',\'path_html':'E:/MyDropbox/vimwiki_html/'\'html_header':'E:/MyDropbox/Public/vimwiki_template/header.htm',\'html_footer':'E:/MyDropbox/Public/vimwiki_template/footer.htm',\'diary_link_count':5},\{'path':'Z:/path/to/vimwiki-2/vimwiki/'}]这里其实定义了两个维基项目。path是必须的,说明你想要把wiki条目存在哪个目录。其他选项各有默认值。生成的HTML存放在path_html下默认是与path同目录下的WIKIFOLDER_html,其中WIKIFOLER是你存放维基条目的文件夹名。你可以分别为每个wiki项目指定html头部和尾部模板,建议把模板文件后缀采用htm,既和生成的html有所区分,又能保证语法高亮和各种ftplugin可用。diary_link_count是指diary.wiki里每行放多少个日志链接。
定义好之后,你可以使用ws选择当前活动的维基项目。使用ws会弹出一个维基项目的列表,并带有编号,使用这个编号加上“快捷键总览”部分的快捷键,就可以打开相应项目的首页、日记等。如2ww就是在当前窗口打开列表中第二个项目的日记。
更多选项请参考:hviwmiki-local-options
Loading...
目前我的vimrc里有这些内容:
修改$VIMFILES/autoload/vimwiki_html.vim,第1169行
换为
相应的,s:get_html_footer这个函数也要改一下。第136行,函数定义的部分:
改为
再从s:get_html_header里把处理%root_path%的部分拷过去。第104行:
复制到第141行letlines=readfile(expand(VimwikiGet('html_footer')))之后
vimwiki有一个g:vimwiki_valid_html_tags值,可以指定允许写在wiki中的HTML标签。g:vimwiki_valid_html_tags的默认值是'b,i,s,u,sub,sup,kbd,br,hr',也就是说,当你在wiki中输入:
输出的HTML会显示为:
标签b被当作可用的HTML标签,而strong则输出为文本。
但有时候我们需要建立更强大的维基页面,不只用到这几个标签。比如的“”部分,就是一个有特定class和id的div。于是在vimrc中定义:
在这里我添加了div,del,code三个标签。
但是,非常不幸,当我们需要在维基里贴HTML代码,即使我们把代码放到了{{{}}}包裹的pre里,这几个标签还是会被输出为实际的HTML标签,而不是文本。
解决办法还是修改vimwiki_html.vim这个文件。
找到"WIKI2HTML"{{{所在行,也就是开始转换HTML的地方。
在前面添加一个函数:
functions:parse_tag_keeper(line)letline=substitute(a:line,'\\<',\'\<','g')letline=substitute(line,'\\>',\'\>','g')returnlineendfunction然后在之后的s:parse_line(line,state)函数内,插入这个函数的调用:
...letline=s:safe_html(a:line)letline=s:parse_tag_keeper(line)这样如果我们用的形式输入valid_html_tags包括的标签,输出的HTML就会把它们当成文本处理了。
在写本文时,我需要输出{{{}}},而这对标记被作为了wiki里pre区块的pattern。于是就还要再写一个函数:
functions:parse_pre_keeper(line)letline=substitute(a:line,'\\{\\{\\{',\'{{{','g')letline=substitute(line,'\\}\\}\\}',\'}}}','g')returnlineendfunction就把它定义在s:parse_tag_keeper之后吧。但调用的时候怎么办呢?肯定要放在vimwiki_html.vim处理了pre区块之后。思来想去,只能放在刚好要输出HTML文件的时候。但是vim的writefile函数,接受的参数是一个list(相当于数组),而不是字串。既然如此,我们就把输出结果给合并了再替换,然后再包装成list。
找到这句:
稍微修改一下:
letoutput=join(ldest,"\n\r")letoutput=s:parse_pre_keeper(output)letoutputlist=split(output,"\n\r")callwritefile(outputlist,path.wwFileNameOnly.'.html')之所以还要再split,是因为writefile写入的NL是无法用字符模拟的。这样当然会造成性能问题,如果有知道更好解决方案的,请留言告诉我。