답변:
우선, 관련 문서는 :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
모든 도움말 태그가 생성됩니다.
:helptags ALL
.
:helptag ALL
내가보고해야하고, 제안에 대한 감사를 추가!
"플러그인 관리자를 대체 할 수 있습니까?"를 확장하려면
나는 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
@statox가 제공하는 답변은 매우 설명 적이지만, 도움말 파일을 직접 읽을 수 있기 때문에주의가 산만해질 수있는 새로운 사용자를위한 것입니다. 포인터에서해야 할 일을 간략하게 설명하고 싶습니다.
에서 pack/*/start
제공 한 디렉토리 아래에 디렉토리를 만듭니다 set packpath
. 나는에서했다 ~/.config/nvim/pack/*/start
. 참고 당신이 대신 원하는 디렉토리 이름을 사용할 수 *
있지만 완전히 생략 할 수없는, 내가 이유를 알고하지 않습니다. 예를 들어, 디렉토리를 사용 ~/.config/nvim/pack/foo/start
하거나 사용 ~/.config/nvim/pack/bar/start
하지 않을 수 있습니다 ~/.config/nvim/pack/start
.
pack/*/start
디렉토리로 이동 하여 패키지를 복제하십시오.
:scriptnames
모든 것이로드되었는지 확인하십시오. 일부 파일은 일부 후크 후에로드되기 때문에 모든 파트가로드되지 않더라도 걱정하지 마십시오 (예 :) autoload/plugin.vim
.:helptags ALL
모든 도움말 문서에 태그를 생성 할 수 있습니다. 수행 :helptags {dir}
디렉토리 아래에있는 도움말 문서 태그 생성 dir
. 예를 들어 플러그인을에 넣으면 ~/.config/nvim/pack/foo/plugin_name
을 수행하십시오 :helptags ~/.config/nvim/pack/foo/plugin_name/doc
. tags
플러그인의 doc 디렉토리에 파일 이 생성됩니다 . 디렉토리에서 플러그인을 제거하면 tags 파일이 사라지고 vim이 도움말 파일을 찾지 않으므로 doc 파일을 수동으로 제거 할 필요가 없습니다.
package
기능은 현대 플러그인 관리자와 경쟁하지 않기 위해 마침내 vimballs 및 관련 공룡을 종식시키기위한 것입니다. 보다 모호한 기능pathogen
에 의존하지 않는 경우에 대한 대체pathogen
기능입니다. 예를 들어 교체하려고 시도하지 않습니다Vundle
. 플러그인 모음으로서 패키지의 개념은 잘 생각되고 잠재적으로 유용하지만, 현대의 플러그인 관리자가 그것을 지원하지 않기 때문에 아무도 그것을 사용하지 않을 것을 두려워합니다. 플러그인 관리자는 아무도 사용하지 않기 때문에 지원하지 않습니다. 그것은 약간의 닭과 계란 문제입니다.