Как выбрать блок кода Python с помощью Vim? - PullRequest
17 голосов
/ 31 декабря 2011

Я могу использовать vi{ и va{ для выбора блоков кода C ++.Это мне очень помогает, когда мне нужно выдернуть / удалить их.

Но Python использует отступы для обозначения блоков кода.Я не могу найти лучшего способа.Есть идеи?

Ответы [ 4 ]

24 голосов
/ 31 декабря 2011

У меня еще не было особого повода использовать его, но vim-indent-object Майкла Смита звучит так, как будто это может быть близко к тому, что вы хотите.

Пример использования (номера строк показаны как set number active):

  1 This is
  2   some text
  3     with multiple
  4   levels of
  5   indentation.
  6 There is also
  7     another stanza.

Курсором в строке 2, 4 или 5 введите Vii, чтобы выбрать строки со 2 по 5.
Когда курсор находится в строке 3, введите Vai, чтобы выбрать строки со 2 по 3.
С курсором в строке 3 введите Vaiii (или Viiii), чтобы выбрать строки со 2 по 5 (в визуальном режиме многократное использование объектов отступа расширяет выбор до следующего уровня вверх / наружу).

Текстовые объекты, которые он определяет:

  • ai: текущий уровень отступа плюс строка выше
    полезно, когда вы хотите захватить вводную строку (например, захватить if и блок «затем»)
  • ii: текущий уровень отступа
  • aI: текущий уровень отступа плюс одна строка выше и одна строка ниже
    полезно для языков, в которых используются операторы «end»: if / endif).
  • iI: текущий уровень отступа (фактически, ii и iI одинаковы)

Объекты также можно использовать с другими командами, которые ожидают текстовые объекты (т. Е. cii для удаления текущего уровня отступа и начала вставки его замены).

6 голосов
/ 31 декабря 2011

Я просто нажал v для визуального режима, затем ( или ).Это приведет вас к следующей пустой строке.Это должно соответствовать вашим блокам кода, если вы правильно форматируете.

1 голос
/ 31 декабря 2011

Вы можете показать строки (: set nu), а затем перейти к строке, где начинается блок кода (: lineNumber), и восстановить их.

0 голосов
/ 07 апреля 2017

Для python обычно я использую "zM", чтобы сложить весь файл, а затем "2yy", чтобы восстановить всю функцию.

Если ваша функция находится внутри какого-то класса, вы можете использовать "zc" вместо "zM"

Вам нужно добавить следующую строку в ~ / .vimrc, чтобы заставить zM / zc работать:

autocmd FileType python set foldmethod=indent
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...