VIM에서 C프로그래밍..

sliver의 이미지

VIM에서 C프로그래밍을 하는데,

tab크기를 4로 놓고 쓰고 싶습니다.

그런데 set ts=4로 설정을 해도 cindent는 무조건 indent를 8칸 해버립니다.

cindent가 indent를 8칸이 아닌 4칸으로 하도록 설정하는 법을 알고 싶습니다.

그럼 미리 감사드립니다^^;

eyefree의 이미지

" 내가 설정해준 옵션
set nu

'*******************
set tabstop=4
set shiftwidth=4
'*******************
set nowrap
set nobackup
colors murphy

'** 사이의 명령을 .vimrc에 넣어주면, 탭과 블럭지정해서 미는 것이

전부 4칸이 됩니다. ^^

... Do It Now!!!

sliver의 이미지

정말 감사합니다~

잘 되네요..^^;

RedPain의 이미지

참고로 :set sw=4로 줄여 쓸 수도 있습니다. :)

cdpark의 이미지

tabstop은 바꾸지 않는 게 좋습니다.

대신 sw(shiftwidth)와 sts(softtabstop) 값만 바꿔주세요.

자세한 설명은 vim에서 :help tabstop 이라고 하면 나옵니다.

eungkyu의 이미지

저같은 경우도 sw와 sts만 바꿔서 사용합니다.

set sts=4
set sw=4

이런 식으로 해야 일반적으로 tabsize가 8인 것에도 맞출 수 있죠. :)

raymundo의 이미지

eungkyu wrote:
저같은 경우도 sw와 sts만 바꿔서 사용합니다.

set sts=4
set sw=4

이런 식으로 해야 일반적으로 tabsize가 8인 것에도 맞출 수 있죠. :)

아.. softtabstop 이란 게 따로 있었군요. 처음 알았습니다. 감사 :D 그런데 help tabstop 했을 때 나오는 문구에서,

Quote:

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.

이건 좀 문제가 있어 보이지 않나요? 이렇게 했더니만 4칸 들여 쓸 때는 스페이스를 삽입하고, 8칸 들여 쓸 때는 탭이 삽입되네요. (12칸이면 탭하나+스페이스4, 16칸이면 탭 둘...) 이 경우, tabstop=8 인 환경에서 보는 사람에게는 상관이 없겠지만, 별도로 tabstop 을 8이 아닌 다른 값으로 준 사람이 그 화일을 편집하는 경우 들여쓰기가 엉망이 되는군요.

차라리 noexpandtab 대신에 expandtab 을 설정하여서 모든 탭을 스페이스로 치환시켜 버리는게 누구의 편집기에서든 동일하게 보인다는 점에서는 더 나을 것 같습니다. 아니면 그냥 tabstop=4, shiftwidth=4 로 하는 게 위의 인용한 부분보다는 낫겠죠. tabstop 값이 다른 환경에서 봤을 때도 (cat 으로 출력하거나) 최소한 상대적인 들여쓰기는 유지될 테니까요. 제가 뭔가 잘못 짚고 있는 건지도?

좋은 하루 되세요!

purewell의 이미지

Quote:
set expandtab

expandtab을 세팅하면 <TAB>키에 대해 space를 넣어줍니다.

_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz

eminency의 이미지

raymundo wrote:
eungkyu wrote:
저같은 경우도 sw와 sts만 바꿔서 사용합니다.

set sts=4
set sw=4

이런 식으로 해야 일반적으로 tabsize가 8인 것에도 맞출 수 있죠. :)

아.. softtabstop 이란 게 따로 있었군요. 처음 알았습니다. 감사 :D 그런데 help tabstop 했을 때 나오는 문구에서,

Quote:

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.

이건 좀 문제가 있어 보이지 않나요? 이렇게 했더니만 4칸 들여 쓸 때는 스페이스를 삽입하고, 8칸 들여 쓸 때는 탭이 삽입되네요. (12칸이면 탭하나+스페이스4, 16칸이면 탭 둘...) 이 경우, tabstop=8 인 환경에서 보는 사람에게는 상관이 없겠지만, 별도로 tabstop 을 8이 아닌 다른 값으로 준 사람이 그 화일을 편집하는 경우 들여쓰기가 엉망이 되는군요.

차라리 noexpandtab 대신에 expandtab 을 설정하여서 모든 탭을 스페이스로 치환시켜 버리는게 누구의 편집기에서든 동일하게 보인다는 점에서는 더 나을 것 같습니다. 아니면 그냥 tabstop=4, shiftwidth=4 로 하는 게 위의 인용한 부분보다는 낫겠죠. tabstop 값이 다른 환경에서 봤을 때도 (cat 으로 출력하거나) 최소한 상대적인 들여쓰기는 유지될 테니까요. 제가 뭔가 잘못 짚고 있는 건지도?

저같은 경우 expandtab도 써봤는데요. 누구의 편집기에서나 동일하게 보이긴 하는 점은 좋지만 makefile이나 python 프로그래밍할 경우는 또 탭이 반드시 들어가야 되기 때문에 더 불편해지더군요. -_-;;

지금은 그냥 다 8로 맞춰놓고 씁니다. depth도 가급적 적게 들어가게 프로그래밍하는게 바람직하고...

노루가 사냥꾼의 손에서 벗어나는 것 같이, 새가 그물치는 자의 손에서 벗어나는 것 같이 스스로 구원하라 -잠언 6:5

purewell의 이미지

Quote:
저같은 경우 expandtab도 써봤는데요. 누구의 편집기에서나 동일하게 보이긴 하는 점은 좋지만 makefile이나 python 프로그래밍할 경우는 또 탭이 반드시 들어가야 되기 때문에 더 불편해지더군요. -_-;;

지금은 그냥 다 8로 맞춰놓고 씁니다. depth도 가급적 적게 들어가게 프로그래밍하는게 바람직하고...

syntax 폴더의 c.vim 에서만 세팅해주면 c/h/cpp/hpp 파일에만

적용이 됩니다. ^-^);

_____________________________
언제나 맑고픈 샘이가...
http://purewell.biz

cdpark의 이미지

purewell wrote:

syntax 폴더의 c.vim 에서만 세팅해주면 c/h/cpp/hpp 파일에만

적용이 됩니다. ^-^);

~/.vimrc에 autocmd 명령으로 넣으셔도 됩니다. syntax 폴더를 고치는 건 시스템 사용자 전체의 설정을 바꾸는 것이니깐요. 나중에 upgrade할 때마다 일일이 고쳐줘야 하는 것도 문제.

lhuijae의 이미지

au BufNewFile,BufReadPost *.java set cindent shiftwidth=4
au BufNewFile,BufReadPost *.c set cindent shiftwidth=4
au BufNewFile,BufReadPost *.C set cindent shiftwidth=4
au BufNewFile,BufReadPost *.html set cindent shiftwidth=4

전 이렇게 하고있습니다.. 윗분들하고 같네요.. 예전에 어디서 보고 그대로 붙여놓고 쓰고 있습니다..

그런데? au BufNewFile,BufReadPost 는 머죠?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.