我的问题是当我在 vimwiki 文件中时,SnipMate 的 <Tab> 完成不起作用。我正在通过在插入模式下键入 APACHE<Tab> 进行测试,但是我没有像在 .vimrc 中那样得到代码片段。

即使 i_<Tab> 在 vi​​mwikie 文件中不起作用,i_<C-R><Tab> 也可以。我得到一个可用片段列表。奇怪的。

为了让它变得陌生(好吧,至少对我来说),这是 vimwiki 文件中 :imap 的部分输出:

i  <Tab>       * <C-G>u<C-R>=snipMate#TriggerSnippet()<CR>
i  <C-R><Tab>  * <C-R>=snipMate#ShowAvailableSnips()<CR>

我认为这些是正确的,并且在 <Tab> 完成工作的其他文件中,映射是相同的。

哦,如果您想建议按照 http://code.google.com/p/vimwiki/wiki/ChangeLog 中的建议将 let g:vimwiki_table_auto_fmt = 0 放入我的 .vimrc 中,我试过了,但它不能解决我的问题。这是我在搜索中找到的唯一建议,所以这就是我来这里的原因。

我不知道你想要多少我的 .vimrc,所以我只想给你我认为相关的代码,以保持这个问题的简短:
" Vundle: The plugin manager for vim.
    set runtimepath+=~/.vim/bundle/vundle/
    call vundle#rc()
    Bundle 'gmarik/vundle'
" SnipMate: TextMate snippets for vim.
    Bundle "MarcWeber/vim-addon-mw-utils"
    Bundle "tomtom/tlib_vim"
    Bundle "honza/snipmate-snippets"
    Bundle "garbas/vim-snipmate"
" Vimwiki: A personal wiki for vim.
    Bundle 'vim-scripts/vimwiki'
    let g:vimwiki_hl_headers = 1
    let g:vimwiki_hl_cb_checked = 1
    let g:vimwiki_folding = 1
    let g:vimwiki_fold_lists = 1
    let s:vimwiki = {}
    let s:vimwiki.path             = '~/Vimwiki/wiki'
    let s:vimwiki.path_html        = '~/Vimwiki/html'
    let s:vimwiki.ext              = '.md'
    let s:vimwiki.syntax           = 'markdown'
    let s:vimwiki.maxhi            = 1
    let s:vimwiki.diary_rel_path   = 'Journal/'
    let s:vimwiki.diary_index      = 'index'
    let s:vimwiki.diary_header     = 'Journal'
    let s:vimwiki.diary_sort       = 'asc'
    let g:vimwiki_list = [s:vimwiki]

谢谢

编辑:

我不知道为什么我在写上面的时候忘记了这一点。上面 :imap 的输出是不完整的。它还显示:
i  <Tab>       *@vimwiki#tbl#kbd_tab()

无论 g:vimwiki_table_auto_fmt 的值如何。这可能是我的问题的根源..如果是这样,我想以某种方式从 .vimrc 中摆脱它。

最佳答案

@ 输出中的 :imap 显示 Vimwiki 定义了一个缓冲区本地 <Tab> 映射,该映射覆盖了 snipMate 的全局映射。一种

:iunmap <buffer> <Tab>

应该解决这个问题。您可以将该命令放入 ~/.vim/after/ftplugin/vimwiki.vim 以使其永久化。但显然 Vimwiki 允许自定义:
" Table mappings
if g:vimwiki_table_mappings
  inoremap <expr> <buffer> <Tab> vimwiki#tbl#kbd_tab()
  inoremap <expr> <buffer> <S-Tab> vimwiki#tbl#kbd_shift_tab()
endif

因此,您的 .vimrc 中的 :let g:vimwiki_table_mappings = 0 也应该可以工作。

关于vim - 让 Vimwiki 与 SnipMate(vim 插件)一起工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12033273/

10-10 11:21