VIm snipmate <TAB>自动完成无法正常工作

 月下小野 发布于 2023-01-19 20:14

这是第一次"M试图snipmateVIM 7.3的Ubuntu 12.04.

我的.vimrc 配置是:

" kill vi compatibility
set nocompatible               " be iMproved

" -------------------------------------
" ---------snipmate--------------------
" -------------------------------------
Bundle "MarcWeber/vim-addon-mw-utils"
Bundle "tomtom/tlib_vim"
Bundle "honza/vim-snippets"

Bundle "garbas/vim-snipmate"
" -------------------------------------
 filetype plugin on

我相信这就是我想要的:BundleInstall.

我的树结构.vim/bundle

prayag@prayag:~$ tree -d .vim/bundle/
.vim/bundle/
|-- vim-colors-solarized
|   |-- autoload
|   |-- bitmaps
|   |-- colors
|   `-- doc
|-- vim-snipmate
|   |-- after
|   |   `-- plugin
|   |-- autoload
|   |-- doc
|   |-- ftplugin
|   |-- plugin
|   `-- syntax
|-- vim-snippets
|   |-- UltiSnips
|   |-- autoload
|   `-- snippets
|       |-- coffee
|       `-- javascript
`-- vundle
    |-- after
    |   |-- ftplugin
    |   `-- plugin
    |-- autoload
    |   `-- vundle
    |-- doc
    |-- ftplugin
    |-- plugin
    |-- syntax
    `-- test
        `-- files

139 directories

但是,当我尝试一些java代码来测试main代码片段时,

$ vi App.java
main

按下后给我以下结果/错误

mainsnipMateNextOrTrigger

:verbose imap snipMateNextOrTrigger 给我

No mapping found

finish在注释部分plugin/snipMate.vim,:verbose imap snipMateNextOrTrigger给了我以下信息,

i  snipMateNextOrTrigger * =snipMate#TriggerSnippet()
        Last set from ~/.vim/bundle/vim-snipmate/plugin/snipMate.vim

并在按下

Error detected while processing /home/prayag/.vim/bundle/vundle/autoload/snipMate.vim:                                                                              
line   15:
E122: Function 84_RemoveSnippet already exists, add ! to replace it

我在下面的配置中得到了相同的结果/错误.vimrc,

:imap  snipMateNextOrTrigger
:smap  snipMateNextOrTrigger

相同的配置适用于另一台ubuntu 13.04机器.

我一定是做错了什么但是弄不清楚.

参考

Vim:snipMate插件不会触发代码段完成

1 个回答
  • 首先,我建议你:set nocompatible从你的vimrc文件中删除.'cp'如果在启动时找到个人vimrc文件(不是系统vimrc文件),Vim会自动重置该选项,如果有的:source ~/.vimrc话,它可能会产生令人困惑的结果.

    对您的问题的完整答案将是一个非常大的故障排除流程图.这将是一件好事,但我不会那么努力.以下是我们在评论中用于诊断此问题的对话摘要.

    我安装了snipMate,但是当我进入"main<Tab>"插入模式时,我得到了"main<Plug>snipMateNextOrTrigger".

    什么做:verbose imap <Tab>:verbose set cpo?告诉你吗?检查:version"<size> version",其中<size>是Tiny,Small,Big,Huge(我可能会遗漏一些)之一.(问题可能是如何<Tab>映射,或者您可能处于兼容模式,或者您的vim版本可能不支持地图,或者可能不支持<Tab>地图中的表示法.)

    ":verbose imap <Tab>"显示" <Tab>"映射到"<Plug>snipMateNextOrTrigger"in "~/.vim/bundle/vim-snipmate/after/plugin/snipMate.vim",其他东西看起来正确.

    怎么样:verbose imap <Plug>snipMateNextOrTrigger?(问题似乎<Tab>是映射到某些东西;应该重新映射某些东西,但事实并非如此.)

    ":verbose imap <Plug>snipMateNextOrTrigger" 给我"找不到映射".

    那就是问题所在.文件plugin/snipMate.vim包含该行inoremap <silent> <Plug>snipMateNextOrTrigger <C-R>=snipMate#TriggerSnippet()<CR>.您没有该文件,它缺少该行,或者:source当vim启动时它不是d.或者可能在loaded_snips其他地方定义变量.查看文件,:scriptnames在启动vim后立即检查,并在其他启动文件中搜索"loaded_snips".我想还有其他可能性:imapclear,但是,这似乎不太可能.

    文件在那里,并且有正确的行.(起初我看了"after/plugin/snipMate.vim"而不是"plugin/snipMate.vim".)我检查了":scriptnames"并列出了它.我没有检查定义"loaded_snips"的其他文件,但我注释掉了

    if exists('loaded_snips') || &cp || version < 700
        finish
    endif
    

    并从另一个目录中的"snipMate.vim"收到错误.我删除了该文件,重新安装了snipMate,现在它可以工作了.

    2023-01-19 20:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有