2016-09-07 6 views
0

Gvim이 이상하게 작동하고 이유를 찾을 수 없습니다. Vundle을 사용하고 내 .vimrc에 선언 된 모든 플러그인이 올바르게 작동합니다. .vim/after/ftplugin/java.vim에 몇 가지 추가 설정 및 플러그인을 선언했습니다.ftplugin에 선언 된 Vim 플러그인이 작동하지 않습니다.

매핑이 제대로 작동하지만 플러그인이 작동하지 않습니다. 내 현재 gvim을 세션에서 다른 파일을 선택하면, 나는 그 오류 메시지를 얻을 :

Error detected while processing function vundle#config#bundle[2]..<SNR>14_check_bundle_name: 
line 2: 
Vundle error: Name collision for Plugin Raimondi/delimitMate. Plugin Raimondi/delimitMate previously used the name "delimitMate". Skipping Plugin Raimondi/delimitMate. 
Vundle error: Name collision for Plugin artur-shaik/vim-javacomplete2... 
[comment: same error message for all plugins declared in the ftplugin] 

은 내가 플러그인이 갑자기 작동 :VundleInstall을 실행하면 내가 파일을 변경할 때 (오류 메시지는 더 머물 것을 발견 명령을 사용하면 플러그인이 설치됩니다). 여기

는 내 .vimrc의 시작이다 :

syntax on 
set guifont=Inconsolata\ Medium\ 12 
set nocompatible 
set t_Co=256 

filetype off 

set rtp+=~/.vim/bundle/Vundle.vim 
call vundle#begin() 

" let Vundle manage Vundle, required 
Plugin 'VundleVim/Vundle.vim' 

"[comment: all plugins I use for every filetype] 

call vundle#end()   " required 

filetype plugin indent on 

이 내 java.vim 파일 : 우분투 16.04

filetype off 
"to automatically close brackets 
Plugin 'Raimondi/delimitMate' 

"omni-complete for Java 
Plugin 'artur-shaik/vim-javacomplete2' 

"use tab to navigate through insert completion 
Plugin 'ervandew/supertab' 
filetype plugin indent on 

"needed to make javacomplete2 working properly 
autocmd FileType java setlocal omnifunc=javacomplete#Complete 

내 OS된다.

답변

0

귀하의 모든 :Plugin 명령은 이이 사이에 선 있어야한다.

+0

게으른로드 란 정확히 무엇입니까? – Jonas

+1

특정 상황에서 특정 플러그인을로드하는 것입니다. Vundle에는 해당 기능이 없지만 Plug는 않습니다. – romainl

2

ftplugins이 무엇을하고 무엇을 포함해야하는지에 대해 오해했습니다.

Ftplugins는 새 버퍼를 만들거나 열 때마다 버퍼마다 한 번로드됩니다.

  • :let b:option = value
    • :map <buffer> keybinding action
    • :iab <buffer> keybinding expanded sequence
    • :setlocal option[=value]
    • :command -b CommandName :Action
    • 가 localleader을 설정 (그러나 어떤 전에 끝났다 확신 할 수 :

      그들은 완충 지역의 정의를 포함하기위한 것입니다 다른 ftplugin

    그런 다음 :runtime 또는 :so과 동일한 방식으로 작동하는 다른 작업을로드 할 수 있습니다. 그것들은 함수를 포함 할 수 있지만 Vim7 이후 자동로드 플러그인으로 정의하는 것이 가장 좋습니다. 버퍼 로컬 메뉴 정의가 포함될 수 있지만 표준이 아니기 때문에 plugin이 필요합니다.

    그들은 정의한 것과 같이 전역 정의를 포함하지 않을 것입니다. 이후에 활성화 된 전역 플러그인을로드 할 장소가 아닙니다.

    저는 일부 플러그인 관리자가 우리가 작업하는 파일 유형에 따라 플러그인을로드한다는 것을 알고 있습니다. 제대로 정의 된 ftplugins와 몇 가지 매핑을 정의하고 함수를 자동로드 플러그인으로 유지하는 가벼운 플러그인을 사용할 때 이러한 필요성을 공유하지 못했습니다.

    마지막으로, ftplugins에는 anti reinclusion guard가 있어야합니다. 전형적인 시나리오에서는 그렇게 유용하지 않습니다. 많은 사람들이이 목적을 위해 b:did_ftplugin을 사용합니다. 그러나이 변수는 테마와 같은 많은 ftplugins (대괄호 쌍을 전문으로하는 하나의 파일 유형)를 선호하므로이 변수를 피하십시오. one that은 다음 유형의 switch 문을 자동으로 확장하도록 매핑을 정의합니다. 변수, one that은 제어문에 대한 약어를 정의합니다.결과적으로 모든 파일에 대해 동일한 가드를 사용할 수 없습니다. 당신이 절대적으로 게으른 로딩을 필요로하는 경우

    call vundle#begin() 
    
    " :Plugin commands go here 
    
    call vundle#end() 
    

    another plugin manager을 시도해보십시오

  • 관련 문제