<Tab>을 누르고 자동 들여 쓰기가 적용되는 경우 Vim 탭 크기 보려는 다른 사람은 반드시

탭 크기를 4에서 2로 변경하기로 결정했습니다. 왜 그렇지 않습니까? 코드를 보려는 다른 사람은 반드시 자신의 환경 설정을 사용할 수 있습니다.

그러나 질문이 있습니다.

Tab 키를 누르면 2가 삽입되지만 Vim의 자동 들여 쓰기는 여전히 4를 입력합니다. 2로 변경하려면 어떻게해야합니까?

관련이없는 또 다른 질문 : C 및 유사한 언어에 가장 적합한 들여 쓰기 스타일은 무엇입니까? 1TBS를 사용하고 있지만 선택할 수있는 것이 너무 많습니다. 그들 중 더 전문적이거나 선호되는 사람이 있습니까?



답변

shiftwidth‘를 ‘ ‘와 동일한 값으로 설정하십시오 tabstop. 더 좋은 방법은 최근에 충분한 버전의 Vim을 사용하는 경우 ‘ shiftwidth‘를 0 tabstop으로 설정하면 ‘ ‘이 설정된 값으로 기본 설정됩니다.


답변

Vim 들여 쓰기 옵션

Vim은 주로 들여 쓰기 크기에 대해 3 가지 설정을 사용합니다.

  • tabstop, ts: Vim이 여는 파일에서 테이블을 발견하면 탭이 {ts} 공백으로 표시됩니다 ( tabstop help 참조 또는 :help tabstopVim 입력 ).
  • softtabstop, sts: 파일을 편집 할 때 탭 키를 누르면 Vim은이 설정을 사용하여 삽입 된 테이블의 너비를 정의합니다 ( softtabstop help 참조 또는 :help softtabstopVim 입력 ).
  • shiftwidth, sw: 들여 쓰기, 중 자동 들여 물건 또는 일반적인 사용시 빔이 사용하는 공간의 수 >>, <<명령. Heptite가 알았 듯이,이 특별한 경우에 당신이 찾고있는 것입니다. 그리고 Vim의 최신 버전에서는 실제로이 옵션을 정의하지 않으면에서 정의한 shiftwidth값을 사용 tabstop합니다. 매우 편리합니다 ( shiftwidth 도움말 참조 ).

예를 들어 다음 설정을 사용하는 경우

set sts=4
set ts=2
set sw=8

이들은 다음과 같은 동작을 생성합니다.

  1. 파일에 테이블을 삽입하면 4 칸 너비의 들여 쓰기가 생성됩니다.
  2. 당신은 다음과 같이 tabstop2로 설정되어,이 사실이 도표화에 해당 될 것입니다. 이것은 확인하기가 매우 쉽습니다. listlistchars옵션을 사용하여 표를 표시하십시오.
  3. 을 사용하여 줄을 들여 쓰면 들여 쓰기 >>폭이 8 칸이됩니다 (따라서 tabstop위와 같은 값을 기준으로 4 개의 표에 해당함 ).

Vim 들여 쓰기 권장 사항 (Vim 문서)

에서 tabstop(도움 :help tabstop빔의) :

There are four main ways to use tabs in Vim:
  1. Always keep 'tabstop' at 8, set 'softtabstop' and 'shiftwidth' to 4
    (or 3 or whatever you prefer) and use 'noexpandtab'.  Then Vim
    will use a mix of tabs and spaces, but typing <Tab> and <BS> will
    behave like a tab appears every 4 (or 3) characters.
  2. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use
    'expandtab'.  This way you will always insert spaces.  The
    formatting will never be messed up when 'tabstop' is changed.
  3. Set 'tabstop' and 'shiftwidth' to whatever you prefer and use a
    |modeline| to set these values when editing the file again.  Only
    works when using Vim to edit the file.
  4. Always set 'tabstop' and 'shiftwidth' to the same value, and
    'noexpandtab'.  This should then work (for initial indents only)
    for any tabstop setting that people use.  It might be nice to have
    tabs after the first non-blank inserted as spaces if you do this
    though.  Otherwise aligned comments will be wrong when 'tabstop' is
    changed.

나는 개인적으로 주로 2 칸 넓이의 도표로 두 번째 솔루션을 사용합니다.

set ts=2
set sts=2
set et     "expand tabs to spaces

답변

http://vim.wikia.com/wiki/Indenting_source_code 에 따르면 , ‘filetype plugin indent on’명령은 프로그램이 Vim 설치의 indent 서브 디렉토리에있는 파일 유형별 들여 쓰기 스크립트를 사용하게합니다. 또한이 페이지에는 C 및 C ++ 파일에서 ‘cindent’가 자동으로 사용되며 해당 명령을 수동으로 사용할 필요가 없다고 나와 있습니다.

Vim에 대해서는 익숙하지 않지만 가끔은 기본적인 텍스트 편집에만 사용하기 때문에 Vim의 기본 자동 들여 쓰기 크기를 사용하기 위해 ‘cindent’명령을 수동으로 발행하려고 시도합니다. 그래도 작동하지 않으면 ‘filetype plugin indent on’을 시도하고 스크립트를 직접 편집하여 원하는 들여 쓰기를 얻을 수 있습니다.