Vim의 자동 들여 쓰기 / 형식 코드?

할 수있을 때 더 많이 Vim을 사용하려고합니다. Vim과 Aptana와 같은 IDE 사이에서 가장 큰 장점 중 하나는 자동 들여 쓰기 기능입니다. .

자동 서식 코드 (HTML, CSS, PHP)의 수단이있어 제대로 들여 쓰기가됩니까?

그렇다면 어떻게 vim에 설치합니까? 플러그인을 아주 많이 이해하십시오. 이 스레드를 검토하려고했는데 더 혼란 스러웠습니다. vim 자동 들여 쓰기 동작을 변경하는 방법

댓글

  • 들여 쓰려는 언어를 명확히 하시겠습니까? 이미 vim에서 지원하는 '라면 추가 노력없이 이미 자동 들여 쓰기를해야합니다. 그렇지 않은 경우 플러그인을 얻을 수 있습니다.
  • 이상적으로는 Html / css 및 php

Answer

전체 파일을 자동으로 들여 쓰려면 :

gg =G 

설명 :

  • gg-파일 시작 부분으로 이동
  • G-파일 끝 부분으로 이동
  • = 들여 쓰기

댓글

  • 분리 할 수 있습니까? 일반적으로 g 자체는 무엇입니까? 그리고 = G?
  • @Chris는 편집을 보았습니다
  • 좋은 힌트, 나는 이것을 결코 몰랐습니다. 하지만 bash에서는 쓰레기 처리를합니다.
  • 파일을 열지 않고 쉘에서 gg=G를 실행하는 방법은 무엇입니까?
  • @takeshin 수 있습니다. 더 자세히 설명해주세요. 파일에 입력해야하나요 아니면 터미널에서 실행해야하나요

답변

기존 코드 자동 서식 지정에 대해 잘 모르지만 코드를 작성 중이고 자동 들여 쓰기가 필요한 경우 :

  • :set autoindent (또는 :set ai)는 들여 쓰기를 취소하기 위해 자동 들여 쓰기를 사용합니다.
  • Ctrl d (일명내어 쓰기) 코드
  • 들여 쓰기 할 탭 또는 공백-개인적으로 탭 사용
  • :set tabwidth=4 (또는 :set tw=4)는 탭에서 코드를 들여 쓸 공백 수를 제어합니다.
  • >> 명령은 현재 줄을 들여 씁니다. 숫자를 입력하면 4>>라고 말하면 현재 줄부터 시작하여 4 줄을 들여 씁니다.
  • 마찬가지로 << 명령은 줄 들여 쓰기를 해제합니다.

좋은 시작이되기를 바랍니다.

댓글

  • 기존 코드를 자동 들여 쓰려면 일반 모드에서 ={motion}를 사용하세요. 예 : =G는 현재 줄에서 파일 끝까지 모든 코드를 들여 씁니다. ==는 현재 줄을 들여 씁니다.
  • 또한 들여 쓰기 플러그인이로드되고 있는지 확인합니다 (예 : :filetype indent on 사용). / li>
  • set tw = 4는 TEXTWIDTH를 4로 설정

답변

자동 들여 쓰기 *.sh

~/.vimrc

filetype indent on set smartindent autocmd BufRead,BufWritePre *.sh normal gg=G 

댓글

  • Vim 또는 모든 편집기 도구를 사용한 편집에만 적용됩니까?
  • ~./vimrc는 vim 편집기에만 적용됩니다.

Answer

이 플러그인을 사용하면 코드에서 서식을보다 쉽게 수행 할 수 있습니다. . 외부 포맷터를 통합하고 vim의 들여 쓰기 기능을 대체합니다.

https://github.com/Chiel92/vim-autoformat

또한 서식과 들여 쓰기의 차이를 확인하세요. 들여 쓰기는 모든 줄 앞의 공백 만 수정하고 서식은 연산자 주변의 공백과 같은 다른 항목도 처리합니다.

답변

~/.vimrc 파일을 생성 / 수정하고 다음 줄을 추가합니다.

set autoindent 

댓글

  • 기존 답변에 아무것도 추가하지 않습니다 …
  • @jasonwryan 실제로 Hai Vu '의 답변에는 현재 파일에 대해서만 자동 들여 쓰기를 활성화하는 :set autoindent가 언급되어 있습니다. .vimrc 파일은 자동 들여 쓰기를 영구적으로 활성화합니다.
  • 귀하의 댓글은 이미 Rahul '의 답변에 언급되어 있으므로 게시하기 전에 생각하세요

답변

vim “의 자동 서식 / 들여 쓰기가 잘 작동합니다. 먼저 다음 줄을 ~/.vimrc에 넣으십시오.

filetype plugin indent on 

그런 다음 vim에서 파일을 열고

(gg는 커서를 첫 번째 줄로 이동합니다. =는 들여 쓰기 명령. G는 들여 쓰기 명령이 여기에서 마지막 줄까지 실행되도록 지시합니다.)

모든 줄이 들여 쓰기 된 것처럼 자동 서식이 정말 좋지 않은 경우 :scriptnames를 실행하고 .../indent/html.vim (또는 사용중인 언어)가 목록에 있습니다. 그렇지 않은 경우 ~/.vimrc가 올바른지 확인하세요. 또는 :filetype plugin indent on vim 명령 줄에서 :e

Answer

bash 스크립트 재 포맷을 수행하기 위해 제안 된 gg = G 솔루션은 스크립트를 셸 유형으로 설정하더라도 VIM에서 제대로 작동하지 않습니다. 대신 작동합니다.

shfmt -i 2 -ci script.sh

공백이 2 개인 모든 줄을 식별하고 그렇지 않으면 서식을 수정합니다.

답변

bash에서는 다음을 수행합니다.

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri| cut -c 5-|head --lines=-1|tail --lines=+3 

이것은 주석을 제거하고 “bash way”스크립트를 다시 들여 씁니다. 스크립트에 HEREDOCS가 포함되어 있으면 작동하지만 이렇게하면 :

source <(echo "Zibri () {";cat script_to_be_reindented.sh; echo "}") declare -f Zibri|head --lines=-1|tail --lines=+3 

모든 스크립트에서 작동하지만 전체 스크립트는 4 개의 공백으로 들여 쓰기됩니다. 자유롭게 수정하되 스크립트에 내 이름을 인용하고 게시하십시오! : D

댓글

  • 문제의 요점을 놓친 것 같습니다. 일련의 줄을 들여 쓰기보다는 OP가 다양한 언어에 대해 VIM 내에서 자동 들여 쓰기를 원했다고 생각합니다. 제쳐두고 원하는 경우 sed를 사용하여이 작업을 좀 더 직접 수행 할 수 있습니다. cat script_to_be_reindented.sh | sed 's#^# #g' (어, 음, 그래서 마크 다운은 공백을 탭으로 대체하지만 요점을 얻습니다)
  • 이 대답은 줄 앞에 공백을 삽입하고 모든 정렬을 재설정하는 것입니다. sed -i 's|^[ \t]\+| |' script.sh (즉, | | 내부의 공백 4 개이지만이 웹 사이트는 여러 공백을 하나로 필터링 함)로 동일한 작업 (마크 다운 제외)을 수행 할 수 있습니다. .

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다