Programing

Vim은 Python 주석의 들여 쓰기를 자동으로 제거합니다.

lottogame 2020. 10. 20. 07:10
반응형

Vim은 Python 주석의 들여 쓰기를 자동으로 제거합니다.


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

자동 들여 쓰기는 일반적으로 꽤 잘 작동하지만 새 줄을 시작하고 주석을 입력하기 위해 '#'을 입력하면 Vim이 해당 줄을 들여 씁니다.

예를 들어

def foo():

Enter 키를 누르면 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

smartindenton으로 설정 하면 Vim이 사용자가 설명하는 것처럼 동작하는 반면 nosmartindent(내가 사용하는 경향이있는) Vim은 사용자 가 선호하는 방식으로 동작합니다.

업데이트 : 문서에서 smartindent:

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

그게 다인 것 같습니다.


업데이트 : 아마도 다음과 같이 귀찮게 할 필요가 없습니다. 추가 된 정보 가치를 위해 여기에 남겨 두겠습니다. ;-)

설정 nosmartindent이 도움이되지 않는 경우 , :set매개 변수없이 명령을 사용 하여 Vim 세션에 적용된 모든 설정 목록을 가져온 다음 어딘가에 붙여 넣을 수 있습니다 ( 아마도 Pastie에 ). 내가 기억하는 한 자동 들여 쓰기에 영향을 미치는 몇 가지 다른 옵션이 있습니다.


Michał의 게시물은 smartindent의 기능을 설명하지만 단순히 끄는 것보다 훨씬 더 많은 일을 할 수 있습니다. 원하는대로 구성하거나 더 나은 방법으로 Vim이 더 나은 들여 쓰기를 선택하도록 할 수 있습니다. 다른 들여 쓰기 설정 대신 vimrc에서 다음을 사용하십시오.

filetype indent on

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


Python 파일에 대해서만 옵션을 시도 할 수 있습니다.

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

알 수없는 이유로 위의 행동은 내가했을 때 발생 cindent했습니다. 그것을 끄면 해결되었습니다. 위의 다른 수정 사항은 도움이되지 않았습니다.


이 스크립트를 설치하면 적절한 파이썬 (pep8) 들여 쓰기를 얻을 수 있습니다 .

http://www.vim.org/scripts/script.php?script_id=974

참고 URL : https://stackoverflow.com/questions/2360249/vim-automatically-removes-indentation-on-python-comments

반응형