>>로 다음 들여 쓰기 수준으로 들여 쓰기


9

때때로 나는 들여 쓰기 수준으로 들여 쓰기되지 않은 코드로 작업해야합니다 .Vim은 일반적으로 파일에 무언가를 복사 / 붙여 넣은 후에 (레벨 당 4 칸)으로 설정했습니다. 나는 보통으로 할 수 있도록 <<하고 >>. 문제는 다음 들여 쓰기 수준으로 넘어 가지 않고 단지 4 개의 공백을 더하거나 빼는 것입니다.

이런 코드가 있다면

if condition:
    do this
   do that

>>에 대한 것은 do that에서 발생합니다

if condition:
    do this
       do that

나는 이것에 가고 싶어

if condition:
    do this
    do that

위 줄의 들여 쓰기를 쉽게 일치시키는 것 외에도 4 줄을 추가하지 않고 다음 수준의 들여 쓰기로 건너 뛰기를 원합니다.

이것은 들여 쓰기와 관련하여 .vimrc에있는 것입니다.

:set tabstop=4 shiftwidth=4 expandtab

당신은 또한이 있다면 filetype plugin indent on당신에 .vimrc, 파일 형식 (및 플러그인) 들여 쓰기 관련 규칙이 적용됩니다. 즉 , 편집 할 때 실제로tabstop 무엇인지 ( set tabstop?다른 설정과 동일) 확인하고 'after'파일에 줄을 추가하여 값을 변경하십시오. stackoverflow.com/a/159066/5000478
VanLaser

3
>>그리고 <<당신이 원하지 않는 들여 쓰기를 각각 추가하고 제거하십시오. 당신이 원하는 것은 "포맷팅"입니다 ==.
romainl

:nnoremap >> ^i<tab><esc>탭 동작을 원한다면 매핑 할 수도 있습니다>>
Wolfie

@romainl ==은 위의 줄 수준으로 점프합니다. 좋은 것은 알고 있지만, 그것은 것 내가 원하는 내가 관심이. 질문에 추가로 모든 경우에없는 일이다에 대한 >><<에 들여 쓰기 / dedent까지 그 방향으로 경계에서 shiftwidth의 다음 배수 .
Dumitru

2
아니, ==사용 중 하나 equalexpr또는 equalprg주어진 라인을 포맷합니다.
romainl

답변:


12

이미 들여 쓰기 된 일부 행 {count}>>에서 {count}<<, >{motion}또는 명령 중 하나를 사용 <{motion}하고 새 들여 쓰기 수준이 'shiftwidth'옵션 값 의 배수가되도록 하려면 'shiftround'옵션을 활성화 하고이 행을 다음에 추가 할 수 있습니다 vimrc.

set shiftround

2

항상 >>다음 탭 스톱에 들여 쓰기를 <<하고 마지막 탭 스톱에 삭제하려면 다음과 같이 리 바인드 할 수 있습니다.

:nnoremap << ^i<BS><esc>
:nnoremap >> ^i<tab><esc>

커서가 이동하지만 다시 이동시키기 위해 약간의 표시를 할 수 있습니다. 마크를 ^남기지 m'않지만 바인딩 안에 수동으로 마크를 남길 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.