경력이 좀 오래 되신 분하고 vi 에디터에 대한 얘기 하다가 나온 얘긴데요.
인덴트를 tab을 안쓰고 스페이스로 하신다고 하시네요.듣고 첨에는 이해는 안됬는데,이유인 즉슨 소스를 유닉스 말고도 다른 환경에서도 볼 기회가 많은데 탭으로 하면 깨지는 경우가 있다고 하시더라고요.
혹시 여기계시는 분들도 tab대신에 스페이스로 하시는 분 계시나요?
탭은 에디터 설정에 따라 비주얼 적으로 2칸, 4칸, 8칸 마음대로 설정할 수 있습니다.
그래서 ident를 모든 에디터에서 동일하게 보고자 할때, tab 사이즈 제약을 소스코딩 제약조건으로 두는경우도 있고,
아니면 강제적으로 tab 대신 ident를 space 몇개로 바꾸게끔 하는거죠.
저는 윈도우/리눅스/cygwin환경 모두 vim을 썼는데 (가끔 울트라 에딧), Source Insight라는 프로그램으로 코딩하시던 분들은 함수나 변수, 매크로에 대해서 각각 다른 폰트 크기로 나오도록 하시더군요. 잘 아시다시피 vim은 기본 폰트크기가 고정되어있지요. (거기다가 보통 fixed width font)
그래서 Source insight 사용하신 분들이 올려놓은 코드를 서버에서 받아올 때면 가끔 인덴트가 마구마구 깨지는 경우가 있었습니다.
이런 식으로 따진다면, cr/lf문자도 문제가 되겠지요. 아니면, (쉽게 말해서) DOS 포맷 / Unix 포맷도 문제가 되고... 어떤 에디터냐, 어떤 개발환경(형상 관리툴 포함)이냐에 따라서 너무 다르기 때문에, 정답이라는 것은 없고 가능하면 같이 작업하는 그룹 내에서 정한 규칙을 따르는 것이 가장 좋다고 생각합니다.
탭은 fstab같은 거 만질 때 씁니다. 또는 hosts파일 만질 때 씁니다. 이렇게 뭐 마춰서 보기 좋게 굳지 만들 것이 아니라면 코딩 할 때는(별로 안 하고 있찌만.) 스페티스로 들여쓰기를 하고 있습니다.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
그리고 저는 Jamie Zawinski씨의 의견(파일에 쓸 때에는 tab을 쓰지 말자)에 동의하는 편입니다. 요즈음은 강력한 editor들이 많기 때문에, 궂이 tab 글자를 파일에 기록할 이유는 별로 없습니다.
또 이 것은 큰 논쟁거리가 되지 않는다고 생각하는 이유도 같습니다. 강력한 editor들이 많기 때문에, 원한다면 얼마든지 tabify/untabify (space를 tab 문자로, tab을 space 문자로) 할 수 있습니다.
다만 가장 싫어하는 스타일은, 실제 파일에 기록할 때, tab 문자와 space 문자를 (들여쓰기 할 때) 함께 쓰는 경우입니다. 이 경우, 자동적으로 tabify/untabify하기가 매우 까다롭기 때문입니다.
특히, C/C++ 소스 macro를 정의할 때, 매크로 이름과 값 사이를 tab으로 구분하는 사람들이 많은데, 이 경우, 매크로 이름에 따라 어떤 매크로는 tab을 한 개, 어떤 매크로는 두 개 이런식으로 저장하는 경우가 있는데, 매우 나쁜 습관입니다. (물론 editor에서 tab을 쓰더라도 저장할 때 space로 저장한다면 동일한 간격을 가지게 되므로 상관없습니다.)
위 link에도 나와있지만, (a) emacs를 쓴 경우, 원할 때, 현재 파일을 tabify/untabify할 수 있습니다. (b) 또한 약간 수고를 들이면 원하는 상황 (예: 특정 확장자인 경우)에, 파일을 저장할 때 자동으로 untabify해서 저장하도록 할 수 있습니다.
그리고 Emacs를 쓰지 않는다해도 indent(1) 프로그램을 쓰면 거의 비슷하게 tab-space를 변환할 수 있습니다.
혹시 vim이나 기타 다른 editor에 정통하신 분이 있다면 (a), (b)의 기능을 할 수 있는 설정을 이 곳에 올려 주시는 것도 좋을 것 같습니다.
set ts=8 tabstop, 실제 탭 문자를 몇 칸으로 보여줄건지
set sts=4 softtabstop, 문자 입력 중에 탭키를 눌렀을때 실제 탭 문자 대신에 4칸의 공백을 넣겠다는 의미입니다. 즉, 탭문자 대신에 공백으로 쓸 경우에 설정해야 되는 옵션입니다.
set sw=4 shiftwidth, == 명령등으로 들여쓰기를 조절할때 쓰이는 칸을 지정합니다.
위와 같이 지정하고 코딩하게 되면 보통 탭으로 직접 들여쓰기를 넣게 됩니다. 그런데 sts를 입력할때 앞쪽에 이미 입력되어 있는 공백과 합쳐져서 ts 값과 일치하게 되면 탭문자로 자동으로 바뀌게 됩니다. 위와 같은 설정에서 연속으로 탭을 두번 - 들여쓰기를 두번 - 하게 되면 공백 8칸이 아니라 탭문자 하나가 들어가게 됩니다.
저도 cinsk님 의견처럼 이렇게 섞어서 쓰는게 가장 안좋은 경우라고 생각 됩니다. 재처리가 힘들어지죠. 그래서 설정을 하나 더 해줘야 합니다.
set et
expandtab, 탭을 공백문자로 확장한다는 의미입니다.
et를 설정하고 sts와 sw의 값을 원하는 수치로 맞춰서 사용하시면 됩니다. 그렇다고 탭을 쓰지 말자는 얘기는 아니지만 섞어서 쓰는건 좀 안좋다는 생각입니다.
탭 문자가 모든 환경에서 스페이스 문자 8칸과 동일한 간격을 보인다고 보시면 어떤 문제도 발행하지 않습니다. 유닉스의 시스템 툴들은 모두 탭 문자가 8칸을 뛰운다고 가정하고 만들어진 것입니다. 그들에게도 혼란스럽지 않습니다. 탭 문자를 4칸으로 하시는 분들은 오히려 더 혼란스러울 것입니다. 모든 문제는 탭 문자의 간격을 조정하는 사람 때문에 발생하는 것입니다.
저는 탭 문자가 8칸으로 보인다고 가정하는 것을 바꾸는 것은 옳지 않은 일이라고 생각합니다. 만약에 진정으로 탭 문자만 쓰고 싶다 그러신다면 인덴트를 8칸으로 하시고 탭 문자를 쓰십시요. 리누스 처럼요. 그것이 모두의 혼란을 줄이는 길입니다.
tab을 쓰되 space로 변화시킵니다.
tab으로 작성하되 에디터자체 기능으로 스페이스로 변화시키지요..
비단 프로그램 뿐만 아니라 sql 쿼리등 그러한 경우는 비일비재 하니까요
VI 에도 그런기능이 있습니다.
------------------------------------------------------------
ProgrammingHolic
탭은 에디터 설정에
탭은 에디터 설정에 따라 비주얼 적으로 2칸, 4칸, 8칸 마음대로 설정할 수 있습니다.
그래서 ident를 모든 에디터에서 동일하게 보고자 할때, tab 사이즈 제약을 소스코딩 제약조건으로 두는경우도 있고,
아니면 강제적으로 tab 대신 ident를 space 몇개로 바꾸게끔 하는거죠.
개발자 기호일 뿐입니다.
회사 다닐 때 비슷한
회사 다닐 때 비슷한 문제로 골치 아팠던 적이 있습니다.
저는 윈도우/리눅스/cygwin환경 모두 vim을 썼는데 (가끔 울트라 에딧), Source Insight라는 프로그램으로 코딩하시던 분들은 함수나 변수, 매크로에 대해서 각각 다른 폰트 크기로 나오도록 하시더군요. 잘 아시다시피 vim은 기본 폰트크기가 고정되어있지요. (거기다가 보통 fixed width font)
그래서 Source insight 사용하신 분들이 올려놓은 코드를 서버에서 받아올 때면 가끔 인덴트가 마구마구 깨지는 경우가 있었습니다.
이런 식으로 따진다면, cr/lf문자도 문제가 되겠지요. 아니면, (쉽게 말해서) DOS 포맷 / Unix 포맷도 문제가 되고... 어떤 에디터냐, 어떤 개발환경(형상 관리툴 포함)이냐에 따라서 너무 다르기 때문에, 정답이라는 것은 없고 가능하면 같이 작업하는 그룹 내에서 정한 규칙을 따르는 것이 가장 좋다고 생각합니다.
source insight도 tab을
source insight도 tab을 조절하고...폰트 크기 조절하면 이쁘게 나옵니다.
전 지멋대로 설정되어있는 폰트 크기 맞추고 smart tab인가..뭐..
이런거 설정하니깐...이쁘게 나오는군요..
source insight 좋아요
vim도 좋지만서도, 소스 인사이트 정말 좋습니다.
말도 안되는 용량의 소스의 바다에서 헤엄치려면 이정도는 되야 ㅠ.ㅠ
emacs쓰는데..
space도 안씁니다. 걍 자동입니다.(style지정이 있습니다. linux, k&r, stroustrup, ellemtel, gnu, java, python등..)
그리고 유닉스 아닌데서도 emacs 써버립니다.-.-;
흐흠.
흐흠.. 전 공백문자를 씁니다.
탭은 fstab같은 거 만질 때 씁니다. 또는 hosts파일 만질 때 씁니다. 이렇게 뭐 마춰서 보기 좋게 굳지 만들 것이 아니라면 코딩 할 때는(별로 안 하고 있찌만.) 스페티스로 들여쓰기를 하고 있습니다.
----
Lee Yeosong(이여송 사도요한)
E-Mail: yeosong@gmail.com
MSN: ysnglee2000@hotmail.com
----
웃음... 행복... 평화... (진정한...) 희망... 사랑... 이 세상 모든것이 그렇다면 얼마나 좋을까...(꿈 속의 바램일 뿐인가...)
사람천사
unix 말고 다른것으로
unix 말고 다른것으로 볼 기회가 많다는것중에 탭을 지원 안하는게 과연 무엇일지 궁금합니다.
저는 용량이 아까워서라도 탭을 씁니다.
emerge money
https://xenosi.de/
vim은 명령모드에서 =
vim은
명령모드에서 = 를 두번 연타하면 커서가 위치한 줄 하나 자동인덴트고
<인덴트할줄수>를 먼저 친 뒤에 = 를 두번 연타하면 현재줄부터 입력한 줄 수만큼 자동인덴트 됩니다.
개인적으로 저는 코딩시 fixed width를 가진 font를 씁니다. (주로 Fixed, Andale Mono 등등)
이렇게 하는게 글자가 일정간격으로 배열되서 읽기 좋더군요.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
탭문자 대신
탭문자 대신 스페이스로 쓰면 원 저작자의 의도를 완전히 보존할수가 있어서 쓰게되는 것 같습니다.
4칸 크기의 탭을 기준으로 80컬럼에 맞춰 작성한 소스를 8칸 탭 설정된 곳에서 보면?
--
마잇
--
마잇
tab문자를 쓸 일은
tab문자를 쓸 일은 makefile말곤 없어용~ -O-
vi는 et, noet로,
emacs는 ^x q면 끝나니, tab 신경쓸일도 없죵.
물론 pynoos님은 아예 commit할때 자동으로 rule설정한 indent 써서
한방에 하신다고 하셨던듯 하군요.
--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)
--------------------------------------------------------------------------------
\(´∇`)ノ \(´∇`)ノ \(´∇`)ノ \(´∇`)ノ
def ed():neTdiVeR in range(thEeArTh)
탭크기 설정을
탭크기 설정을 지원하지 않는 프로그램은 거의 없죠.
다른 플랫폼에서 깨지는 경우는 보기 힘들어요.
거의 탭설정이 원소스하고 맞지 않아서지요.
학교다닐땐 가끔 깨진다고 생각했는데 설정이나 \r\n문제더군요.
비슷한 thread가
비슷한 thread가 emacs에서 tab 과 space에 있습니다.
그리고 저는 Jamie Zawinski씨의 의견(파일에 쓸 때에는 tab을 쓰지 말자)에 동의하는 편입니다. 요즈음은 강력한 editor들이 많기 때문에, 궂이 tab 글자를 파일에 기록할 이유는 별로 없습니다.
또 이 것은 큰 논쟁거리가 되지 않는다고 생각하는 이유도 같습니다. 강력한 editor들이 많기 때문에, 원한다면 얼마든지 tabify/untabify (space를 tab 문자로, tab을 space 문자로) 할 수 있습니다.
다만 가장 싫어하는 스타일은, 실제 파일에 기록할 때, tab 문자와 space 문자를 (들여쓰기 할 때) 함께 쓰는 경우입니다. 이 경우, 자동적으로 tabify/untabify하기가 매우 까다롭기 때문입니다.
특히, C/C++ 소스 macro를 정의할 때, 매크로 이름과 값 사이를 tab으로 구분하는 사람들이 많은데, 이 경우, 매크로 이름에 따라 어떤 매크로는 tab을 한 개, 어떤 매크로는 두 개 이런식으로 저장하는 경우가 있는데, 매우 나쁜 습관입니다. (물론 editor에서 tab을 쓰더라도 저장할 때 space로 저장한다면 동일한 간격을 가지게 되므로 상관없습니다.)
위 link에도 나와있지만, (a) emacs를 쓴 경우, 원할 때, 현재 파일을 tabify/untabify할 수 있습니다. (b) 또한 약간 수고를 들이면 원하는 상황 (예: 특정 확장자인 경우)에, 파일을 저장할 때 자동으로 untabify해서 저장하도록 할 수 있습니다.
그리고 Emacs를 쓰지 않는다해도 indent(1) 프로그램을 쓰면 거의 비슷하게 tab-space를 변환할 수 있습니다.
혹시 vim이나 기타 다른 editor에 정통하신 분이 있다면 (a), (b)의 기능을 할 수 있는 설정을 이 곳에 올려 주시는 것도 좋을 것 같습니다.
--
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://www.cinsk.org/cfaqs/
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
vim에서 예를
vim에서 예를 들면요,
set ts=8 tabstop, 실제 탭 문자를 몇 칸으로 보여줄건지
set sts=4 softtabstop, 문자 입력 중에 탭키를 눌렀을때 실제 탭 문자 대신에 4칸의 공백을 넣겠다는 의미입니다. 즉, 탭문자 대신에 공백으로 쓸 경우에 설정해야 되는 옵션입니다.
set sw=4 shiftwidth, == 명령등으로 들여쓰기를 조절할때 쓰이는 칸을 지정합니다.
위와 같이 지정하고 코딩하게 되면 보통 탭으로 직접 들여쓰기를 넣게 됩니다. 그런데 sts를 입력할때 앞쪽에 이미 입력되어 있는 공백과 합쳐져서 ts 값과 일치하게 되면 탭문자로 자동으로 바뀌게 됩니다. 위와 같은 설정에서 연속으로 탭을 두번 - 들여쓰기를 두번 - 하게 되면 공백 8칸이 아니라 탭문자 하나가 들어가게 됩니다.
저도 cinsk님 의견처럼 이렇게 섞어서 쓰는게 가장 안좋은 경우라고 생각 됩니다. 재처리가 힘들어지죠. 그래서 설정을 하나 더 해줘야 합니다.
set et
expandtab, 탭을 공백문자로 확장한다는 의미입니다.
et를 설정하고 sts와 sw의 값을 원하는 수치로 맞춰서 사용하시면 됩니다. 그렇다고 탭을 쓰지 말자는 얘기는 아니지만 섞어서 쓰는건 좀 안좋다는 생각입니다.
--
마잇
--
마잇
전 무조건 탭입니다.
공백을 불편해서 어떻게 쓴데요..=_=
단순히 탭을 4byte 혹은 8byte로 쓰는것 이외에도 설정파일들 보면 탭으로 각 설정항목 사이를 떼어놓아 대략적으로 간격을 맞춰놓은것을 볼 수 있지요.
공백문자라면? 저런걸 하려면 참 답답하지 않겠나 싶습니다. 내용의 길이에 따라서 공백을 일일이 조정해야 할테니 말이지요.
==
아 씨끄러 씨끄러~ 조용해!!
레드햇 9 이하 사용금지!
한 사람이 편집한 것은 탭사이즈가 문제가 되지 않습니다.
한 사람이 편집한 것은 탭사이즈가 문제가 되지 않습니다. 볼 때 그 사이즈에 맞추어서 보면 되니까요.
하지만 한 파일에
어떤 사람은 탭을 써서 8칸으로 작성하고, 어떤 사람은 스페이스를 써서 8칸으로 작성한다거나
더 심하게는 스페이스를 써서 맞춘 파일에
어떤 사람은 탭사이즈가 4인 상태로 탭으로 들여쓰기하고, 어떤 사람은 탭사이즈가 8인 상태로 해버리면
문제가 좀 많죠. 아마 원래 주제가 이게 아닌가 싶은데요.
바꿔서 말하면
탭*만* 쓰거나 스페이스만 쓰면 전혀 문제가 없습니다. 문제는 혼용해서 쓰는 경우입니다.
그래서 스페이스만 쓴다는 것은 충분히 이해가 됩니다.
그런데..
전 탭은 8이란 생각이 자연스러원서 둘을 혼용해서 사용하고 있네요.
파일에 자신의 스타일을 적어둬서 에디터가 인식하게 하는 게 제일 낫다고 생각합니다.
$Myoungjin_JEON=@@=qw^rekcaH lreP rehtonA tsuJ^;$|++;{$i=$like=pop@@;unshift@@,$i;$~=18-length$i;print"\r[","~"x abs,(scalar reverse$i),"~"x($~-abs),"]"and select$good,$day,$mate,1/$~for 0..$~,-$~+1..-1;redo}
저는 그냥 indent 에
저는 그냥 indent 에 의존합니다. 몇가지 룰을 정해놓고 쓰다가, 요즘은 그것도 딱 세줄짜리 룰만 남았군요.
삽질의 대마왕...
삽질의 대마왕...
탭만 쓰기로 약속을
탭만 쓰기로 약속을 해도 코딩하다보면 가끔 소스를 보기좋게 하기위해 스페이스를 쓰면 좋은 경우가 있습니다.
.. 그냥 스페이스로 통일해서 씁니다.
저도 언제부터인지
저도 언제부터인지 기억은 안나는데 탭문자 대신 공백문자로 사용하고 있습니다.. 4칸으로다가..
꽤 오래된것같아요.
왜 그랬지?;
---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/
탭 문자가 모든
탭 문자가 모든 환경에서 스페이스 문자 8칸과 동일한 간격을 보인다고 보시면 어떤 문제도 발행하지 않습니다. 유닉스의 시스템 툴들은 모두 탭 문자가 8칸을 뛰운다고 가정하고 만들어진 것입니다. 그들에게도 혼란스럽지 않습니다. 탭 문자를 4칸으로 하시는 분들은 오히려 더 혼란스러울 것입니다. 모든 문제는 탭 문자의 간격을 조정하는 사람 때문에 발생하는 것입니다.
저는 탭 문자가 8칸으로 보인다고 가정하는 것을 바꾸는 것은 옳지 않은 일이라고 생각합니다. 만약에 진정으로 탭 문자만 쓰고 싶다 그러신다면 인덴트를 8칸으로 하시고 탭 문자를 쓰십시요. 리누스 처럼요. 그것이 모두의 혼란을 줄이는 길입니다.
- CN의 낙서장 / HanIRC:#CN
- 죠커's blog / HanIRC:#CN