В моих настройках 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'])
Есть ли способ добраться до последней или даже предпоследней упаковки после добавления «арбуза» без необходимости вручную перемещать вещи ?
По сути, это решит функция, которая «разворачивает и заново оборачивает» мой код.