Кінець руху блоку пітона


13

Мені потрібен рух, який рухається до кінця / початку блоку python, і мені потрібен інший рух, який рухається до початку / кінця попереднього / наступного методу / класу (всі комбінації).

Я спробував об’єкт vim-indent, python-mode, chapa, vim-python-object тощо. Жоден з них не підтримує кінець блоку, і жоден з них не підтримує всі комбінації вищезазначених рухів.

Я пам'ятаю , коли - то давно у мене був плагін , який при умови ]], [[, ][і []руху на головну сторінку / кінець попереднього / наступного методу / класу, але я не можу знайти його в моєму каталозі підключений (пошук «] [» і «[]» в моєму підключеному каталозі та проаналізував усі події, але не знайшов нічого, що визначає "] [" або "[]").

Чи знаєте ви плагін, який я використовував? Чи знаєте ви якийсь плагін, який забезпечує цю функціональність?



3
[[і ]], надаються піфоном ftplugin за замовчуванням.
romainl

1
@romainl Дякую за інформацію, я знаю про те [[, ]], (, ), {і }. [[і ]]корисні в деяких випадках , але моя головна проблема мені потрібно []і ][чи що - щось подібне, що забезпечує перехід до кінця наступного / попереднього методу / класу.
Сассан

1
@muru спасибі, це ]eвирішує більшість моїх проблем, однак деякі відображення у цьому плагіні, схоже, зламані, ]vабо ]>я спробую виправити їх у вилці та опублікувати. Хоча я все ще дивуюсь, що був плагін, який надав, ][і []він був дійсно корисним.
Сассан

Відповіді:


11

З недавним оновленням (листопад 2017 р.) $VIMRUNTIME/ftplugin/python.vimНаступні моменти, характерні для ft, тепер доступні для мови python

  • [[ Перейти назад до початку поточного / попереднього рівня
  • [] Перейти назад до кінця попереднього рівня
  • ][ Перейти вперед до кінця поточного рівня
  • ]] Перейти вперед, щоб почати наступний верхній рівень
  • [m Перейти назад до початку поточного / попереднього методу / сфери
  • [M Перейти назад до кінця попереднього методу / сфери застосування
  • ]M Перейти вперед до кінця поточного / наступного методу / області
  • ]m Перейти вперед, щоб почати наступний метод / область

Приклад файлу python

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 принесе цей пластир.
Сассан

1
Напевно, ви могли встановити його вручну curl https://raw.githubusercontent.com/vim/vim/master/runtime/ftplugin/python.vim --create-dirs -o ~/.config/nvim/ftplugin/python.vim.
Хоцке
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.