Vim8 패키지 기능은 무엇이며 어떻게 사용해야합니까?


답변:


74

우선, 관련 문서는 :h packages새로 컴파일 된 Vim8 버전과 여기 Github 에서 찾을 수 있습니다 .

첫 번째로 중요한 참고 사항은 어휘에 관한 것입니다. Vim8에서 패키지는 다음과 같이 정의됩니다.

Vim 패키지는 하나 이상의 플러그인을 포함하는 디렉토리입니다.

이는 사용자가 동일한 아카이브에서 모든 플러그인을 관리 할 수 ​​있도록 새로운 패키지 관리자가 작성되었음을 의미합니다. 이 문서에는 다음과 같은 장점이 있습니다.

  • 패키지는 아카이브로 다운로드하여 자체 디렉토리에 압축을 풀 수 있습니다. 따라서 파일은 다른 플러그인의 파일과 혼합되지 않습니다. 이를 통해 쉽게 업데이트하고 제거 할 수 있습니다.

  • 패키지는 자식, 수은 등의 저장소 일 수 있습니다. 그렇게하면 업데이트가 정말 쉬워집니다.

  • 패키지는 서로 의존하는 여러 플러그인을 포함 할 수 있습니다.

  • 패키지에는 시작시 자동으로로드되는 플러그인과와 함께 필요할 때만로드되는 플러그인이 포함될 수 있습니다 :packadd.

아이디어는 다음과 같은 구조의 모든 플러그인을 포함하는 폴더를 만드는 것입니다.

$HOME/.vim/pack/my-plugins/
                        start/
                            foo/
                                plugin/
                                    foo.vim
                                syntax/
                                    some.vim
                            bar/
                                plugin/
                                    bar.vim
                        opt/
                            buzz/
                                plugin/
                                    buzz.vim

폴더 배치는 옵션으로 정의됩니다 packpath(참조 :h 'packpath').

폴더 구조의 중요성에 유의하십시오.

  • start폴더에는 시작시 자동으로로드되는 플러그인이 포함되어 있습니다.
  • opt폴더에는 "옵션"플러그인이 포함되어 있으며 packadd명령 과 함께로드됩니다 .
  • 하위 폴더 ( plugin, autoload, doc, ...)는 플러그인에서 사용하고있는 것들입니다.

다음은 폴더를 요약 한 것입니다.

start/foobar/plugin/foo.vim     " always loaded, defines commands
start/foobar/plugin/bar.vim     " always loaded, defines commands
start/foobar/autoload/foo.vim   " loaded when foo command used
start/foobar/doc/foo.txt        " help for foo.vim
start/foobar/doc/tags           " help tags
opt/fooextra/plugin/extra.vim   " optional plugin, defines commands
opt/fooextra/autoload/extra.vim " loaded when extra command used
opt/fooextra/doc/extra.txt      " help for extra.vim
opt/fooextra/doc/tags           " help tags

이러한 파일이 제 위치에 있으면 Vim을 열면 플러그인이로드되어 start에서 opt사용할 수있게됩니다 :packadd.


이제이 기능이 기존 플러그인 관리자를 대체 할 수 있습니까?

면책 조항 : 이 부분은 약간 의견이있을 수 있습니다.

이 새로운 패키지 관리자의 접근 방식은 일부 플러그인을 포함하는 하나 또는 여러 개의 아카이브를 관리하기 때문에 이전에 사용했던 플러그인 관리자와는 다릅니다.

기본적으로 패키지 관리자는 플러그인을 하나씩 업데이트하거나, Github 주소에서 자동으로 가져 오거나 활성화 / 비활성화하려는 플러그인을 선택하는 기능을 제공하지 않습니다.

실제로 사용하지 않는 것이 정말 편리하지는 않지만 (특히 중첩 된 버전 제어 리포지토리를 처리하는 것이 번거로운 작업 일 수 있기 때문에) 플러그인 관리자를보다 효율적으로 만드는 경우가 있습니까?

