Я могу использовать vi{
и va{
для выбора блоков кода С++. Это помогает мне много, когда мне нужно выдернуть/удалить их.
Но Python использует отступы для указания блоков кода. Я не могу найти лучшего способа. Любые идеи?
Я могу использовать vi{
и va{
для выбора блоков кода С++. Это помогает мне много, когда мне нужно выдернуть/удалить их.
Но Python использует отступы для указания блоков кода. Я не могу найти лучшего способа. Любые идеи?
У меня не было большого количества возможностей использовать его еще, но Michael Smiths 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
: текущий уровень отступов плюс одна строка выше и одна строка ниже if
/endif
).ii
: текущий уровень отступа (фактически, ii
и ii
совпадают)Объекты также могут использоваться с другими командами, которые ожидают, что текстовые объекты (т.е. cii
удаляют текущий уровень отступа и начинают вставлять его замену).
Я просто нажал v
для визуального режима, затем (
или )
. Это приведет вас к следующей пустой строке. Это должно соответствовать вашим блокам кода, если вы хорошо форматируете.
Вы можете показать строки (: set nu), а затем перейти к строке, где начинается блок кода (: lineNumber), и вытащить их.
Для python обычно я использую "zM", чтобы свернуть весь файл, а затем "2yy", чтобы вырвать всю функцию.
Если ваша функция находится внутри некоторого класса, вы можете использовать "zc" вместо "zM"
Вам нужно добавить следующую строку в ~/.vimrc, чтобы заставить zM/zc работать:
autocmd FileType python set foldmethod=indent