Відступ до наступного рівня відступу з >>


9

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

Якщо у вас також є filetype plugin indent onв вашому .vimrc, типу файлу (і плагін) відступу пов'язаних правила будуть застосовуватися. Тобто перевірити , що ваше tabstopзначення на насправді це ( set tabstop?буде робити, то ж саме для інших параметрів), при редагуванні, і змінити ці значення, додавши рядок в «після» файлу, що - щось на кшталт: stackoverflow.com/a/159066/5000478
VanLaser

3
>>і <<відповідно додайте та видаліть відступ, який не є тим, що потрібно. Те, що ви хочете, - це "форматування", яке робиться за допомогою ==.
romainl

може також відобразити карту, :nnoremap >> ^i<tab><esc>якщо ви дійсно хочете, щоб поведінка на вкладках було>>
Wolfie

@romainl ==підскочить на рівень лінії вище. Хоча добре знати, це не спрацювало б у всіх випадках, що мене цікавлять. Як додаток до питання, для чого я хочу, >>і <<відступати / відводити до наступного кратного пропускної здатності від кордону в цьому напрямку .
Думітру

2
Ні, ==використовує equalexprабо equalprgдля переформатування заданих рядків.
romainl

Відповіді:


12

При використанні однієї з команд {count}>>, {count}<<, >{motion}або <{motion}, на деяких лініях , які вже відступ, і ви хочете їх новий рівень відступу бути кратний вашої 'shiftwidth'вартість опціону, ви можете включити 'shiftround'опцію, і додайте цей рядок в файлі vimrc:

set shiftround

2

Якщо ви завжди хочете >>відступити до наступного стовпчика та <<видалити до останнього стовпчика, ви можете відновити їх так:

:nnoremap << ^i<BS><esc>
:nnoremap >> ^i<tab><esc>

Це перемістить курсор, але ви, ймовірно, зможете зробити певну хитрість, щоб повернути його назад. ^не залишає m'слід, але ви можете залишити його вручну всередині палітурки.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.