Полностью заново обернуть в PyCharm / удалить ненужное обертывание - PullRequest
1 голос
/ 05 августа 2020

В моих настройках PyCharm включен параметр «Перенос при вводе текста», который отлично работает, если я набираю новую строку, но кажется довольно беспорядочным при редактировании уже обернутого кода, поскольку он сохраняет существующие разрывы строк, даже если они

Я также использую Ctrl-Alt-L для автоматического форматирования моего кода, но это также не удаляет ненужные разрывы строк.

Пример: скажем, я изначально написал этот код на one go, без ручного переноса строк, тогда PyCharm "Wrap on typing" оборачивает его следующим образом:

def main():
    x = some_long_function_call(['apple', 'banana', 'orange', 'pear', 
                                 'lemon', 'grapefruit', 'pineapple', 'grape',
                                 'plum', 'apricot'])

PyCharm красиво обернул это, но допустим, я хочу добавить 'арбуз' перед 'лимоном ', PyCharm решает, что строка 2 слишком длинная, и оборачивает ее следующим образом:

def main():
    x = some_long_function_call(['apple', 'banana', 'orange', 'pear', 
                                 'watermelon',
                                 'lemon', 'grapefruit', 'pineapple', 'grape',
                                 'plum', 'apricot'])

Это не оптимально, и нажатие Ctrl-Alt-L тоже не исправляет. Теперь я перемещаю материал из строки 3 в строку 2 и позволяю PyCharm перекомпилировать, и я получаю:

def main():
    x = some_long_function_call(['apple', 'banana', 'orange', 'pear', 
                                 'watermelon', 'lemon', 'grapefruit', 
                                 'pineapple', 'grape',
                                 'plum', 'apricot'])

Лучше, но еще есть место. Мне нужно вручную переместить «абрикос» до строки 4, чтобы получить лучшую упаковку:

def main():
    x = some_long_function_call(['apple', 'banana', 'orange', 'pear',
                                 'watermelon', 'lemon', 'grapefruit',
                                 'pineapple', 'grape', 'plum', 'apricot'])

Теперь, если я перенесу все в одну длинную строку и разрешаю PyCharm перевернуть ее, нажав Ctrl + Alt + L, я получаю, пожалуй, даже лучшую упаковку:

def main():
    x = some_long_function_call(
        ['apple', 'banana', 'orange', 'pear', 'watermelon', 'lemon',
         'grapefruit', 'pineapple', 'grape', 'plum', 'apricot'])

Есть ли способ добраться до последней или даже предпоследней упаковки после добавления «арбуза» без необходимости вручную перемещать вещи ?

По сути, это решит функция, которая «разворачивает и заново оборачивает» мой код.

1 Ответ

0 голосов
/ 06 августа 2020

Обнаружено, что это параметр в PyCharm в разделе:

Настройки -> Редактор -> Python -> Сохранять при переформатировании -> Разрывы строк

Если я сниму этот флажок, Ctrl + Shift + L полностью перематывает текст.

...