Vim에서 C로 공백을 자동 들여 쓰기?


85

Eclipse와 Java를 사용하여 다소 버릇이 없었습니다. 리눅스 환경에서 C 코딩을하기 위해 vim을 사용하기 시작했는데, vim이 블록에 대해 적절한 간격을 자동으로 수행하도록하는 방법이 있습니까?

따라서 {를 입력 한 후 다음 줄에는 2 개의 공백이 들여 쓰기되고 해당 줄을 리턴하면 동일한 들여 쓰기가 유지되고}는 2 개의 공백을 뒤로 이동합니까?

답변:


135

다음 두 명령이 수행해야합니다.

보너스 포인트를 얻으려면 리눅스의 홈 디렉토리에있는 .vimrc라는 파일에 넣으십시오.


12
또한 cindent를 항상 사용하지 않고 C / C ++ 파일에만 사용하도록 ~ .vim / ftplugin / c.vim에 넣는 것이 좋습니다.
graywh

@graywh : pl, php, cpp, as, java 및 동일한 들여 쓰기를 원하는 다른 모든 파일은 어떻습니까? 각각에 대해 별도의 설정 파일을 만들어야합니까?
davr

17
나는 항상 'cindent'를 사용하는 것보다 훨씬 더 나은 Vim의 번들 들여 쓰기 스크립트 (: filetype indent on)에 의존 합니다.
graywh

3
파일 형식 들여 쓰기가 cindent를 사용하는 것보다 더 나은 이유도 여기에 설명 : vim.wikia.com/wiki/...
Jayen

1
자동 들여를 들어, 속기을 사용할 수 있습니다 : 세트 인공 지능
스피 Zesh

56

나는 vim의 탭에 대한 모든 것을 썼는데 , 당신이 묻지 않은 몇 가지 흥미로운 것들을 제공합니다. 중괄호를 자동으로 들여 쓰려면 다음을 사용하십시오.

두 개의 공백을 들여 쓰려면 (8 개 공백 탭 하나 대신 vim 기본값) :

vim이 여덟 개의 공백을 탭으로 변환하지 못하도록하려면 :

텍스트 블록의 들여 쓰기를 변경하려면 <및>를 사용하십시오. 저는 보통 이것을 블록 선택 모드 (v, 텍스트 블록 선택, <또는>)와 함께 사용합니다.

(나 (그리고 대부분의 다른 사람들)가 읽기가 어렵다고 생각하기 때문에 2 칸 들여 쓰기를 사용하지 말라고 말씀 드리고 싶지만, 이것은 또 다른 논의입니다.)


아주 멋진 블로그입니다. 나는 여전히 vim에 익숙하지 않지만 좋은 리소스가 있다는 것을 알게되어 기쁩니다.
zxcv

3
또한 shiftwidth 외에도 softtabstop 변경을 놓쳤습니다.
graywh

8

많은 vim의 기능 ( autoindent및 등 cindent)이 기본적으로 꺼져 있습니다. vim이 당신을 위해 무엇을 할 수 있는지 실제로 보려면 괜찮은 ~/.vimrc.

좋은 스타터는 $VIMRUNTIME/vimrc_example.vim. 사용해보고 싶다면

vim에서.

나는 실제로 ~/.vimrc잘 설명되어 있으므로 내용을 복사하여 vim 사용 방법을 배우기 시작하는 좋은 장소를 제안합니다 . 당신은 이것을 할 수 있습니다

이것은 당신의 현재를 덮어 쓸 ~/.vimrc것이지만, 만약 당신이 가지고있는 모든 것이 Davr이 제안한 들여 쓰기 설정이라면, 나는 그것을 땀을 흘리지 않을 것입니다. vimrc 예제가 당신을 위해 그것을 처리 할 것입니다. 예제에 대한 전체 연습과이 예제가 수행하는 작업은을 참조하십시오 :help vimrc-intro.


6

간단히 실행 :


1
내가 반대표를 던진 사람은 아니지만, "{"와 "}"를 입력 할 때 "set autoindent"가 자동 들여 쓰기를하지 않고 자동으로 공백을 2 개로 설정하지 않기 때문일 것입니다. 이것이 그들이 요구 한 것입니다.
Victor Zamanian 2013 년

3

가장 좋은 답변은 실제로 vim wikia에 설명되어 있다고 생각합니다.

http://vim.wikia.com/wiki/Indenting_source_code

"set autoindent"를 사용하지 않는 것이 좋습니다. 이 설명에서 내가 찾은 모든 것의 가장 좋은 기능은 파일 별 설정을 설정할 수 있다는 것입니다. 예를 들어, 예를 들어 이전 탭에는 4 개의 공백을 원하고 2 개의 공백을 원하기 때문에 Python 및 C ++로 프로그래밍하는 경우 특히 유용합니다. 후자의 공백.


0

그리고 항상 Spaces + Tabs에 대한이 훌륭한 설명을 기억하십시오.

http://www.jwz.org/doc/tabs-vs-spaces.html


2
그 남자의 주장은 무엇입니까? TAB 문자를 사용하지 않고 대신 하드 코딩 된 공백으로 채우는 것이 모든 사람의 문제를 해결하는 방법을 따르지 않습니다. 예를 들어, 파일을 열 수없고 자신의 기본 설정에 따라 들여 쓰기 너비를 표시 할 수 없습니다.
thomasrutter

1
이 사람의 솔루션이 훨씬 낫습니다. :) blogs.msdn.com/cyrusn/archive/2004/09/14/229474.aspx
thomasrutter

-1

시험:

sw = 2로 설정

ts = 2로 설정

smartindent 설정


도움말에 따르면 cindent는 smartindent보다 낫지 만 C와 유사한 코드에서만 작동합니다.
thomasrutter

smartindent는 더 이상 사용되지 않습니다 (C와 유사한 코드에만 해당됨). 파일 형식 들여 쓰기 스크립트가 훨씬 좋습니다.
graywh

권위있는 출처가 smartindent의 사용되지 않는 상태를 나타내는 위키 외에 @graywh?
memeplex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.