Od czasu do czasu muszę pracować z kodem, który nie jest wcięty do poziomu wcięcia, które mam Vim ustawione na (4 spacje na poziom), zwykle po skopiowaniu / wklejeniu czegoś w pliku. Zwykle robię to z <<
i >>
. Problem polega na tym, że nie przechodzą do następnego poziomu wcięcia, po prostu dodają lub odejmują 4 spacje.
Jeśli mam taki kod
if condition:
do this
do that
robi >>
na do that
spowoduje
if condition:
do this
do that
Chcę, żeby do tego doszło
if condition:
do this
do that
Oprócz łatwego dopasowania wcięcia powyższej linii chcę, aby przeskoczyła na następny poziom wcięcia, nie dodając 4 spacji.
Właśnie to mam w moim .vimrc odnośnie wcięcia
:set tabstop=4 shiftwidth=4 expandtab
indentation
Dumitru
źródło
źródło
filetype plugin indent on
swoje.vimrc
, zastosowanie będą miały reguły dotyczące wcięć typu pliku (i wtyczki). Czyli sprawdzić, co siętabstop
wartość faktycznie jest (set tabstop?
zrobi; samo dla innych ustawień), podczas edycji i zmienić te wartości, dodając wiersz za „po” pliku, coś jak: stackoverflow.com/a/159066/5000478>>
i<<
odpowiednio dodaj i usuń wcięcie, które nie jest tym, czego chcesz. To, czego chcesz, to „formatowanie”, które odbywa się za pomocą==
.:nnoremap >> ^i<tab><esc>
jeśli naprawdę chcesz zachować tabulatory>>
==
przejdzie do poziomu wyżej linii. Chociaż dobrze, aby wiedzieć, że nie będzie działać we wszystkich przypadkach Jestem zainteresowany. Jako dodatek na pytanie, co ja chcę to>>
i<<
wcięcia / dedent aż do następnej wielokrotności shiftwidth od granicy w tym kierunku .==
używa alboequalexpr
alboequalprg
do sformatowania podanych linii.Odpowiedzi:
Podczas korzystania z jednego z poleceń
{count}>>
,{count}<<
,>{motion}
lub<{motion}
, na niektórych liniach, które zostały już wcięta, a chcesz ich nowy poziom wcięcia być wielokrotnością swojej'shiftwidth'
wartości opcji, można włączyć'shiftround'
opcję i dodać ten wiersz wvimrc
:źródło
Jeśli zawsze chcesz
>>
wciąć do następnego tabstop i<<
usunąć do ostatniego tabstop, możesz je ponownie powiązać w następujący sposób:Spowoduje to przesunięcie kursora, ale prawdopodobnie możesz zrobić sztuczkę polegającą na zaznaczeniu, aby cofnąć go.
^
nie pozostawiam'
śladu, ale możesz zostawić je ręcznie wewnątrz wiązania.źródło