python 해제 Vim은 파이썬 주석의 들여 쓰기를 자동으로 제거합니다.




파이썬 탭 스페이스 (4)

Michał의 글은 smartindent가하는 일에 대해 설명하지만, 끄기보다 훨씬 잘 할 수 있습니다. 원하는대로 더 많이 구성하거나 더 잘 들리면 Vim이 더 나은 들여 쓰기를 선택하도록 할 수 있습니다. 다른 들여 쓰기 설정 대신 vimrc에서 다음을 사용하십시오.

filetype indent on

Vim은 파이썬에 적절한 들여 쓰기 플러그인을 자동으로 사용합니다. 이것은 # 줄을 들여 쓰기하지 않는 것보다 낫습니다. 거의 모든 것이 적절하게 들여 쓰기되어야합니다.

저는 Vim을 사용하고 파이썬 스크립트를 편집하고 있습니다.

Autoindent는 일반적으로 잘 작동하지만, 새 행을 시작하고 '#'을 입력하여 설명을 입력하면 Vim은 그 행을 언인 드 (unind)합니다.

예를 들어

def foo():

입력을 누르면 Vim은 올바르게 들여 쓰기됩니다.

def foo():
    pass

하지만, pass 를 타이핑하는 대신에 # 을 타이핑하면 자동으로 들여 쓰기가 해제됩니다.

def foo():
# comment

class Thing():
    def __init__(self):
         pass
# comment line gets unindented all the way

내 .vimrc 파일은 다음과 같습니다. 왜 이런 일이 일어나는 지 아는 사람이 있습니까?

set tabstop=4
set smartindent
set shiftwidth=4
set expandtab
set backspace=indent,eol,start
set scrolloff=3
set statusline=%f%m%r%h%w\ [%Y\ %{&ff}]\ [%l/%L\ (%p%%)]
set laststatus=2

파이썬 파일에 대해서만 옵션을 시도 할 수 있습니다 :

autocmd BufRead *.py inoremap # X<c-h>#<space>

어떤 알 수없는 이유로 위의 행동은 내가 cindentcindent 때 발생했습니다. 그것을 끄면 나를 위해 그것을 고쳤다. 위의 다른 픽스는 도움이되지 않았습니다.


smartindent on으로 설정하면 Vim이 나를 위해 설명하는 것처럼 동작하지만 nosmartindent (내가 사용하는 경향이있는)는 선호하는 것처럼 동작합니다.

업데이트 : smartindent 의 문서에서 :

새 줄의 첫 번째 문자로 '#'을 입력하면 해당 줄의 들여 쓰기가 제거되고 첫 번째 열에 '#'이 삽입됩니다. 다음 줄에 들여 쓰기가 복원됩니다. 이것을 원하지 않는다면이 맵핑을 사용하십시오 : ": inoremap # X ^ H #", 여기서 ^ H는 CTRL-V CTRL-H로 입력됩니다. ">>"명령을 사용할 때 '#'으로 시작하는 줄은 오른쪽으로 이동하지 않습니다.

그것은 그 것처럼 보입니다.

업데이트 : 아마도 다음과 같이 신경 쓰지 않아도됩니다. 여기에 정보 가치를 추가하겠습니다. ;-)

nosmartindent 설정해도 도움이되지 않는다면 :set 매개 변수없이 :set 명령을 사용하여 Vim 세션에서 유효한 모든 설정 목록을 얻은 다음 어딘가에 붙여 넣을 수 있습니다 (아마도 Pastie 있을 것입니다). 내가 기억하는 한 자동 들여 쓰기에 영향을주는 몇 가지 다른 옵션이 있습니다.





indentation