타격 시 Vim 탭 크기자동 들여쓰기가 적용되는 경우

타격 시 Vim 탭 크기자동 들여쓰기가 적용되는 경우

탭 크기를 4에서 2로 변경하기로 결정했습니다. 왜 안 될까요? 코드를 보고 싶은 사람은 누구나 자신의 기본 설정을 사용할 수 있습니다.

그러나 질문입니다.

Tab 키를 누르면 2가 삽입되지만 Vim의 자동 들여쓰기는 여전히 4를 삽입합니다. 2를 만들려면 무엇을 변경해야 하나요?

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

답변1

shiftwidth' ' 을(를) ' '과 동일한 값으로 설정해 보세요 tabstop. 더 좋은 점은, 최신 버전의 Vim을 사용하고 있다면 ' shiftwidth'을 0으로 설정하면 기본값으로 ' tabstop'가 설정된 값이 됩니다.

답변2

Vim 들여쓰기 옵션

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

  • tabstop, ts: Vim은 열려는 파일에서 표를 발견하면 탭을 {ts} 공백으로 표시합니다(참조:탭스톱 도움말, 또는 :help tabstopVim을 입력하세요).
  • softtabstop, sts: 파일을 편집하고 탭 키를 누르면 Vim은 이 설정을 사용하여 삽입된 표의 너비를 정의합니다(참조:소프트탭 도움말, 또는 :help softtabstopVim을 입력하세요).
  • shiftwidth, : Vim이 자동 들여쓰기나 일반적인 , 명령을 sw사용하여 들여쓰기할 때 사용하는 공백 수입니다 . Heptite가 알아차렸듯이 이것이 이 특별한 경우에 당신이 찾고 있던 것입니다. 그리고 최신 버전의 Vim에서는 실제로 이 옵션을 정의하지 않고 . 매우 편리합니다(참조>><<shiftwidthtabstop교대폭 도움말).

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

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

이로 인해 다음과 같은 동작이 발생합니다.

  1. 파일에 표를 삽입하면 4칸 너비의 들여쓰기가 생성됩니다.
  2. 2로 설정되어 있으므로 tabstop이는 실제로 2개의 표와 동일합니다. 이는 확인하기 매우 쉽습니다. listlistchars옵션을 사용하여 표를 표시하면 됩니다.
  3. 를 사용하여 줄을 들여쓰면 들여쓰기 너비는 8칸이 됩니다(따라서 위와 동일하게 값을 >>기준으로 4개의 표에 해당 ).tabstop

여기에 이미지 설명을 입력하세요

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

도움말 에서 tabstop( :help tabstopVim에서) :

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

답변3

에 따르면http://vim.wikia.com/wiki/Indenting_source_code, 'filetype Plugin indent on' 명령을 사용하면 프로그램이 Vim 설치의 indent 하위 디렉터리에 있는 파일 형식별 들여쓰기 스크립트를 사용하게 됩니다. 해당 페이지에는 C 및 C++ 파일에서 'cindent'가 자동으로 사용되며 해당 명령을 수동으로 사용할 필요가 없다고 명시되어 있습니다.

저는 Vim을 가끔 기본 텍스트 편집에만 사용하기 때문에 그다지 익숙하지 않습니다. 하지만 해당 코드에 대해 Vim의 기본 자동 들여쓰기 크기를 사용하려면 'cindent' 명령을 수동으로 실행해 보겠습니다. 그래도 작동하지 않으면 '파일 형식 플러그인 들여쓰기 설정'을 시도하고 스크립트를 직접 편집하여 원하는 들여쓰기를 얻을 수 있습니다.

관련 정보