Час від часу мені доводиться працювати з кодом, який не відрізаний рівнем відступу, у мене встановлено 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