" Vimball Archiver by Charles E. Campbell, Jr., Ph.D. UseVimball finish autoload/vimwiki.vim [[[1 932 " VimWiki plugin file " Language: Wiki " Author: Maxim Kim (habamax at gmail dot com) " Home: http://code.google.com/p/vimwiki/ " Filenames: *.wiki " Last Change: 19.01.2009 23:43 " Version: 0.5.3 if exists("g:loaded_vimwiki_auto") || &cp finish endif let g:loaded_vimwiki_auto = 1 let s:wiki_badsymbols = '[<>|?*/\:"]' "" vimwiki functions {{{2 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! s:msg(message) "{{{ echohl WarningMsg echomsg 'vimwiki: '.a:message echohl None endfunction "}}} function! s:getFileNameOnly(filename) "{{{ let word = substitute(a:filename, '\'.g:vimwiki_ext, "", "g") let word = substitute(word, '.*[/\\]', "", "g") return word endfunction "}}} function! s:editfile(command, filename) "{{{ let fname = escape(a:filename, '% ') execute a:command.' '.fname " if fname is new " if g:vimwiki_addheading!=0 && glob(fname) == '' " execute 'normal I! '.s:getfilename(fname) " update " endif endfunction "}}} function! s:SearchWord(wikiRx,cmd) "{{{ let hl = &hls let lasts = @/ let @/ = a:wikiRx set nohls try :silent exe 'normal ' a:cmd catch /Pattern not found/ call s:msg('WikiWord not found') endt let @/ = lasts let &hls = hl endfunction "}}} function! s:WikiGetWordAtCursor(wikiRX) "{{{ let col = col('.') - 1 let line = getline('.') let ebeg = -1 let cont = match(line, a:wikiRX, 0) while (ebeg >= 0 || (0 <= cont) && (cont <= col)) let contn = matchend(line, a:wikiRX, cont) if (cont <= col) && (col < contn) let ebeg = match(line, a:wikiRX, cont) let elen = contn - ebeg break else let cont = match(line, a:wikiRX, contn) endif endwh if ebeg >= 0 return strpart(line, ebeg, elen) else return "" endif endf "}}} function! s:WikiStripWord(word, sym) "{{{ function! s:WikiStripWordHelper(word, sym) return substitute(a:word, s:wiki_badsymbols, a:sym, 'g') endfunction let result = a:word if strpart(a:word, 0, 2) == "[[" let result = s:WikiStripWordHelper(strpart(a:word, 2, strlen(a:word)-4), a:sym) endif return result endfunction "}}} function! s:WikiIsLinkToNonWikiFile(word) "{{{ " Check if word is link to a non-wiki file. " The easiest way is to check if it has extension like .txt or .html if a:word =~ '\.\w\{1,4}$' return 1 endif return 0 endfunction "}}} "" WikiWord history helper functions {{{ " history is [['WikiWord.wiki', 11], ['AnotherWikiWord', 3] ... etc] " where numbers are column positions we should return to when coming back. function! s:GetHistoryWord(historyItem) return get(a:historyItem, 0) endfunction function! s:GetHistoryColumn(historyItem) return get(a:historyItem, 1) endfunction "}}} function! vimwiki#WikiNextWord() "{{{ call s:SearchWord(g:vimwiki_rxWikiWord, 'n') endfunction "}}} function! vimwiki#WikiPrevWord() "{{{ call s:SearchWord(g:vimwiki_rxWikiWord, 'N') endfunction "}}} function! vimwiki#WikiFollowWord(split) "{{{ if a:split == "split" let cmd = ":split " elseif a:split == "vsplit" let cmd = ":vsplit " else let cmd = ":e " endif let word = s:WikiStripWord(s:WikiGetWordAtCursor(g:vimwiki_rxWikiWord), g:vimwiki_stripsym) " insert doesn't work properly inside :if. Check :help :if. if word == "" execute "normal! \n" return endif if s:WikiIsLinkToNonWikiFile(word) call s:editfile(cmd, word) else call insert(g:vimwiki_history, [expand('%:p'), col('.')]) call s:editfile(cmd, g:vimwiki_home.word.g:vimwiki_ext) endif endfunction "}}} function! vimwiki#WikiGoBackWord() "{{{ if !empty(g:vimwiki_history) let word = remove(g:vimwiki_history, 0) " go back to saved WikiWord execute ":e ".s:GetHistoryWord(word) call cursor(line('.'), s:GetHistoryColumn(word)) endif endfunction "}}} function! vimwiki#WikiNewLine(direction) "{{{ "" direction == checkup - use previous line for checking "" direction == checkdown - use next line for checking function! s:WikiAutoListItemInsert(listSym, dir) let sym = escape(a:listSym, '*') if a:dir=='checkup' let linenum = line('.')-1 else let linenum = line('.')+1 end let prevline = getline(linenum) if prevline =~ '^\s\+'.sym let curline = substitute(getline('.'),'^\s\+',"","g") if prevline =~ '^\s*'.sym.'\s*$' " there should be easier way ... execute 'normal kA '."\".'"_dF'.a:listSym.'JX' return 1 endif let ind = indent(linenum) call setline(line('.'), strpart(prevline, 0, ind).a:listSym.' '.curline) call cursor(line('.'), ind+3) return 1 endif return 0 endfunction if s:WikiAutoListItemInsert('*', a:direction) return endif if s:WikiAutoListItemInsert('#', a:direction) return endif " delete if getline('.') =~ '^\s\+$' execute 'normal x' else execute 'normal X' endif endfunction "}}} function! vimwiki#WikiHighlightWords() "{{{ let wikies = glob(g:vimwiki_home.'*') "" remove .wiki extensions let wikies = substitute(wikies, '\'.g:vimwiki_ext, "", "g") let g:vimwiki_wikiwords = split(wikies, '\n') "" remove paths call map(g:vimwiki_wikiwords, 'substitute(v:val, ''.*[/\\]'', "", "g")') "" remove backup files (.wiki~) call filter(g:vimwiki_wikiwords, 'v:val !~ ''.*\~$''') for word in g:vimwiki_wikiwords if word =~ g:vimwiki_word1 && !s:WikiIsLinkToNonWikiFile(word) execute 'syntax match wikiWord /\<'.word.'\>/' else execute 'syntax match wikiWord /\[\['.substitute(word, g:vimwiki_stripsym, s:wiki_badsymbols, "g").'\]\]/' endif endfor endfunction "}}} function! vimwiki#WikiGoHome()"{{{ try execute ':e '.g:vimwiki_home.g:vimwiki_index.g:vimwiki_ext catch /E37/ " catch 'No write since last change' error " this is really unsecure!!! execute ':'.g:vimwiki_gohome.' '.g:vimwiki_home.g:vimwiki_index.g:vimwiki_ext endtry let g:vimwiki_history = [] endfunction"}}} function! vimwiki#WikiDeleteWord() "{{{ "" file system funcs "" Delete WikiWord you are in from filesystem let val = input('Delete ['.expand('%').'] (y/n)? ', "") if val!='y' return endif let fname = expand('%:p') " call WikiGoBackWord() try call delete(fname) catch /.*/ call s:msg('Cannot delete "'.expand('%:r').'"!') return endtry execute "bdelete! ".escape(fname, " ") " delete from g:vimwiki_history list call filter (g:vimwiki_history, 's:GetHistoryWord(v:val) != fname') " as we got back to previous WikiWord - delete it from history - as much " as possible let hword = "" while !empty(g:vimwiki_history) && hword == s:GetHistoryWord(g:vimwiki_history[0]) let hword = s:GetHistoryWord(remove(g:vimwiki_history, 0)) endwhile " reread buffer => deleted WikiWord should appear as non-existent execute "e" endfunction "}}} function! vimwiki#WikiRenameWord() "{{{ "" Rename WikiWord, update all links to renamed WikiWord let wwtorename = expand('%:r') let isOldWordComplex = 0 if wwtorename !~ g:vimwiki_word1 let wwtorename = substitute(wwtorename, g:vimwiki_stripsym, s:wiki_badsymbols, "g") let isOldWordComplex = 1 endif " there is no file (new one maybe) " if glob(g:vimwiki_home.expand('%')) == '' if glob(expand('%:p')) == '' call s:msg('Cannot rename "'.expand('%:p').'". It does not exist! (New file? Save it before renaming.)') return endif let val = input('Rename "'.expand('%:r').'" (y/n)? ', "") if val!='y' return endif let newWord = input('Enter new name: ', "") " check newWord - it should be 'good', not empty if substitute(newWord, '\s', '', 'g') == '' call s:msg('Cannot rename to an empty filename!') return endif if s:WikiIsLinkToNonWikiFile(newWord) call s:msg('Cannot rename to a filename with extension (ie .txt .html)!') return endif if newWord !~ g:vimwiki_word1 " if newWord is 'complex wiki word' then add [[]] let newWord = '[['.newWord.']]' endif let newFileName = s:WikiStripWord(newWord, g:vimwiki_stripsym).g:vimwiki_ext " do not rename if word with such name exists let fname = glob(g:vimwiki_home.newFileName) if fname != '' call s:msg('Cannot rename to "'.newFileName.'". File with that name exist!') return endif " rename WikiWord file try echomsg "Renaming ".expand('%')." to ".g:vimwiki_home.newFileName let res = rename(expand('%'), g:vimwiki_home.newFileName) if res == 0 bd else throw "Cannot rename!" end catch /.*/ call s:msg('Cannot rename "'.expand('%:r').'" to "'.newFileName.'"') return endtry " save open buffers let openbuffers = [] let bcount = 1 while bcount<=bufnr("$") if bufexists(bcount) call add(openbuffers, bufname(bcount)) endif let bcount = bcount + 1 endwhile " update links echomsg "Updating links to ".newWord."..." execute ':silent args '.escape(g:vimwiki_home, " ").'*'.g:vimwiki_ext if isOldWordComplex execute ':silent argdo %sm/\[\['.wwtorename.'\]\]/'.newWord.'/geI | update' else execute ':silent argdo %sm/\<'.wwtorename.'\>/'.newWord.'/geI | update' endif execute ':silent argd *'.g:vimwiki_ext " restore open buffers let bcount = 1 while bcount<=bufnr("$") if bufexists(bcount) if index(openbuffers, bufname(bcount)) == -1 execute 'silent bdelete '.escape(bufname(bcount), " ") end endif let bcount = bcount + 1 endwhile call s:editfile('e', g:vimwiki_home.newFileName) "" DONE: after renaming GUI caption is a bit corrupted? "" FIXED: buffers menu is also not in the "normal" state, howto Refresh menu? "" TODO: Localized version of Gvim gives error -- Refresh menu doesn't exist execute "silent! emenu Buffers.Refresh\ menu" echomsg wwtorename." is renamed to ".newWord endfunction "}}} " Functions 2}}} "" vimwiki html functions {{{2 """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" function! s:WikiCreateDefaultCSS(path) " {{{ if glob(a:path.'style.css') == "" let lines = ['body { margin: 1em 5em 1em 5em; font-size: 120%; line-height: 1.5;}'] call add(lines, 'p, ul, ol {margin: 0.3em auto;}') call add(lines, '.todo {font-weight: bold; text-decoration: underline; color: #FF0000; }') call add(lines, '.strike {text-decoration: line-through; }') call add(lines, 'h1 {font-size: 2.0em;}') call add(lines, 'h2 {font-size: 1.4em;}') call add(lines, 'h3 {font-size: 1.0em;}') call add(lines, 'h4 {font-size: 0.8em;}') call add(lines, 'h5 {font-size: 0.7em;}') call add(lines, 'h6 {font-size: 0.6em;}') call add(lines, 'h1 { border-bottom: 1px solid #3366cc; text-align: left; padding: 0em 1em 0.3em 0em; }') call add(lines, 'h3 { background: #e5ecf9; border-top: 1px solid #3366cc; padding: 0.1em 0.3em 0.1em 0.5em; }') call add(lines, 'ul { margin-left: 2em; padding-left: 0.5em; }') call add(lines, 'pre { border-left: 0.2em solid #ccc; margin-left: 2em; padding-left: 0.5em; }') call add(lines, 'td { border: 1px solid #ccc; padding: 0.3em; }') call add(lines, 'hr { border: none; border-top: 1px solid #ccc; }') call writefile(lines, a:path.'style.css') echomsg "Default style.css is created." endif endfunction "}}} function! s:syntax_supported() return g:vimwiki_syntax == "default" endfunction function! vimwiki#WikiAll2HTML(path) "{{{ if !s:syntax_supported() call s:msg('Wiki2Html: Only vimwiki_default syntax supported!!!') return endif if !isdirectory(a:path) call s:msg('Please create '.a:path.' directory first!') return endif let setting_more = &more setlocal nomore let wikifiles = split(glob(g:vimwiki_home.'*'.g:vimwiki_ext), '\n') for wikifile in wikifiles echomsg 'Processing '.wikifile call vimwiki#Wiki2HTML(a:path, wikifile) endfor call s:WikiCreateDefaultCSS(g:vimwiki_home_html) echomsg 'Wikifiles converted.' let &more = setting_more endfunction "}}} function! vimwiki#Wiki2HTML(path, wikifile) "{{{ if !s:syntax_supported() call s:msg('Wiki2Html: Only vimwiki_default syntax supported!!!') return endif if !isdirectory(a:path) call s:msg('Please create '.a:path.' directory first!') return endif "" helper funcs function! s:isWebLink(lnk) "{{{ if a:lnk =~ '^\(http://\|www.\|ftp://\)' return 1 endif return 0 endfunction "}}} function! s:isImgLink(lnk) "{{{ if a:lnk =~ '.\(png\|jpg\|gif\|jpeg\)$' return 1 endif return 0 endfunction "}}} function! s:HTMLHeader(title, charset) "{{{ let lines=[] call add(lines, "") call add(lines, '') call add(lines, '') call add(lines, '') call add(lines, ''.a:title.'') call add(lines, '') call add(lines, '') call add(lines, '') return lines endfunction "}}} function! s:HTMLFooter() "{{{ let lines=[] call add(lines, "") call add(lines, '') call add(lines, '') return lines endfunction "}}} function! s:closeCode(code, ldest) "{{{ if a:code call add(a:ldest, "") return 0 endif return a:code endfunction "}}} function! s:closePre(pre, ldest) "{{{ if a:pre call add(a:ldest, "") return 0 endif return a:pre endfunction "}}} function! s:closeTable(table, ldest) "{{{ if a:table call add(a:ldest, "") return 0 endif return a:table endfunction "}}} function! s:closeList(lists, ldest) "{{{ while len(a:lists) let item = remove(a:lists, -1) call add(a:ldest, item[0]) endwhile endfunction! "}}} " TODO: сделать так, чтобы {{{WikiWord}}} нормально отрабатывал function! s:processCode(line, code) "{{{ let lines = [] let code = a:code let processed = 0 if !code && a:line =~ '^{{{\s*$' " if !code && a:line =~ g:vimwiki_rxPreStart let code = 1 call add(lines, "
")
      let processed = 1
    elseif code && a:line =~ '^}}}\s*$'
      " elseif code && a:line =~ g:vimwiki_rxPreEnd
      let code = 0
      call add(lines, "
") let processed = 1 elseif code let processed = 1 call add(lines, a:line) endif return [processed, lines, code] endfunction "}}} function! s:processPre(line, pre) "{{{ let lines = [] let pre = a:pre let processed = 0 if a:line =~ '^\s\+[^[:blank:]*#]' if !pre call add(lines, "
")
        let pre = 1
      endif
      let processed = 1
      call add(lines, a:line)
    elseif pre && a:line =~ '^\s*$'
      let processed = 1
      call add(lines, a:line)
    elseif pre 
      call add(lines, "
") let pre = 0 endif return [processed, lines, pre] endfunction "}}} function! s:processList(line, lists) "{{{ let lines = [] let lstSym = '' let lstTagOpen = '' let lstTagClose = '' let lstRegExp = '' let processed = 0 if a:line =~ '^\s\+\*' let lstSym = '*' let lstTagOpen = '' let lstRegExp = '^\s\+\*' let processed = 1 elseif a:line =~ '^\s\+#' let lstSym = '#' let lstTagOpen = '
    ' let lstTagClose = '
' let lstRegExp = '^\s\+#' let processed = 1 endif if lstSym != '' let indent = stridx(a:line, lstSym) let cnt = len(a:lists) if !cnt || (cnt && indent > a:lists[-1][1]) call add(a:lists, [lstTagClose, indent]) call add(lines, lstTagOpen) elseif (cnt && indent < a:lists[-1][1]) while indent < a:lists[-1][1] let item = remove(a:lists, -1) call add(lines, item[0]) endwhile endif call add(lines, '
  • '.substitute(a:line, lstRegExp, '', '').'
  • ') else while len(a:lists) let item = remove(a:lists, -1) call add(lines, item[0]) endwhile endif return [processed, lines] endfunction "}}} function! s:processP(line) "{{{ let lines = [] if a:line =~ '^\S' call add(lines, '

    '.a:line.'

    ') return [1, lines] endif return [0, lines] endfunction "}}} function! s:processHeading(line) "{{{ let line = a:line let processed = 0 if a:line =~ g:vimwiki_rxH6 let line = '
    '.strpart(a:line, 6).'
    ' let processed = 1 elseif a:line =~ g:vimwiki_rxH5 let line = '
    '.strpart(a:line, 5).'
    ' let processed = 1 elseif a:line =~ g:vimwiki_rxH4 let line = '

    '.strpart(a:line, 4).'

    ' let processed = 1 elseif a:line =~ g:vimwiki_rxH3 let line = '

    '.strpart(a:line, 3).'

    ' let processed = 1 elseif a:line =~ g:vimwiki_rxH2 let line = '

    '.strpart(a:line, 2).'

    ' let processed = 1 elseif a:line =~ g:vimwiki_rxH1 let line = '

    '.strpart(a:line, 1).'

    ' let processed = 1 endif return [processed, line] endfunction "}}} function! s:processHR(line) "{{{ let line = a:line let processed = 0 if a:line =~ '^-----*$' let line = '
    ' let processed = 1 endif return [processed, line] endfunction "}}} function! s:processTable(line, table) "{{{ let table = a:table let lines = [] let processed = 0 if a:line =~ '^||.\+||.*' if !table call add(lines, "") let table = 1 endif let processed = 1 call add(lines, "") let pos1 = 0 let pos2 = 0 let done = 0 while !done let pos1 = stridx(a:line, '||', pos2) let pos2 = stridx(a:line, '||', pos1+2) if pos1==-1 || pos2==-1 let done = 1 let pos2 = len(a:line) endif let line = strpart(a:line, pos1+2, pos2-pos1-2) if line != '' call add(lines, "") endif endwhile call add(lines, "") elseif table call add(lines, "
    ".line."
    ") let table = 0 endif return [processed, lines, table] endfunction "}}} "" change dangerous html symbols - < > & (line) function! s:safeHTML(line) "{{{ let line = substitute(a:line, '&', '\&', 'g') let line = substitute(line, '<', '\<', 'g') let line = substitute(line, '>', '\>', 'g') return line endfunction "}}} "" Substitute text found by regexp_match with tagOpen.regexp_subst.tagClose function! s:MakeTagHelper(line, regexp_match, tagOpen, tagClose, cSymRemove, func) " {{{ let pos = 0 let lines = split(a:line, a:regexp_match, 1) let res_line = "" for line in lines let res_line = res_line.line let matched = matchstr(a:line, a:regexp_match, pos) if matched != "" let toReplace = strpart(matched, a:cSymRemove, len(matched)-2*a:cSymRemove) if a:func!="" let toReplace = {a:func}(escape(toReplace, '\&*[]?%')) else " let toReplace = a:tagOpen.escape(toReplace, '\&*[]?%').a:tagClose let toReplace = a:tagOpen.toReplace.a:tagClose endif let res_line = res_line.toReplace endif let pos = matchend(a:line, a:regexp_match, pos) endfor return res_line endfunction " }}} "" Make tags only if not in ` ... ` "" ... should be function that process regexp_match deeper. function! s:MakeTag(line, regexp_match, tagOpen, tagClose, ...) " {{{ "check if additional function exists let func = "" let cSym = 1 if a:0 == 2 let cSym = a:1 let func = a:2 elseif a:0 == 1 let cSym = a:1 endif let patt_splitter = g:vimwiki_rxCode " let patt_splitter = '\('.g:vimwiki_rxCode.'\)\|\(\)\|\(\)' " TODO: make one regexp from g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd let patt_splitter = '\('.g:vimwiki_rxCode.'\)\|\('.g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd.'\)\|\(\)\|\(\)' if g:vimwiki_rxCode == a:regexp_match || g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd == a:regexp_match let res_line = s:MakeTagHelper(a:line, a:regexp_match, a:tagOpen, a:tagClose, cSym, func) else let pos = 0 let lines = split(a:line, patt_splitter, 1) let res_line = "" for line in lines let res_line = res_line.s:MakeTagHelper(line, a:regexp_match, a:tagOpen, a:tagClose, cSym, func) let res_line = res_line.matchstr(a:line, patt_splitter, pos) let pos = matchend(a:line, patt_splitter, pos) endfor endif return res_line endfunction " }}} "" Make link desc "" from [link link desc] function! s:MakeExternalLink(entag) "{{{ let line = '' if s:isWebLink(a:entag) let lnkElements = split(a:entag) let head = lnkElements[0] let rest = join(lnkElements[1:]) if rest=="" let rest=head endif if s:isImgLink(rest) if rest!=head let line = '' else let line = '' endif else let line = ''.rest.'' endif else if s:isImgLink(a:entag) let line = '' else let line = ''.a:entag.'' endif endif return line endfunction "}}} "" Make This is a link "" from [[This is a link]] function! s:MakeInternalLink(entag) "{{{ let line = '' if s:isImgLink(a:entag) let line = '' else let line = ''.a:entag.'' endif return line endfunction "}}} "" Make WikiWord "" from WikiWord function! s:MakeWikiWordLink(entag) "{{{ let line = ''.a:entag.'' return line endfunction "}}} "" Make http://habamax.ru "" from http://habamax.ru function! s:MakeBareBoneLink(entag) "{{{ if s:isImgLink(a:entag) let line = '' else let line = ''.a:entag.'' endif return line endfunction "}}} let lsource=readfile(a:wikifile) let ldest = s:HTMLHeader(s:getFileNameOnly(a:wikifile), &encoding) let pre = 0 let code = 0 let table = 0 let lists = [] for line in lsource let processed = 0 let lines = [] let line = s:safeHTML(line) "" Code if !processed let [processed, lines, code] = s:processCode(line, code) if processed && len(lists) call s:closeList(lists, ldest) endif if processed && table let table = s:closeTable(table, ldest) endif if processed && pre let pre = s:closePre(pre, ldest) endif call extend(ldest, lines) endif "" Pre if !processed let [processed, lines, pre] = s:processPre(line, pre) if processed && len(lists) call s:closeList(lists, ldest) endif if processed && table let table = s:closeTable(table, ldest) endif if processed && code let code = s:closeCode(code, ldest) endif call extend(ldest, lines) endif "" list if !processed let [processed, lines] = s:processList(line, lists) if processed && pre let pre = s:closePre(pre, ldest) endif if processed && code let code = s:closeCode(code, ldest) endif if processed && table let table = s:closeTable(table, ldest) endif call map(lines, 's:MakeTag(v:val, ''\[\[.\{-}\]\]'', '''', '''', 2, ''s:MakeInternalLink'')') call map(lines, 's:MakeTag(v:val, ''\[.\{-}\]'', '''', '''', 1, ''s:MakeExternalLink'')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWeblink, '''', '''', 0, ''s:MakeBareBoneLink'')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWikiWord, '''', '''', 0, ''s:MakeWikiWordLink'')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxItalic, '''', '''')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxBold, '''', '''')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxTodo, '''', '''', 0)') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxDelText, '''', '''', 2)') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSuperScript, '''', '''', 1)') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSubScript, '''', '''', 2)') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxCode, '''', '''')') " TODO: change MakeTag function: delete cSym parameter -- count of symbols " to strip from 2 sides of tag. Add 2 new instead -- OpenWikiTag length " and CloseWikiTag length as for preformatted text there could be {{{,}}} and
    ,
    . call map(lines, 's:MakeTag(v:val, g:vimwiki_rxPreStart.''.\+''.g:vimwiki_rxPreEnd, '''', '''', 3)') call extend(ldest, lines) endif "" table if !processed let [processed, lines, table] = s:processTable(line, table) call map(lines, 's:MakeTag(v:val, ''\[\[.\{-}\]\]'', '''', '''', 2, ''s:MakeInternalLink'')') call map(lines, 's:MakeTag(v:val, ''\[.\{-}\]'', '''', '''', 1, ''s:MakeExternalLink'')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWeblink, '''', '''', 0, ''s:MakeBareBoneLink'')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxWikiWord, '''', '''', 0, ''s:MakeWikiWordLink'')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxItalic, '''', '''')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxBold, '''', '''')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxTodo, '''', '''', 0)') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxDelText, '''', '''', 2)') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSuperScript, '''', '''', 1)') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxSubScript, '''', '''', 2)') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxCode, '''', '''')') call map(lines, 's:MakeTag(v:val, g:vimwiki_rxPreStart.''.\+''.g:vimwiki_rxPreEnd, '''', '''', 3)') call extend(ldest, lines) endif if !processed let [processed, line] = s:processHeading(line) if processed call s:closeList(lists, ldest) let table = s:closeTable(table, ldest) let code = s:closeCode(code, ldest) call add(ldest, line) endif endif if !processed let [processed, line] = s:processHR(line) if processed call s:closeList(lists, ldest) let table = s:closeTable(table, ldest) let code = s:closeCode(code, ldest) call add(ldest, line) endif endif "" P if !processed let line = s:MakeTag(line, '\[\[.\{-}\]\]', '', '', 2, 's:MakeInternalLink') let line = s:MakeTag(line, '\[.\{-}\]', '', '', 1, 's:MakeExternalLink') let line = s:MakeTag(line, g:vimwiki_rxWeblink, '', '', 0, 's:MakeBareBoneLink') let line = s:MakeTag(line, g:vimwiki_rxWikiWord, '', '', 0, 's:MakeWikiWordLink') let line = s:MakeTag(line, g:vimwiki_rxItalic, '', '') let line = s:MakeTag(line, g:vimwiki_rxBold, '', '') let line = s:MakeTag(line, g:vimwiki_rxTodo, '', '', 0) let line = s:MakeTag(line, g:vimwiki_rxDelText, '', '', 2) let line = s:MakeTag(line, g:vimwiki_rxSuperScript, '', '', 1) let line = s:MakeTag(line, g:vimwiki_rxSubScript, '', '', 2) let line = s:MakeTag(line, g:vimwiki_rxCode, '', '') let line = s:MakeTag(line, g:vimwiki_rxPreStart.'.\+'.g:vimwiki_rxPreEnd, '', '', 3) let [processed, lines] = s:processP(line) if processed && pre let pre = s:closePre(pre, ldest) endif if processed && code let code = s:closeCode(code, ldest) endif if processed && table let table = s:closeTable(table, ldest) endif call extend(ldest, lines) endif "" add the rest if !processed call add(ldest, line) endif endfor "" process end of file "" close opened tags if any call s:closePre(pre, ldest) call s:closeCode(code, ldest) call s:closeList(lists, ldest) call s:closeTable(table, ldest) call extend(ldest, s:HTMLFooter()) "" make html file. "" TODO: add html headings, css, etc. let wwFileNameOnly = s:getFileNameOnly(a:wikifile) call writefile(ldest, a:path.wwFileNameOnly.'.html') endfunction "}}} " 2}}} doc/vimwiki.txt [[[1 607 *vimwiki.txt* A Personal Wiki for Vim __ __ ______ __ __ ______ __ __ ______ ~ /\ \/\ \/\__ _\ /'\_/`\/\ \ __/\ \/\__ _\ /\ \/\ \ /\__ _\ ~ \ \ \ \ \/_/\ \/ /\ \ \ \/\ \ \ \/_/\ \/ \ \ \/'/'\/_/\ \/ ~ \ \ \ \ \ \ \ \ \ \ \__\ \ \ \ \ \ \ \ \ \ \ \ \ , < \ \ \ ~ \ \ \_/ \ \_\ \__\ \ \_/\ \ \ \_/ \_\ \ \_\ \__\ \ \\`\ \_\ \__ ~ \ `\___/ /\_____\\ \_\\ \_\ `\___x___/ /\_____\\ \_\ \_\ /\_____\~ `\/__/ \/_____/ \/_/ \/_/'\/__//__/ \/_____/ \/_/\/_/ \/_____/~ Let the help begins ...~ Version: 0.5.3 ~ ============================================================================== CONTENTS *vimwiki-contents* 1. Intro ...................................|vimwiki| 2. Prerequisites ...........................|vimwiki-prerequisites| 3. Mappings ................................|vimwiki-mappings| 3.1. Global mappings .....................|vimwiki-global-mappings| 3.2. Local mappings ......................|vimwiki-local-mappings| 4. Commands ................................|vimwiki-commands| 4.1. Global commands .....................|vimwiki-global-commands| 4.2. Local commands ......................|vimwiki-local-commands| 5. Wiki syntax .............................|vimwiki-syntax| 5.1. Typeface ............................|vimwiki-typeface| 5.2. Links ...............................|vimwiki-links| 5.3. Headers .............................|vimwiki-headers| 5.4. Paragraphs...........................|vimwiki-paragraphs| 5.5. Lists ...............................|vimwiki-lists| 5.6. Tables ..............................|vimwiki-tables| 5.7. Pre .................................|vimwiki-pre| 6. Options .................................|vimwiki-options| 7. Help ....................................|vimwiki-help| 8. Author ..................................|vimwiki-author| 9. Changelog ...............................|vimwiki-changelog| 10. License ................................|vimwiki-license| ============================================================================== 1. Intro *vimwiki* Vimwiki being a personal wiki for Vim allows you to organize text information using hyper links. To do a quick start add the following to your vimrc: > :let g:vimwiki_home = "~/mywiki/" Change "~/mywiki/" to whatever path you prefer. Make sure it exists and you can read and write to that path. Now restart Vim and press ww to go to your index wiki file. Feed it with the following example (copy&paste without and between ---) : --- ! My knowledge base * MyUrgentTasks -- things to be done _yesterday_!!! * ProjectGutenberg -- good books are power. * MusicILike, MusicIHate. --- Notice that ProjectGutenberg, MyUrgentTasks, MusicILike and MusicIHate highlighted as errors. These WikiWords (WikiWord or WikiPage -- capitalized word connected with other capitalized words) do not exist yet. Place cursor on ProjectGutenberg and press Enter. Now you are in ProjectGutenberg. Edit and save it, then press Backspace to return to previous WikiPage. You should see the difference in highlighting now. Now begin to add your own information ... ============================================================================== 2. Prerequisites *vimwiki-prerequisites* Make sure you have these settings in your vimrc file: > set nocompatible filetype plugin on syntax on Without them Vimwiki will not work properly. ============================================================================== 3. Mappings *vimwiki-mappings* There are global and local mappings in vimwiki. ------------------------------------------------------------------------------ 3.1. Global mappings *vimwiki-global-mappings* ww or VimwikiGoHome Open vimwiki's main file. To redefine: > :map w VimwikiGoHome < See also|:VimwikiGoHome| wt or VimwikiTabGoHome Open vimwiki's main file in a new tab. To redefine: > :map t VimwikiTabGoHome < See also|:VimwikiTabGoHome| wh or VimwikiExploreHome Open vimwiki's home directory. To redefine: > :map h VimwikiExploreHome < See also|:VimwikiExploreHome| ------------------------------------------------------------------------------ 3.1. Local mappings *vimwiki-local-mappings* Normal mode (Keyboard):~ Follow/Create WikiWord. Maps to|:VimwikiFollowWord|. Split and follow/create WikiWord Maps to|:VimwikiSplitWord|. Vertical split and follow/create WikiWord Maps to|:VimwikiVSplitWord|. Go back to previous WikiWord Maps to|:VimwikiGoBackWord|. Find next WikiWord Maps to|:VimwikiNextWord|. Find previous WikiWord Maps to|:VimwikiPrevWord|. wd Delete WikiWord you are in. Maps to|:VimwikiDeleteWord|. wr Rename WikiWord you are in. Maps to|:VimwikiRenameWord|. Normal mode (Mouse): ~ <2-LeftMouse> Follow/Create WikiWord Split and follow/create WikiWord Vertical split and follow/create WikiWord Go back to previous WikiWord Note: <2-LeftMouse> is just left double click. ============================================================================== 4. Commands *vimwiki-commands* ------------------------------------------------------------------------------ 4.1. Global Commands *vimwiki-global-commands* *:VimwikiGoHome* Open vimwiki's main file. *:VimwikiTabGoHome* Open vimwiki's main file in a new tab. *:VimwikiExploreHome* Open vimwiki's home directory. ------------------------------------------------------------------------------ 4.2. Local commands *vimwiki-local-commands* *:VimwikiFollowWord* Follow/create WikiWord. *:VimwikiGoBackWord* Go back to previous WikiWord you come from. *:VimwikiSplitWord* Split and follow/create WikiWord. *:VimwikiVSplitWord* Vertical split and follow/create WikiWord. *:VimwikiNextWord* Find next WikiWord. *:VimwikiPrevWord* Find previous WikiWord. *:VimwikiDeleteWord* Delete WikiWord you are in. *:VimwikiRenameWord* Rename WikiWord you are in. *:Vimwiki2HTML* Convert current WikiPage to HTML. *:VimwikiAll2HTML* Convert all WikiPages to HTML. Note that in order 2HTML commands to work you should set up & create html directory. By default it is g:vimwiki_home/html/ so just go to g:vimwiki_home and create html directory there. ============================================================================== 5. Wiki syntax *vimwiki-syntax* There are a lot of different wikies out there. Most of them have their own syntax and vimwiki is not an exception here. Default vimwiki's syntax is quite similar to what google's wiki has. With the noticeable difference in headings markup. As for MediaWiki's syntax -- the most used wiki syntax in the world -- it is not that convenient for non English keyboard layouts to emphasize text as it uses a lot of '''''' to do it. You have to switch layouts every time you want some bold non English text. This is the answer to "Why not MediaWiki?" Nevertheless, there is MediaWiki syntax file included in the distribution (it doesn't have all the fancy stuff original MediaWiki syntax has though). As the Google's one. To switch add the following to your vimrc: > let g:vimwiki_syntax = "media" or: > let g:vimwiki_syntax = "google" ------------------------------------------------------------------------------ 5.1. Typeface *vimwiki-typeface* There are a few typefaces that gives you a bit of control on how your text should be decorated: > *bold text* _italic text_ ~~strikeout text~~ `code (no syntax) text` super^script^ sub,,script,, ------------------------------------------------------------------------------ 5.2. Links *vimwiki-links* Internal links: CapitalizedWordsConnected or: [[This is a link]] External links effects are visible after export to HTML. Plain link: http://code.google.com/p/vimwiki Link with description [http://habamax.ru/blog habamax home page] Image link is the link with one of jpg, png or gif endings. Plain image link: http://someaddr.com/picture.jpg Image thumbnail link: [http://someaddr.com/bigpicture.jpg http://someaddr.com/thumbnail.jpg] ------------------------------------------------------------------------------ 5.3. Headers *vimwiki-headers* ! Header level 1 !! Header level 2 !!! Header level 3 !!!! Header level 4 !!!!! Header level 5 !!!!!! Header level 6 ------------------------------------------------------------------------------ 5.4. Paragraphs *vimwiki-paragraphs* Every line started from column 0 (zero) is a paragraph if it is not a list, table or preformatted text. ------------------------------------------------------------------------------ 5.5. Lists *vimwiki-lists* Indent lists with at least one space: * Bulleted list item 1 * Bulleted list item 2 * Bulleted list sub item 1 * Bulleted list sub item 2 * more ... * and more ... * ... * Bulleted list sub item 3 * etc. The same goes for numbered lists: # Numbered list item 1 # Numbered list item 2 # Numbered list sub item 1 # Numbered list sub item 2 # more ... # and more ... # ... # Numbered list sub item 3 # etc. It is possible to mix bulleted and numbered lists. ------------------------------------------------------------------------------ 5.6. Tables *vimwiki-tables* Tables are created by entering the content of each cell separated by || delimiters. You can insert other inline wiki syntax in table cells, including typeface formatting and links. For example: ||*Year*s||*Temperature (low)*||*Temperature (high)*|| ||1900 ||-10 ||25 || ||1910 ||-15 ||30 || ||1920 ||-10 ||32 || ||1930 ||_N/A_ ||_N/A_ || ||1940 ||-2 ||40 || ------------------------------------------------------------------------------ 5.7. Pre *vimwiki-pre* If the line started from whitespace and is not a list it is "preformatted" text. For example: > Tyger! Tyger! burning bright In the forests of the night, What immortal hand or eye Could frame thy fearful symmetry? In what distant deeps or skies Burnt the fire of thine eyes? On what wings dare he aspire? What the hand dare sieze the fire? ... ... Or use {{{ and }}} to define pre: {{{ > Tyger! Tyger! burning bright In the forests of the night, What immortal hand or eye Could frame thy fearful symmetry? In what distant deeps or skies Burnt the fire of thine eyes? On what wings dare he aspire? What the hand dare sieze the fire? }}} It could be started from column 0. ============================================================================== 6. Options *vimwiki-options* ------------------------------------------------------------------------------ Default: "" *g:vimwiki_home* Values: path Set your wiki files home directory: > let g:vimwiki_home = "~/mywiki/" Change "~/mywiki/" to whatever you prefer -- "d:/vimwiki/" for example. Make sure it exists and you can read and write to that path. Note: this option is a MUST. ------------------------------------------------------------------------------ Default: g:vimwiki_home."html" *g:vimwiki_home_html* Values: path Set up directory for wiki files converted to HTML: > let g:vimwiki_home_html = '~/my wiki/html/' ------------------------------------------------------------------------------ Default: "index" *g:vimwiki_index* Values: filename without extension If you don't like index.wiki as the main wiki file change it: > let g:vimwiki_index = "homesweethome" Note: there is NO .wiki extension ------------------------------------------------------------------------------ Default: ".wiki" *g:vimwiki_ext* Values: file extension If you don't want .wiki extension change it: > let g:vimwiki_ext = ".shmiki" ------------------------------------------------------------------------------ Default: "default" *g:vimwiki_syntax* Values: "default", "media" or "google" You can use different markup languages (currently default vimwiki, google and MediaWiki) but only vimwiki's default markup could be converted to HTML at the moment. To use MediaWiki's wiki markup: > let g:vimwiki_syntax = "media" To use google's wiki markup: > let g:vimwiki_syntax = "google" ------------------------------------------------------------------------------ Default: "A-ZА-Я" *g:vimwiki_upper* Values: Upper letters (ranges) This affects WikiWord detection. By default WikiWord detection uses English and Russian letters. You can set up your own: > let g:vimwiki_upper="A-Z" ------------------------------------------------------------------------------ Default: "a-zа-я" *g:vimwiki_lower* Values: Lower letters ranges See |g:vimwiki_upper|: > let g:vimwiki_lower="a-z" ------------------------------------------------------------------------------ Default: 1 *g:vimwiki_smartCR* Values: 0, 1, 2 This option affects the behaviour of in INSERT mode while adding new |vimwiki-lists|items. let g:vimwiki_smartCR=1~ Imagine you have the following list (cursor stands on | ): > * List item 1 * List item 2 | Now if you press : > * List item 1 * List item 2 * | New list item appear. Now press again: > * List item 1 * List item 2 | It is disappeared. That's it. Try it with cursor on any part of the list. It also works for |o| and |O|. let g:vimwiki_smartCR=2~ It only adds new list item. Nothing more. It uses Vim comments facility such as: > :h comments :h formatoptions. To turn it off: > let g:vimwiki_smartCR = 0 ------------------------------------------------------------------------------ Default: 1 *g:vimwiki_maxhi* Values: 0, 1 Non-existent WikiWord highlighting could be quite slow and if you don't want it set g:vimwiki_maxhi to 0: > let g:vimwiki_maxhi = 0 ------------------------------------------------------------------------------ Default: "_" *g:vimwiki_stripsym* Values: symbol Change strip symbol -- in Windows you cannot use /*?<>:" in file names so vimwiki replaces them with symbol given below: (_ is default): > let g:vimwiki_stripsym = '_' ------------------------------------------------------------------------------ Default: "split" *g:vimwiki_gohome* Values: split, vsplit, tabe This option controls the way |:VimwikiGoHome| command works. For instance you have 'No write since last change' buffer. After ww (or :VimwikiGoHome) vimwiki index file will be splitted with it. Or vertically splitted. Or opened in a new tab. ============================================================================== 7. Help *vimwiki-help* As you could see I am not native English speaker (not a writer as well). Please send me correct phrases instead of that incorrect stuff I have used here. Any help is really appreciated! ============================================================================== 8. Author *vimwiki-author* I live in Moscow and you may believe me -- there are no polar bears (no brown too) here in the streets. I do not do programming for a living. So don't blame me for an ugly ineffective code. :) Maxim Kim e-mail: habamax@gmail.com~ Vimwiki's website: http://code.google.com/p/vimwiki/ Vim plugins website: http://www.Vim.org/scripts/script.php?script_id=2226 ============================================================================== 9. Changelog *vimwiki-changelog* 0.5.3 * [fix] Fixed |:VimwikiRenameWord|. Error when g:vimwiki_home had whitespaces in path. * [fix] |:VimwikiSplitWord| and |:VimwikiVSplitWord| didn't work. 0.5.2 * [new] Added |:VimwikiGoHome|, |:VimwikiTabGoHome| and |:VimwikiExploreHome| commands. * [new] Added wt mapping to open vimwiki index file in a new tab. * [new] Added g:vimwiki_gohome option that controls how|:VimwikiGoHome| works when current buffer is changed. (Thanks Timur Zaripov) * [fix] Fixed |:VimwikiRenameWord|. Very bad behaviour when autochdir isn't set up. * [fix] Fixed commands :Wiki2HTML and :WikiAll2HTML to be available only for vimwiki buffers. * [fix] Renamed :Wiki2HTML and :WikiAll2HTML to |:Vimwiki2HTML| and |:VimwikiAll2HTML| commands. * [fix] Help file corrections. 0.5.1 * [new] This help is created. * [new] Now you can fold headers. * [new] VimwikiGoHome and VimwikiExploreHome were added. * [fix] Bug with {{{HelloWikiWord}}} export to HTML is fixed. * [del] Sync option removed from: Syntax highlighting for preformatted text {{{ }}}. 0.5 * [new] vimwiki default markup to HTML conversion improved. * [new] Added basic GoogleWiki and MediaWiki markup languages. * [new] Chinese [[complex wiki words]]. 0.4 * [new] vimwiki=>HTML converter in plain Vim language. * [new] Plugin autoload. 0.3.4 * [fix] Backup files (.wiki~) caused a bunch of errors while opening wiki files. 0.3.3 * FIXED: [[wiki word with dots at the end...]] didn't work. * [new] Added error handling for delete wiki word function. * [new] Added keybindings o and O for list items when g:vimwiki_smartCR=1. * [new] Added keybinding wh to visit wiki home directory. 0.3.2 * [fix] Renaming -- error if complex wiki word contains %. * [fix] Syntax highlighting for preformatted text {{{ }}}. Sync option added. * [fix] smartCR bug fix. 0.3.1 * [fix] Renaming -- [[hello world?]] to [[hello? world]] links are not updated. * [fix] Buffers menu is a bit awkward after renaming. * [new] Use mouse to follow links. Left double-click to follow WikiWord, Rightclick then Leftclick to go back. 0.3 * [new] Highlight non-existent WikiWords. * [new] Delete current WikiWord (wd). * [new] g:vimwiki_smartCR=2 => use Vim comments (see :h comments :h formatoptions) feature to deal with list items. (thx -- Dmitry Alexandrov) * [new] Highlight TODO:, DONE:, FIXED:, FIXME:. * [new] Rename current WikiWord -- be careful on Windows you cannot rename wikiword to WikiWord. After renaming update all links to that renamed WikiWord. * [fix] Bug -- do not duplicate WikiWords in wiki history. * [fix] after renaming [[wiki word]] twice buffers are not deleted. * [fix] when renaming from [[wiki word]] to WikiWord result is [[WikiWord]] * [fix] more than one complex words on one line is bugging each other when try go to one of them. [[bla bla bla]] [[dodo dodo dodo]] becomes bla bla bla]] [[dodo dodo dodo. 0.2.2 * [new] Added keybinding -- split WikiWord * [new] Added keybinding -- vertical split WikiWord 0.2.1 * [new] Install on Linux now works. 0.2 * [new] Added part of Google's Wiki syntax. * [new] Added auto insert # with ENTER. * [new] On/Off auto insert bullet with ENTER. * [new] Strip [[complex wiki name]] from symbols that cannot be used in file names. * [new] Links to non-wiki files. Non wiki files are files with extensions ie [[hello world.txt]] or [[my homesite.html]] 0.1 * First public version. ============================================================================== 10. License *vimwiki-license* GNU General Public License v2 http://www.gnu.org/licenses/old-licenses/gpl-2.0.html To be frank I didn't read it myself. It is not that easy reading. But I hope it's free enough to suit your needs. vim:tw=78:ts=8:ft=help:fdm=marker: ftplugin/vimwiki.vim [[[1 98 " Vim filetype plugin file " Language: Wiki " Author: Maxim Kim (habamax at gmail dot com) " Home: http://code.google.com/p/vimwiki/ " Filenames: *.wiki " Last Change: 20.01.2009 11:21 " Version: 0.5.3 if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 " Don't load another plugin for this buffer "" Defaults """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Reset the following options to undo this plugin. let b:undo_ftplugin = "setl tw< wrap< lbr< fenc< ff< sua< isf< awa< com< fo< fdt< fdm< fde< commentstring<" setlocal textwidth=0 setlocal wrap setlocal linebreak setlocal fileencoding=utf-8 setlocal fileformat=unix setlocal autowriteall " for gf execute 'setlocal suffixesadd='.g:vimwiki_ext setlocal isfname-=[,] if g:vimwiki_smartCR>=2 setlocal comments=b:*,b:# setlocal formatoptions=ctnqro endif " folding for Headers using syntax fold method. setlocal fdm=syntax setlocal commentstring= "" commands {{{2 command! -buffer Vimwiki2HTML call vimwiki#Wiki2HTML(g:vimwiki_home_html, expand('%')) command! -buffer VimwikiAll2HTML call vimwiki#WikiAll2HTML(g:vimwiki_home_html) command! -buffer VimwikiNextWord call vimwiki#WikiNextWord() command! -buffer VimwikiPrevWord call vimwiki#WikiPrevWord() command! -buffer VimwikiDeleteWord call vimwiki#WikiDeleteWord() command! -buffer VimwikiRenameWord call vimwiki#WikiRenameWord() command! -buffer VimwikiFollowWord call vimwiki#WikiFollowWord('nosplit') command! -buffer VimwikiGoBackWord call vimwiki#WikiGoBackWord() command! -buffer VimwikiSplitWord call vimwiki#WikiFollowWord('split') command! -buffer VimwikiVSplitWord call vimwiki#WikiFollowWord('vsplit') "" commands 2}}} "" keybindings {{{ """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" nmap gk nmap k gk vmap gk vmap k gk nmap gj nmap j gj vmap gj vmap j gj imap gj imap gk nmap :VimwikiFollowWord nmap :VimwikiSplitWord nmap :VimwikiVSplitWord nmap nmap noremap <2-LeftMouse> :VimwikiFollowWord noremap :VimwikiSplitWord noremap :VimwikiVSplitWord nmap :VimwikiGoBackWord " mapping doesn't work in vim console nmap :VimwikiGoBackWord nmap :VimwikiGoBackWord nmap :VimwikiNextWord nmap :VimwikiPrevWord nmap wd :VimwikiDeleteWord nmap wr :VimwikiRenameWord if g:vimwiki_smartCR==1 inoremap :call vimwiki#WikiNewLine('checkup') noremap o o:call vimwiki#WikiNewLine('checkup') noremap O O:call vimwiki#WikiNewLine('checkdown') endif " keybindings }}} plugin/vimwiki.vim [[[1 75 " VimWiki plugin file " Language: Wiki " Author: Maxim Kim (habamax at gmail dot com) " Home: http://code.google.com/p/vimwiki/ " Filenames: *.wiki " Last Change: 20.01.2009 11:22 " Version: 0.5.3 if exists("loaded_vimwiki") || &cp finish endif let loaded_vimwiki = 1 let s:save_cpo = &cpo set cpo&vim function! s:default(varname,value) if !exists('g:vimwiki_'.a:varname) let g:vimwiki_{a:varname} = a:value endif endfunction "" Could be redefined by users call s:default('home',"") call s:default('index',"index") call s:default('ext','.wiki') call s:default('upper','A-ZА-Я') call s:default('lower','a-zа-я') call s:default('other','0-9_') call s:default('maxhi','1') call s:default('stripsym','_') call s:default('smartCR',1) call s:default('home_html',g:vimwiki_home."html/") call s:default('syntax','default') call s:default('gohome','split') call s:default('history',[]) let g:vimwiki_home = expand(g:vimwiki_home) let upp = g:vimwiki_upper let low = g:vimwiki_lower let oth = g:vimwiki_other let nup = low.oth let nlo = upp.oth let any = upp.nup let g:vimwiki_word1 = '\C\<['.upp.']['.nlo.']*['.low.']['.nup.']*['.upp.']['.any.']*\>' " let g:vimwiki_word2 = '\[\[['.upp.low.oth.'[:punct:][:space:]]\{-}\]\]' let g:vimwiki_word2 = '\[\[[^\]]\+\]\]' let g:vimwiki_rxWikiWord = g:vimwiki_word1.'\|'.g:vimwiki_word2 execute 'autocmd! BufNewFile,BufReadPost,BufEnter *'.g:vimwiki_ext.' set ft=vimwiki' command! VimwikiGoHome call vimwiki#WikiGoHome() command! VimwikiTabGoHome tabedit call vimwiki#WikiGoHome() command! VimwikiExploreHome execute "Explore ".g:vimwiki_home if !hasmapto('VimwikiGoHome') map ww VimwikiGoHome endif noremap