Время от времени мне приходится работать с кодом, который не соответствует уровню отступа, который я установил для 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