2009-07-20 5 views
6

vim을 사용하면 라인의 텍스트 왼쪽에있는 경우 실제로는 expandtabs을 사용하고 싶습니다. 공백이 아닌 문자 오른쪽에있는 경우 사용하고 싶습니다. (나는 들여 쓰기와 공백을 위해 정렬을 위해 탭을 사용하고 싶습니다.)vim은 탭을 텍스트의 왼쪽으로 만 확장 할 수 있습니까?

이 작업을 수행 할 수 있습니까? 이 같은

+0

나는 그것을 할 수 있다고 강력히 믿습니다. 나는 그것이 쉽지 않을 것이라고 생각한다. –

답변

5

예. Smart Tabs 플러그인을 사용하십시오.

이 스크립트를 사용하면 줄의 시작 부분에 일반 탭 설정을 사용하고 탭을 공백으로 확장 할 수 있습니다. 이것은 효과적으로 '들여 쓰기'와 '정렬'을 구별합니다.

<tab> 편집기 탭 설정을 사용하여 줄의 첫 부분 (첫 번째 공백이 아닌 문자 앞에)에 탭을 삽입하고 그렇지 않으면 공백을 삽입합니다.

<BS>은 Vim은 함수 인수를 줄 수 있도록 .vimrc

set cindent 
set cinoptions=(0,u0,U0 

를 추가하려면 smarttab

람 탭 또는 '확장'탭을 삭제 편집기 탭 설정을 사용합니다. 플러그인과 같은 공백을 인코딩합니다

int f(int x, 
......int y) { 
--->return g(x, 
--->.........y); 
} 

이것은 "x"와 "y"의 정렬을 만드는 탭 크기 (tabstop)의 독립.

4

시도 뭔가 :

function! TabMaybeIndent() 
    if strpart(getline('.'), 0, col('.') - 1) =~ '^\s*$' 
     return "\<Tab>" 
    else 
     return " " 
    endif 
endfunction 

set noexpandtab 
imap <Tab> <C-r>=TabMaybeIndent()<CR> 
+0

이것은 합리적인 접근 방식처럼 보입니다. 사소한 조정을하면 맹목적으로 4 칸을 삽입하는 대신 현재의 'softtabstop'설정을 따를 수도 있습니다. – ephemient

관련 문제