플러그인이 활성화되어 있는지 확인하는 방법


15

vim-latexsuite적절한 파일을 열 때 파일 형식 플러그인 (예 :) 이 설치되어 활성화 되었는지 어떻게 확인할 수 있습니까? 인기있는 또 다른 편집기는 관련 "사소한 모드"가 활성화되어 있음을 나타냅니다. Vim에 상응하는 것은 무엇입니까?

답변:


20

파일 유형 플러그인 (예 : vim-latexsuite)이 설치되었는지 어떻게 확인할 수 있습니까

:scriptnames모든 소스 파일 목록을 사용할 수 있습니다 .

또 다른 옵션은 플러그인이로드되었는지 여부를 나타내는 변수를 확인하는 것입니다 recommended practice to allow the user to disable the loading of a given plugin.. 일반적으로 폴더 g:loaded_...내에서 변수 를 찾을 수 있습니다 <plugin_name>/plugin. 언급 한 플러그인경우을 사용할 수 있습니다 echo exists("loaded_libList").

적절한 파일을 열 때 활성화됩니까?

파일 유형 플러그인 인 경우 'filetype'옵션이 설정 되면 자동으로 활성화해야합니다 . 옵션이 현재 버퍼에 올바른지 확인할 수 있습니다.

:set filetype?

인기있는 또 다른 편집기는 관련 "사소한 모드"가 활성화되어 있음을 나타냅니다. Vim에 상응하는 것은 무엇입니까?

에 설명 된대로, 옵션을 통해 플러그인을 사용하거나 직접하거나, 같은 표시를 표시하도록 statusline을 사용자 정의 할 수 :help 'statusline'와에서 vi-improved.org .


6

Vim 플러그인에는 활성화 표시가 제공되지 않으며 적절한 설정에서는 필요하지 않습니다.

부작용 (일반적으로 매핑)을 쿼리하여 플러그인의 활성화 여부를 신속하게 확인할 수 있습니다. 예를 들어 NERDCommenter 매핑은로 시작 <Leader>c하므로 활성화에 대한 쿼리는입니다 :nmap <Leader>c. 매핑이 나열되면 플러그인이 활성화 된 것입니다. 사용자 정의 명령과 :autocmd플러그인 그룹에서도 동일하게 수행 할 수 있습니다 . 대부분의 플러그인은 g:loaded_pluginname확인할 수 있는 포함 가드 변수도 정의합니다 .

파일 유형 플러그인에도 동일하게 적용됩니다 (그리고 그 효과는 모두 버퍼 범위 여야합니다). 활성 플러그인을 결정하는 가장 중요한 요소는 파일 유형을 올바르게 감지하는 것입니다. 를 통해 쿼리 :setlocal filetype?하거나 / 항목을 'statusline'통해 이를 쿼리 할 수 ​​있습니다 .%y%Y


6

이 특별한 경우에는 만 사용 :scriptnames합니다. 우리는 ft 플러그인이로드 되었는지 확인 하기 위해 전역 변수 를 사용할 것으로 기대할 수 없습니다 -LaTeXSuite에는 플러그인이있을 수 있습니다. 기억할 수는 없습니다. ftplugin 스크립트가 많이 있다는 것이 확실합니다. 많은 ftplugin은 (적어도 Vim과 함께 제공되는 것들)을 사용하지만이 접근법은 확실히 확장되지 않습니다. 결과적으로 모든 ftplugin 이이 무의미한 변수를 사용하는 것은 아니며 주어진 ftplugin이 있는지 여부를 알기 위해 일반적인 변수 이름을 확인할 수 없습니다 예를 들어 C의 경우 22 ftplugins가 있으며 동일한 반복 제 가드를 사용하지 않습니다.b:did_ftplugin

그래서 :scriptname. Alas :scriptname는 인간의 눈에 많은 정렬되지 않은 결과를 제공합니다. 다행스럽게도 execute()(최근 기능) filter()구조에 왔습니다. 이 경우 라텍스 관련 vim 스크립트를 찾고

:echo filter(split(execute(':scriptname'), "\n"), 'v:val =~? "tex"') 
" or even "latex" instead of "tex"

또한 플러그인 관리자를 사용하는 경우 플러그인 관리자가 'runtimepath'옵션을 사용하고있을 가능성이 있습니다. 로 값을 표시 할 수 있습니다 :echo &rtp. 다음과 같이 값을 필터링 할 수도 있습니다.

:echo filter(split(&rtp), ','), 'v:val =~? "tex")

(이것은 플러그인 관리자가 귀하의 경우 플러그인 LaTeX-suite을 활성화했는지 여부를 알려줍니다. 관련 ftplugin이 올바르게로드되었는지 여부는 알려주지 않습니다 :scriptname.)


3

자동 명령으로 파일 유형 플러그인을 활성화하는 경우 Vim이 자동 명령을 실행할 때 자동으로 에코되도록 verbose = 9를 설정할 수 있습니다.

:set verbose=9

3

한 가지 방법은 다음에서 정규식 검색을 수행하는 것입니다 runtimepath.

if match(&runtimepath, 'MY-PLUGIN') != -1
    " ...
endif

vim-plug를 사용 하는 경우 일반적인 확인 방법은 다음과 같습니다.

function! PlugLoaded(name)
    return (
        \ has_key(g:plugs, a:name) &&
        \ isdirectory(g:plugs[a:name].dir) &&
        \ stridx(&rtp, g:plugs[a:name].dir) >= 0)
endfunction

용법:

if PlugLoaded('MY-PLUGIN')
    " ...
endif

충분하지 않다. 또한 플러그인 관리자와 함께 설치된 플러그인 만 처리합니다. 모든 경우에 플러그인 내에서 제공되는 ftplugin 스크립트를 처리하지는 않습니다. OP 질문이었습니다.
Luc Hermitte

0

vim-plug 를 사용하면 plugs로드 된 모든 플러그인과 이에 대한 일부 정보를 나열 하는 변수를 설정 합니다. YCM 또는 coc.nvim을 실행하고 있는지 확인해야 할 때 귀하의 질문을 직접 해결했습니다. has_key(plugs, "name")예를 들어을 실행하여 플러그인이로드되었는지 확인할 수 있습니다 .

if has_key(plugs, 'YouCompleteMe')
        call YCM()
endif
if has_key(plugs, "coc.nvim")
        call CocStart()
endif

참고 : 이것은 현재에 나열되어 있는지 여부 만 표시합니다 ( vimrc예 : 지연로드로 설정 한 경우는 아님).

    Plug 'scrooloose/nerdtree', {'on': 'NERDTreeToggle'}
    ...
if has_key(plugs, 'nerdtree')
        echo "HAS NERDTREE"
endif

nerdtree아직로드되지 않았 더라도 시작시 여전히 인쇄합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.