Vim 탭과 공백

Vim 탭과 공백

나는 vim 들여쓰기가 다음과 같이 작동하기를 원합니다.

▷   ▷   int function(int x,▒int y, int z) {

Enter 키를 누르면 다음을 얻고 싶습니다.

▷   ▷   int function(int x,
▷   ▷   _____________int y, int z) {

여기서 "▷"는 탭이고 "_"는 공백입니다.

즉, 탭을 사용하고 싶지만 들여쓰기 수준을 추가하지 않는 곳에 줄 바꿈이 있는 경우 들여쓰기되지 않은 줄을 공백에 맞춰 정렬해야 합니다.

이를 통해 들여쓰기에 탭을 사용할 수 있지만 탭 크기가 변경되더라도 서식이 유지되도록 들여쓰기가 아닌 수준에서 서식을 유지할 수 있습니다.

지금까지 나는 Vim으로 이것이 가능한 방법을 찾지 못했습니다. Preserveindent와 copyindent는 내가 찾고 있는 것이 아닙니다. 그들은 확장 탭을 존중하며 들여쓰기에는 확장 탭만 사용하고 정렬에는 공백을 사용하고 싶습니다.

답변1

에 따르면빔 위키,스마트 탭플러그인이 이 작업을 수행합니다. 나는 그것을 직접 시도하지 않았습니다.

답변2

현재 vim에서는 이것이 가능하지 않은 것 같습니다. 탭이나 공백 중 하나를 사용할 수 있으며 둘 다 사용할 수는 없습니다. 탭 위에 공백이 있는 시간은 언어에 매우 민감하므로 놀랄 일이 아닙니다. 고려 사항: Python에서는 다음을 어떻게 처리합니까?

x = fn(abc, 'def', {
                       ghi: jkl,
                       mno: pqr,
                   })

어느 시점에서 탭으로 돌아가야 합니까? 그것은 이상적이지만 상황에 매우 민감하며 실제로 언어 간 작동하지 않습니다. Haskell의 또 다른 재미있는 예는 다음과 같습니다.

data Something = Something { flag1 :: Bool
                           , flag2 :: Bool }
               deriving (Eq, Ord, Show)

행운을 빕니다.

불행하게도 이런 종류의 기능을 위해서는 언어별 확장이 필요하다는 결론을 내렸습니다. 하지만 이를 수행하는 좋은 방법을 알고 계시다면 듣고 싶습니다.

관련 정보