파이썬 블록 모션의 끝


13

파이썬 블록의 끝 / 시작으로 이동하는 모션이 필요하며 이전 / 다음 방법 / 클래스 (모든 조합)의 시작 / 끝으로 이동하는 다른 모션이 필요합니다.

vim-indent-object, python-mode, chapa, vim-python-object 등을 시도했습니다. 이들 중 어느 것도 블록 끝을 지원하지 않으며 위의 동작의 모든 조합을 지원하지 않습니다.

나는 시간에 내가 제공하는 플러그인을 가지고 한 번 기억 ]], [[, ][[]"["[과] "이전 / 다음 방법 / 클래스 / 끝을 태초위한 움직임,하지만 난 (검색]"내 연결 디렉토리에서 찾을 수 없습니다 내 플러그인 디렉토리에서 모든 발생을 분석했지만 "] ["또는 "[]"를 정의하는 것을 찾지 못했습니다.

내가 사용한 플러그인을 알고 있습니까? 이 기능을 제공하는 플러그인을 알고 있습니까?



3
[[그리고 ]], 기본 파이썬 ftplugin에 의해 제공됩니다.
romainl

1
정보 @romainl 덕분에, 나는 알고에 대한 [[, ]], (, ), {}. [[그리고 ]]어떤 경우에는 유용하지만 내 주요 문제는 내가 필요하다 []][이전 / 다음 방법 / 클래스의 끝으로 이동합니다 그런 일을하거나.
Sassan

1
@muru 덕분에 ]e대부분의 문제 가 해결되었지만이 플러그인의 일부 매핑이 손상 ]v되었거나 ]>포크로 수정하여 게시하려고 시도합니다. 나는 여전히 플러그인이 무엇인지 궁금 ][했고 []실제로 유용했습니다.
Sassan

답변:


11

$VIMRUNTIME/ftplugin/python.vim파이썬 언어에 대해 다음 ft 특정 모션 의 최근 업데이트 (2017 년 11 월)를 사용할 수 있습니다.

  • [[ 현재 / 이전 최상위 레벨의 시작으로 뒤로 이동
  • [] 이전 최상위 레벨의 끝으로 뒤로 이동
  • ][ 현재 최상위 레벨의 끝으로 이동
  • ]] 다음 최상위 수준으로 이동
  • [m 현재 / 이전 방법 / 범위의 시작으로 뒤로 이동
  • [M 이전 방법 / 범위의 끝으로 뒤로 이동
  • ]M 현재 / 다음 방법 / 범위의 끝으로 앞으로 이동
  • ]m 다음 방법 / 범위의 시작으로 앞으로 이동

파이썬 파일 예

class previous:             # [[[[

    def method_first:
        pass
    # ...

    def method_last:
        pass                # []

class current:              # [[ or [m...[m[m

    def method_first:       # [[]m or [m...[m
        pass                # [[]M or [M...[M
    # ...

    def method_previous:    # [m[m
        pass                # [M

    def method_current:     # [m
        # CURSOR <---------------------------
        pass                # ]M

    def method_next:        # ]m
        pass                # ]M]M
    # ...

    def method_last:        # ][[m or ]m...]m
        pass                # ][   or ]M...]M

class previous:             # ]]   or ]m...]m]m

    def method_first:
        pass
    # ...

def global_func:            # ]]]]
    pass

vim 패치 레벨이 최소한이면이 업데이 트가 포함되어야합니다 8.0.1256.

업데이트 할 수 없지만이 기능을 사용하려면 최신 버전을 ~/.vim디렉토리에 설치할 수 있습니다 .

$ curl https://raw.githubusercontent.com/vim/vim/master/runtime/ftplugin/python.vim --create-dirs -o ~/.vim/ftplugin/python.vim

플러그인 Pythonsense

이 플러그인은 비슷한 동작을 제공하지만 약간 수정되었습니다.

Vim 8.0 "class"모션 ( " ]]", " [["등)은 클래스 / 펑션 블록인지 여부에 관계없이 첫 번째 열에서 시작하는 블록을 찾고 메소드 / 함수 모션 ( " [m", " ]m"등)은 클래스 또는 함수 블록인지 여부에 관계없이 들여 쓰기에서 모든 블록을 찾습니다. 반대로 "Pythonsense"클래스 모션은 들여 쓰기 수준에 관계없이 모든 클래스 정의를 찾는 데 사용되는 반면, 메서드 / 함수 모션은 들여 쓰기 수준에 관계없이 모든 메서드 / 함수 정의를 찾는 데 사용됩니다.

자세한 내용과 예는 https://github.com/jeetsukumaran/vim-pythonsense#stock-vim-vs-pythonsense-motions에 나와 있습니다 .


neovim이이 패치를 가져올 때까지 기다려야합니다.
Sassan

1
나는 당신이 그것을 수동으로 설치할 수있을 것이라고 생각합니다 curl https://raw.githubusercontent.com/vim/vim/master/runtime/ftplugin/python.vim --create-dirs -o ~/.config/nvim/ftplugin/python.vim.
Hotschke
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.