Vim이 YAML 파일의 대시 기호에서 올바르게 반응하지 않아 형식이 깨집니다.
예를 들어 다음과 같은 블록이 있습니다.
handlers:
- name: restart exim4
service: name=exim4 state=restarted
I 입력을 마치면 restart exim4
및 입력 service:
빔 내 마지막 reindents service
라인 :
handlers:
- name: restart exim4
service: name=exim4 state=restarted
따라서 Vim은 문장을 열 단위 로 정렬하려고 하지만 YAML에서 필요한 것은 아닙니다. 두 개의 값으로 배열을 만들고 싶습니다.
어떻게 고칠까요?
답변
이 플러그인을 설치하십시오.
https://github.com/chase/vim-ansible-yaml
Ansible을 염두에두고 만들어졌지만 이론적으로는 모든 종류의 YAML 파일에서 작동합니다. 안타깝게도 ansible 관련 파일로 작업하지 않는 경우 : set filetype = ansible을해야합니다.
답변
콜론 뒤에 캐리지 리턴을 눌렀을 때 멋진 2 공백 YAML을 기본값으로 사용하기 위해 다음을 추가했습니다 .vimrc
.
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
이것은 OP의 예상 결과에 대한 대시와도 잘 어울립니다.
답변
:
키 를 입력 할 때 다시 들여 쓰기를 비활성화 할 수 있습니다 .
:set indentkeys-=<:>
~/.vimrc
파일을 편집 하고 다음 줄을 추가하십시오.
filetype plugin indent on
autocmd FileType yaml setl indentkeys-=<:>
주 : autocmd
이후에 온다 filetype
.
당신은 입력하여 reindent을 트리거 할 수 있습니다 CTRL-F에 삽입 예를 들어, 모드 :
hello: world
foo: bar<C-F>
답변
이 자동 명령을 사용하여 Vim이 YAML 파일을 올바르게 들여 쓰도록 할 수 있습니다 ( .vimrc
) :
" Fix auto-indentation for YAML files
augroup yaml_fix
autocmd!
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab indentkeys-=0# indentkeys-=<:>
augroup END
기본적으로 YAML 파일의 경우 Vim에 다음을 지시합니다.
- 들여 쓰기를 위해 2 개의 공백을 사용하십시오.
- 탭 대신 공백을 사용하십시오.
- 줄
#
의 시작 부분에 주석 문자 ( ) 또는 콜론 을 삽입 한 후 줄 다시 들여 쓰기를 건너 뜁니다 .
답변
YAML에 주석을 추가하여이 파일에 대한 Vim 특수 구성을 알릴 수 있습니다. 예를 들면 :
# vim: set shiftwidth=2 tabstop=2 softtabstop=-1 expandtab:
foo:
bar:
- a
- b
그러면 기본 vim과 함께이 파일을 사용하는 모든 사람이 파일 작성자의 구성을 공유 할 수 있습니다. 특히 협력 할 때 잘 작동합니다.
답변
augroup
yaml에 대한 내용은 다음과 같습니다 .
augroup filetype_yaml
autocmd!
autocmd BufNewFile,BufReadPost *.{yaml,yml} set filetype=yaml foldmethod=indent
autocmd FileType yaml |
setlocal shiftwidth=2 |
setlocal softtabstop=2 |
setlocal tabstop=2
augroup END
답변
https://github.com/stephpy/vim-yaml 이 훌륭하게 작동하는 것을 발견했습니다 . yaml 파일의 들여 쓰기 (및 구문 강조)를 수행하는 vim 플러그인입니다. 설치하면 질문 한 특정 문제도 해결됩니다.
플러그인을 설치해야하며 (GitHub 리포지토리의 doco 참조) filetype=yaml
들여 쓰기를 수정할 수만 있으면됩니다. 둘 다 도움이 될 것입니다
- 제공 한 스 니펫을 입력 할 때 또는
- yaml이 이미 작성되어있는 경우이를 선택 (
V
라인 단위 선택의 경우j
또는k
더 많은 라인 선택) 한 다음 다음을 사용 하여 vim 형식을 트리거 할 수 있습니다.=