vimwiki我最喜欢的功能之一是它处理链接的方式。不幸的是,我用其他东西(vimoutliner)做我的主要笔记,它没有vimwiki所具有的链接功能。

在编辑任意文件而不仅仅是* .wiki文件时,是否有插件可以添加vimwiki的链接功能(或至少类似的东西)?

最佳答案

我认为您可以为简单的用例编写一个,例如:

function! LinkForward()
    let g:fromFile=expand('%:p')
    let fn= substitute(getline('.'),'^.*\[\[\([^\]]*\)\].*$',"\\1",'g')
    execute "e ".fn
endfunction

nnoremap <cr> :call LinkForward()<cr>

function! LinkBackward()
    execute "e ".g:fromFile
endf

nnoremap <bs> :call LinkBackward()<cr>


源,这将执行一些类似的操作,例如,在Enter上按[[path/to/file/foo]]foo将转到该foo文件,在该文件内,按<Backspace>将使您返回。

请注意,上面的代码仅是示例,无法完美运行。您可以使其更好地工作,例如:


添加一个列表/(堆栈)来存储文件跳转历史记录。
定义这种操作仅适用于某些文件类型
检查光标下的行是否与[[...]]不匹配,然后执行常规的<Enter>
等等。如果您愿意,可以看一下vimwiki的代码并“借用”一些片段供您个人使用。


希望对您有帮助。&祝您好运。

10-07 14:34