이제 기존 플러그인을 이동하여 패키지 관리자에 필요한 구조를 채택하고 파일 시스템에서 직접 관리하는 것을 상상할 수 있습니다. 이 새로운 기능을 사용하기 위해 랩퍼가 생성 될 수 있습니다.


편집 @Sato Katsura가 제안한대로 여기에 helptags명령 에 대한 참고 사항이 있습니다. Vim8 커밋은 helptag문서 에서 두 줄을 도입했습니다 .

:helpt[ags] [++t] {dir}

Generate the help tags file(s) for directory {dir}.
When {dir} is ALL then all "doc" directories in 'runtimepath' will be used.

이는 새로운 패키지 관리자가 사용자 아카이브에 넣은 도움말 태그를 쉽게 생성 할 수 있음을 의미합니다. 단일 명령으로 :helptags ALL모든 도움말 태그가 생성됩니다.


11
좋은 요약입니다. 이 package기능은 현대 플러그인 관리자와 경쟁하지 않기 위해 마침내 vimballs 및 관련 공룡을 종식시키기위한 것입니다. 보다 모호한 기능 pathogen에 의존하지 않는 경우에 대한 대체 pathogen기능입니다. 예를 들어 교체하려고 시도하지 않습니다 Vundle. 플러그인 모음으로서 패키지의 개념은 잘 생각되고 잠재적으로 유용하지만, 현대의 플러그인 관리자가 그것을 지원하지 않기 때문에 아무도 그것을 사용하지 않을 것을 두려워합니다. 플러그인 관리자는 아무도 사용하지 않기 때문에 지원하지 않습니다. 그것은 약간의 닭과 계란 문제입니다.
Sato Katsura

2
관련 없음 :에 대한 메모를 추가 할 수 있습니다 :helptags ALL.
Sato Katsura

1
@Sato vimballs에 대한 메모에 감사드립니다 : 나는 그들을 사용하지 않기 때문에 그것에 대해 생각조차하지 않았지만 이제는 당신이 그것을 언급 한 것이 분명해 보입니다. 나는 "아무도 그것을 사용하지 않을 것"이라는 것에 동의합니다. 를 들어 :helptag ALL내가보고해야하고, 제안에 대한 감사를 추가!
statox

제외 토론을 채팅 으로 옮겼습니다 .
Martin Tournoij

4
minpac 은 Vim 8 (및 NeoVim)의 새로운 패키지 관리자입니다. Vim 8 패키지 위에 빌드되어 update플러그인 또는 플러그인에 명령을 제공 clean합니다 (사용하지 않는 플러그인 제거). 보너스 포인트의 경우 새로운 작업 제어 기능을 사용하여 여러 업데이트를 병렬로 수행합니다. 나는 그것이 더 유망한 UX로 내장 패키지를 향상시키기 때문에 정말 유망하다고 생각합니다.
nelstrom

11

"플러그인 관리자를 대체 할 수 있습니까?"를 확장하려면

나는 Vundle을 사용했지만 환상적 이었지만 이제는 18 줄 정도의 bash로 대체했습니다.

pack 디렉토리의 하위 폴더를 사용하여 관련 플러그인을 그룹화하는 것이 유용하다는 것을 알았습니다. 예 : "구문"또는 "루비"

관련 배쉬 예제는 다음과 같습니다. 파일에 넣고 실행하십시오.

https://stories.abletech.nz/get-rid-of-your-vim-plugin-manager-7c8ff742f643#.abnjauzgk 에서 주제에 대한 추가 토론

