2011-12-13 3 views
7

하드 탭을 들여 쓰기 문자로 사용하지만 정렬을 위해 공백을 사용하는 방식으로 누구나 자신의 빔 설정을 가지고 있습니까? 내가 가진 문제는빔 : 들여 쓰기 용 탭, C 소스 파일 정렬을위한 공간

if (condition1 && (anotherlongcondition || /* <-- Here I insert a newline */ 
|-------|------- whatever /* some additional alignment added automatically */ 

는 다음 cin이 (나를 위해 필수입니다) 약간의 정렬을 바로 방법을 추가로 같은 연속 선을 시작할 때 나는 위치 적 선호하지만이 정렬로 사용하여 생성됩니다 가능한 한 많은 하드 탭을 만들고 나머지는 공간으로 채 웁니다.

그래서, 짧은에, cin 정말 들여 쓰기정렬를 구별하지 않는 것 같습니다. 위 예제에서 추가 된 모든 정렬은 공백입니다. 이렇게하면 ts을 일시적으로 전환 할 때 정렬이 올바르게 보존됩니다.

다시 명확하게하려면 다음 코드를 작성하면됩니다. <TAB> 또는 <SPACE>을 아무 행이나 비어 있지 않은 첫 번째 문자 앞에 입력하지 않아도됩니다. :

void foo(int bar) 
{ 
|-------somestatement; 
|-------if (somecondition && (someothercondition || 
|-------      whatevercomesnext)) 
|-------|-------dosomething; 
} 

이미 ctab.vim을 시도하지만, 수동 정렬이 1 단계 정제를 가르치시 탭 -하지 작업이기 때문에 그것은 편집 나에게 바보 같다 소프트 탭 정렬 라인에 초점을 맞추고 너비 - 단계 정제. cin은 정렬을 위해 탭과 공백이 섞여 사용되는 방식을 변경하지 않았습니다.

나는 그것을 달성하기 위해 내장 된 방법을 찾을 수 없었습니다. 아마도 여전히 하나가 있을까요? 어쨌든, 저것을하는 플러그 접속식이다는 것을 나는 의심한다. 필자는 필자 자신이 스크립트를 작성하지 않고 충분한 경험이 없을 수도 있지만 필자가 시도한 대부분의 플러그인은 편집자 구성을 엉망으로 만들었다 고 말해야합니다.

+0

나는'ctab.vim' 나 자신 (버전 2.6)을 사용하고 있는데, 당신이 달성하기를 원하는 것처럼 보인다. 즉 위의 코드 조각을 타이핑 할 때 나는 그렇지 않다. – ekoeppen

답변

1

오케이, 죄송합니다. 마침내 좋은 재료를 찾았습니다.

http://vim.1045645.n5.nabble.com/Indent-with-tabs-align-with-spaces-td1183279.html

이 편안 할 수 있도록 현재 정력 충분히 유연하지, 요약합니다.

제 해결 방법은 현재 :set cinoptions=(1을 사용하고 있습니다. 이는 연속 줄을 시작할 때 하나의 정렬 단위 만 추가합니다. 이 방법을 사용하면 추가 된 정렬이 공백임을 확신 할 수 있습니다 (적어도 :set ts=1이 아닌 한) 공백을 수동으로 추가하십시오. 이것은 속도 측면에서 여전히 괜찮아요 그리고 나에게 가장 산만 한 행동으로 보인다!

+0

자신의 답을 받아 들일 수있는 것으로 표기 할 수 있습니다! –

3

set cino = (1, 이미 만난 적이없는 경우 'preserveindent'및 'copyindent'옵션에 관심이있을 수 있지만 문제를 완전히 해결하지는 못합니다.

+0

예, 필자와 만났습니다. 그러나 모든 사람들이 들여 쓰기를 계산할 수있는 규칙이 여전히 많다는 것은 유감입니다. 혼합 탭/공백으로 들여 쓰기 ... –

관련 문제