Час від часу мені доводиться працювати з кодом, який не відрізаний рівнем відступу, у мене встановлено Vim (4 пробіли на рівні), як правило, після копіювання / вставлення чогось у файл. Я зазвичай роблю з <<і >>. Проблема полягає в тому, що вони не переходять до наступного рівня відступу, вони просто додають або віднімають 4 пробіли.
Якщо у мене є такий код
if condition:
do this
do that
робити >>по do thatпризведе
if condition:
do this
do that
Я хочу, щоб це йшло до цього
if condition:
do this
do that
Крім того, щоб легко відповідати відступі рядка вище, я хочу, щоб він перейшов до наступного рівня відступу, а не додав 4 пробіли.
Це те, що я маю у своєму .vimrc щодо відступу
:set tabstop=4 shiftwidth=4 expandtab
>>і <<відповідно додайте та видаліть відступ, який не є тим, що потрібно. Те, що ви хочете, - це "форматування", яке робиться за допомогою ==.
:nnoremap >> ^i<tab><esc>якщо ви дійсно хочете, щоб поведінка на вкладках було>>
==підскочить на рівень лінії вище. Хоча добре знати, це не спрацювало б у всіх випадках, що мене цікавлять. Як додаток до питання, для чого я хочу, >>і <<відступати / відводити до наступного кратного пропускної здатності від кордону в цьому напрямку .
==використовує equalexprабо equalprgдля переформатування заданих рядків.
filetype plugin indent onв вашому.vimrc, типу файлу (і плагін) відступу пов'язаних правила будуть застосовуватися. Тобто перевірити , що вашеtabstopзначення на насправді це (set tabstop?буде робити, то ж саме для інших параметрів), при редагуванні, і змінити ці значення, додавши рядок в «після» файлу, що - щось на кшталт: stackoverflow.com/a/159066/5000478