#!/usr/bin/env bash
# This file lives in ~/.vim/pack/install.sh
# Remember to add executable: chmod +x ~/.vim/pack/install.sh
#
# Create new folder in ~/.vim/pack that contains a start folder and cd into it.
#
# Arguments:
#   package_group, a string folder name to create and change into.
#
# Examples:
#   set_group syntax-highlighting
#
function set_group () {
  package_group=$1
  path="$HOME/.vim/pack/$package_group/start"
  mkdir -p "$path"
  cd "$path" || exit
}
# Clone or update a git repo in the current directory.
#
# Arguments:
#   repo_url, a URL to the git repo.
#
# Examples:
#   package https://github.com/tpope/vim-endwise.git
#
function package () {
  repo_url=$1
  expected_repo=$(basename "$repo_url" .git)
  if [ -d "$expected_repo" ]; then
    cd "$expected_repo" || exit
    result=$(git pull --force)
    echo "$expected_repo: $result"
  else
    echo "$expected_repo: Installing..."
    git clone -q "$repo_url"
  fi
}
(
set_group ruby
package https://github.com/tpope/vim-rails.git &
package https://github.com/tpope/vim-rake.git &
package https://github.com/tpope/vim-bundler.git &
package https://github.com/tpope/vim-endwise.git &
wait
) &
(
set_group syntax
package https://github.com/kchmck/vim-coffee-script.git &
package https://github.com/tpope/vim-markdown.git &
package https://github.com/ap/vim-css-color.git &
wait
) &
(
set_group colorschemes
package https://github.com/altercation/vim-colors-solarized.git &
wait
) &
wait

4

@statox가 제공하는 답변은 매우 설명 적이지만, 도움말 파일을 직접 읽을 수 있기 때문에주의가 산만해질 수있는 새로운 사용자를위한 것입니다. 포인터에서해야 할 일을 간략하게 설명하고 싶습니다.

  1. 에서 pack/*/start제공 한 디렉토리 아래에 디렉토리를 만듭니다 set packpath. 나는에서했다 ~/.config/nvim/pack/*/start. 참고 당신이 대신 원하는 디렉토리 이름을 사용할 수 *있지만 완전히 생략 할 수없는, 내가 이유를 알고하지 않습니다. 예를 들어, 디렉토리를 사용 ~/.config/nvim/pack/foo/start하거나 사용 ~/.config/nvim/pack/bar/start하지 않을 수 있습니다 ~/.config/nvim/pack/start.

  2. pack/*/start디렉토리로 이동 하여 패키지를 복제하십시오.

  3. n / vim을 시작하고 :scriptnames모든 것이로드되었는지 확인하십시오. 일부 파일은 일부 후크 후에로드되기 때문에 모든 파트가로드되지 않더라도 걱정하지 마십시오 (예 :) autoload/plugin.vim.
  4. 제거하려면 패키지를 복제 한 디렉토리를 제거하십시오. 다른 작업을 수행 할 필요가 없습니다.
  5. 수행 :helptags ALL모든 도움말 문서에 태그를 생성 할 수 있습니다. 수행 :helptags {dir}디렉토리 아래에있는 도움말 문서 태그 생성 dir. 예를 들어 플러그인을에 넣으면 ~/.config/nvim/pack/foo/plugin_name을 수행하십시오 :helptags ~/.config/nvim/pack/foo/plugin_name/doc. tags플러그인의 doc 디렉토리에 파일 이 생성됩니다 . 디렉토리에서 플러그인을 제거하면 tags 파일이 사라지고 vim이 도움말 파일을 찾지 않으므로 doc 파일을 수동으로 제거 할 필요가 없습니다.

2

새로운 형식은 병원체와 동등한 것으로 생각할 수 있으므로 원하는 플러그인을 다운로드 할 수있는 관리자를위한 공간이 여전히 남아 있습니다. 이 새로운 팩 형식을 활용하는 몇 가지 새로운 플러그인 관리자가 있지만 관리하는 데 어려움을 겪고 있기 때문에 Vire를 만들었습니다 vimrc. 여러 대의 컴퓨터가 있고 동일한 구성을 원하는 경우 Vire를 사용하면 매우 쉽습니다.


여러 개의 WINDOWS 시스템이 있고 동일한 구성을 원할 경우 ... FTFY
Dan J.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.