2009-08-13 3 views
1

나는 코드를 들여 쓰는 vim에서 cindent, smartindent 및 = % 기능을 좋아합니다. 하지만이 문제가 하나 있는데, 8 칸 공백으로 모든 것을 들여 쓰며, 중첩 된 if가 없으면 처음부터 너무 많은 중첩 된 if를 가지는 것이 다른 질문입니다.cindent, smartindent <esc> = vim의 기능들

4 int main() 
    5 { 
    6   if(x) 
    7   { 
    8     if(u) 
    9     { 
10       if(y) 
11       { 
12       } 
13     } 
14   } 
15 } 

ts = 1로 설정하려고했지만 여전히 작동하지 않습니다.

이러한 기능을 사용하는 동안 기본 들여 쓰기 수준을 4 칸으로 만들 수있는 방법이 있습니까?

설정 sw = 4로 설정하면 문제가 해결됩니다. 이상하게도 vim이 항상 나를 놀라게한다.

+0

많은 중첩 된 if가있는 경우 잘못된 일을하고 정상적인 경우를 테스트 할 수 있습니까? http://stackoverflow.com/questions/114342/what-are-code-smells-what-is-the-best-way-to-correct-them/223881#223881 – hlovdal

+0

@hlovdal : 아니요. 너무 많은 ifs가 없습니다. , 그냥 공간을 적게하여 멋지게 보이게하는 방법을 원했습니다 :) –

답변

7

나는 을 찾고 있다고 생각한다. sw.

편집 : 문서에서 몇 따옴표 :

  • shiftwidth : 자리의 수 (자동) 들여 쓰기의 각 단계에 사용합니다. | 'cindent'|, | >> |, |에 사용됩니다. < < | 등

  • tabstop :의 파일 개수의 자리의 수하는 <Tab>.

  • expandtab : 삽입 모드에서 : 적절한 수의 공백을 사용하여 <Tab>을 삽입하십시오. 공백은 '>'및 '<'명령과 '자동 들여 쓰기'가 켜져있는 들여 쓰기에서 사용됩니다.

  • smarttab : 켜기로 설정하면 라인 앞의 <Tab>에 'shiftwidth'에 따라 공백이 삽입됩니다. 'tabstop'은 다른 장소에서 사용됩니다.

스타일에 따라 두 가지 이상을 변경해야 할 수 있습니다. 더 많은 설명이 필요한 경우 도움말 항목을 살펴보십시오!

+0

sw는 >>, <<에 어떻게 작용합니까? 나는 (1 << 3)과 cout << "var"을 시도했다; 그리고 그것은 어떤 공간도주지 않는다, 나는 무엇인가 놓치고있다? –

+0

삽입 모드에서 타이핑 할 때가 아니라 정상 (또는 시각적) 모드에서 사용될 때는'>>'입니다. 현재 줄을 들여 씁니다. –

+0

'<<' and '>>'접두사를 여러 번 들여 쓰기 할 수 있지만 비주얼 모드에서만 사용할 수 있습니다. 일반 모드에서 숫자는 들여 쓰기 할 줄 수를 지정합니다. – Cascabel

1

시도 대신 탭의 공간을 사용하려는 경우 shiftwidth (sw), 4

에 그리고 설정, set expandtab (et). 그런 다음 :retab을 사용하여 모든 탭을 공백으로 변경할 수 있습니다.